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/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 ++++++++++++++++++++++++++++++++++++ 4 files changed, 194 insertions(+) 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/src/es') 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; + } +} -- cgit v1.2.3