From 449ff51e3db5d2292cecb938f68cfec322249b7a Mon Sep 17 00:00:00 2001 From: haller Date: Mon, 15 May 2006 21:45:09 +0000 Subject: * Importation de la classe es * Dégraissage au lance-flamme de es * création d'un test_es * Ajout du Makefile.defs pour es * Ajout du répertoires es dans src/Makefile.defs * Modif de Makefile.defs de proto parce que les OBJECTS sentaient pas bons * Passage de Config de Tester en protected pour que les classes à tester puissent la manger --- i/marvin/src/Makefile.defs | 2 +- i/marvin/src/es/Makefile.defs | 5 +++ i/marvin/src/es/es.cc | 68 ++++++++++++++++++++++++++++++++++++++++ i/marvin/src/es/es.hh | 63 +++++++++++++++++++++++++++++++++++++ i/marvin/src/es/test_es.cc | 58 ++++++++++++++++++++++++++++++++++ i/marvin/src/proto/Makefile.defs | 5 ++- i/marvin/src/tester/tester.cc | 4 +-- i/marvin/src/tester/tester.hh | 5 +-- 8 files changed, 202 insertions(+), 8 deletions(-) create mode 100644 i/marvin/src/es/Makefile.defs create mode 100644 i/marvin/src/es/es.cc create mode 100644 i/marvin/src/es/es.hh create mode 100644 i/marvin/src/es/test_es.cc (limited to 'i/marvin') diff --git a/i/marvin/src/Makefile.defs b/i/marvin/src/Makefile.defs index a811e44..077f133 100644 --- a/i/marvin/src/Makefile.defs +++ b/i/marvin/src/Makefile.defs @@ -24,7 +24,7 @@ SUBDIRS = utils utils/meta \ interpreter config tester \ log serial timer \ data scheduler \ - proto asserv \ + proto asserv es \ motor socket # Répertoire où placer les objets. diff --git a/i/marvin/src/es/Makefile.defs b/i/marvin/src/es/Makefile.defs new file mode 100644 index 0000000..66a4e6f --- /dev/null +++ b/i/marvin/src/es/Makefile.defs @@ -0,0 +1,5 @@ +PROGRAMS += test_es + +es_OBJECTS = es.o + +test_es_OBJECTS = test_es.o $(es_OBJECTS) $(tester_OBJECTS) $(proto_OBJECTS) diff --git a/i/marvin/src/es/es.cc b/i/marvin/src/es/es.cc new file mode 100644 index 0000000..4b561cf --- /dev/null +++ b/i/marvin/src/es/es.cc @@ -0,0 +1,68 @@ +// es.cc +// robert - programme du robot 2005 {{{ +// +// Copyright (C) 2005 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "es/es.hh" +#include "config/config.hh" + +/// Constructeur +Es::Es (const Config & config) + :proto_(*this), log_("Es") +{ + // Récupération des valeurs de configuration dans le fichier + loadConfig(config); + proto_.open(tty_); +} + +void Es::init(void) +{ + // On reset l'AVR + proto_.send('z'); +} + +bool +Es::wait(int timeout /*-1*/) +{ + return proto_.wait(timeout); +} + +/// Récupère le File Descriptor +int Es::getFd(void) +{ + return proto_.getFd(); +} + +void Es::loadConfig(const Config & config) +{ + tty_ = config.get("es.tty"); +} + +void Es::receive(char command, const Proto::Frame & frame) +{ +} + +bool Es::sync(void) +{ + return proto_.sync(); +} diff --git a/i/marvin/src/es/es.hh b/i/marvin/src/es/es.hh new file mode 100644 index 0000000..b4bf5b3 --- /dev/null +++ b/i/marvin/src/es/es.hh @@ -0,0 +1,63 @@ +#ifndef es_hh +#define es_hh +// es.hh +// robert - programme du robot 2005 {{{ +// +// Copyright (C) 2005 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "proto/proto.hh" + +#include + +class Config; + +/// Gère la carte es et ses capteurs et actionneurs +class Es : public Proto::Receiver +{ + private: + // Objet Proto de communication vers la carte es + Proto proto_; + // le tty est ... + std::string tty_; + /// Système de log + Log log_; + + public: + /// Constructeur + Es (const Config & config); + /// Initialise les capteurs et actionneurs + void init(void); + /// On attend ... + bool wait(int timeout = -1); + /// Récupère le File Descriptor + int getFd(void); + /// définition du receiver::receive + void receive(char command, const Proto::Frame & frame); + /// sync.. + bool sync(void); + private: + /// Charge les paramètre du fichier de config + void loadConfig(const Config & config); +}; + +#endif // es_hh diff --git a/i/marvin/src/es/test_es.cc b/i/marvin/src/es/test_es.cc new file mode 100644 index 0000000..be60620 --- /dev/null +++ b/i/marvin/src/es/test_es.cc @@ -0,0 +1,58 @@ +// test_es.cc +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Haller +// +// Robot APB Team/Efrei 2006. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "tester/tester.hh" +#include "es/es.hh" + +class TestEs : public Tester +{ + private: + Es es_; + public: + // Constructor + TestEs (int argc, char ** argv) + : Tester (argc, argv), es_(config_) { } + void preRun (void) + { + Interpreter &interpreter = getInterpreter (); + // Add functions. + interpreter.add ("z", Interpreter::memFunc ( es_, &Es::init ), "Fonction reset ()"); + interpreter.add ("w", Interpreter::memFunc ( es_, &Es::wait ), "Fonction wait ()"); + } +}; + + int +main (int argc, char **argv) +{ + try + { + TestEs te (argc, argv); + te.run (); + } + catch (const std::exception &e) + { + std::cerr << e.what () << std::endl; + } +} diff --git a/i/marvin/src/proto/Makefile.defs b/i/marvin/src/proto/Makefile.defs index ffad4dc..1b13568 100644 --- a/i/marvin/src/proto/Makefile.defs +++ b/i/marvin/src/proto/Makefile.defs @@ -1,6 +1,5 @@ PROGRAMS += test_proto -proto_OBJECTS = proto.o +proto_OBJECTS = proto.o $(serial_OBJECTS) $(log_OBJECTS) $(utils_OBJECTS) $(timer_OBJECTS) -test_proto_OBJECTS = test_proto.o $(proto_OBJECTS) $(utils_OBJECTS) \ - $(serial_OBJECTS) $(timer_OBJECTS) $(log_OBJECTS) +test_proto_OBJECTS = test_proto.o $(proto_OBJECTS) diff --git a/i/marvin/src/tester/tester.cc b/i/marvin/src/tester/tester.cc index 2532f7b..61f577e 100644 --- a/i/marvin/src/tester/tester.cc +++ b/i/marvin/src/tester/tester.cc @@ -31,8 +31,8 @@ /// Constructor. Tester::Tester (int argc, char **argv, const std::string &description) - : config_ (argc, argv), program_(argv[0]), description_ (description), - showCmd_ (false) + : program_(argv[0]), description_ (description), + showCmd_ (false), config_ (argc, argv) { // Parse command line getOpt (argc, argv); diff --git a/i/marvin/src/tester/tester.hh b/i/marvin/src/tester/tester.hh index ef97287..b9aa312 100644 --- a/i/marvin/src/tester/tester.hh +++ b/i/marvin/src/tester/tester.hh @@ -38,8 +38,6 @@ class Tester /// DataCircularBufferFactory for beeing destruct at the end of the program. /// Note : it must stay at the begining of the class ! DataCircularBufferFactory dbc; - /// The config. - Config config_; /// The interperter. Interpreter interpreter_; /// Program name. @@ -56,6 +54,9 @@ class Tester void listCmd (void) const; /// Show commands instead of run them. bool showCmd_; + protected: + /// The config. + Config config_; public: /// Constructor. Tester (int argc, char ** argv, const std::string &description = ""); -- cgit v1.2.3