From 922ad44dedc5e217bcf99cf98f9fb940f4774101 Mon Sep 17 00:00:00 2001 From: galmes Date: Sun, 25 Jan 2004 16:27:25 +0000 Subject: Implémentation de la classe MessageAsservissementData --- i/siroco/src/message_asservissement_data.cc | 67 ++++++++++++++++++ i/siroco/src/message_asservissement_data.h | 25 +++++-- i/siroco/src/message_asservissement_info.cc | 81 ++++++++++++++++++++++ i/siroco/src/pg_test/Makefile | 9 +++ .../pg_test/message_asservissement_data_test.cc | 52 ++++++++++++++ 5 files changed, 229 insertions(+), 5 deletions(-) create mode 100644 i/siroco/src/message_asservissement_data.cc create mode 100644 i/siroco/src/message_asservissement_info.cc create mode 100644 i/siroco/src/pg_test/message_asservissement_data_test.cc (limited to 'i') diff --git a/i/siroco/src/message_asservissement_data.cc b/i/siroco/src/message_asservissement_data.cc new file mode 100644 index 0000000..15bff18 --- /dev/null +++ b/i/siroco/src/message_asservissement_data.cc @@ -0,0 +1,67 @@ +// message_asservissement_data.cc +// {{{ +// +// Copyright (C) 2004 Pierre-André Galmes +// +// Robot APB Team/Efrei 2004. +// 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 "message_asservissement_data.h" + +using namespace std; + +namespace Siroco +{ + +// Constructeur. +MessageAsservissementData::MessageAsservissementData (void) + : Message (Message::typeAsservissementData) +{ + +} + +// Récupère les iterators de début et de fin. +MessageAsservissementData::const_iterator +MessageAsservissementData::begin (void) const +{ + return pointList_.begin (); +} + +MessageAsservissementData::const_iterator +MessageAsservissementData::end (void) const +{ + return pointList_.end (); +} + +// Ajoute des points. +void +MessageAsservissementData::add (int c, int p, int m) +{ + Point pt (c, p, m); + pointList_.push_back (pt); +} + +// Optenir la taille de la liste. +int +MessageAsservissementData::size (void) +{ + return pointList_.size(); +} + +}; //namespace Siroco diff --git a/i/siroco/src/message_asservissement_data.h b/i/siroco/src/message_asservissement_data.h index 915fab2..885502a 100644 --- a/i/siroco/src/message_asservissement_data.h +++ b/i/siroco/src/message_asservissement_data.h @@ -24,6 +24,8 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // }}} +#include +#include #include "message.h" namespace Siroco @@ -31,25 +33,38 @@ namespace Siroco class MessageAsservissementData : public Message { + public: struct Point { int consign, pwm, measure; // Constructeur d'aisance (hey, hey !). - Point (int c, int p, int m); + Point (int c = 1, int p = 1, int m = 1) + { + consign = c; + pwm = p; + measure = m; + } + // BIG 3 + //Point (const Point pt); + // Point &operator= (Point pt) }; + typedef std::list pointList_type; - typedef pointList_type::iterator iterator; - typedef iterator const_iterator; + typedef pointList_type::const_iterator const_iterator; + typedef const_iterator iterator; + private: pointList_type pointList_; public: // Constructeur. MessageAsservissementData (void); // Récupère les iterators de début et de fin. - iterator begin (void) const; - iterator end (void) const; + const_iterator begin (void) const; + const_iterator end (void) const; // Ajoute des points. void add (int c, int p, int m); + // Optenir la taille de la liste. + int size (void); }; }; diff --git a/i/siroco/src/message_asservissement_info.cc b/i/siroco/src/message_asservissement_info.cc new file mode 100644 index 0000000..7e21588 --- /dev/null +++ b/i/siroco/src/message_asservissement_info.cc @@ -0,0 +1,81 @@ +// message_asservissement_info.cc +// {{{ +// +// Copyright (C) 2004 Pierre-André Galmes +// +// Robot APB Team/Efrei 2004. +// 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 "message_asservissement_info.h" + + +namespace Siroco +{ + +// Constructeur. +MessageAsservissementInfo :: MessageAsservissementInfo + (Type type, int p, int i, int d, int consignMin, + int pwmMin, int measureMin, int consignMax, int + pwmMax, int measureMax) + :Message (type) +{ + // Coefficient relatifs à l'asservissement + p_ = p; + i_ = i; + d_ = d; + + // valeurs Min et Max des paramètres c, p et m. + consignMin_ = consignMin; + consignMax_ = consignMax; + pwmMin_ = pwmMin; + pwmMax_ = pwmMax; + measureMin_ = measureMax; + measureMax_ = measureMax; +} + +// Destructeur. +MessageAsservissementInfo :: ~MessageAsservissementInfo (void) +{ +} + + +// Renvoyer les valeur de p_, i_ et d_. +void +MessageAsservissementInfo :: getPID (int &p, int &i, int &d) const +{ + p = p_; + i = i_; + d = d_; +} + +// +void +MessageAsservissementInfo :: getMinMax (int &consignMin, int &pwmMin, int + &measureMin, int &consignMax, int + &pwmMax, int &measureMax) const +{ + consignMin = consignMin_; + consignMax = consignMax_; + pwmMin = pwmMin_; + pwmMax = pwmMax_; + measureMin = measureMax_; + measureMax = measureMax_; +} + +}; // namespace Siroco diff --git a/i/siroco/src/pg_test/Makefile b/i/siroco/src/pg_test/Makefile index e9575fd..b81486d 100755 --- a/i/siroco/src/pg_test/Makefile +++ b/i/siroco/src/pg_test/Makefile @@ -9,6 +9,10 @@ TARGET_MAGI = message_asservissement_get_info_test OBJECTS_MAGI = message_asservissement_get_info_test.o \ ../message_asservissement_get_info.o ../message.o +TARGET_MAD = message_asservissement_data_test +OBJECTS_MAD = message_asservissement_data_test.o \ + ../message_asservissement_data.o ../message.o + # LIB = -lccgnu2 -ldl -pthread CFLAGS = -O2 -Wall -g @@ -30,6 +34,11 @@ magi: $(TARGET_MAGI) $(TARGET_MAGI): $(OBJECTS_MAGI) $(CC) $(CFLAGS) -o $@ $^ + +mad: $(TARGET_MAD) + +$(TARGET_MAD): $(OBJECTS_MAD) + $(CC) $(CFLAGS) -o $@ $^ #$(LIB) # $(TARGET_B): $(OBJECTS_B) diff --git a/i/siroco/src/pg_test/message_asservissement_data_test.cc b/i/siroco/src/pg_test/message_asservissement_data_test.cc new file mode 100644 index 0000000..49d5140 --- /dev/null +++ b/i/siroco/src/pg_test/message_asservissement_data_test.cc @@ -0,0 +1,52 @@ +// message_asservissement_data_test.cc +// {{{ +// +// Copyright (C) 2004 Pierre-André Galmes +// +// Robot APB Team/Efrei 2004. +// 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 +#include "../message_asservissement_data.h" + +using namespace std; +using namespace Siroco; + +int +main (void) +{ + Message::Type type = Message::typeAsservissementData; + MessageAsservissementData m; + MessageAsservissementData::iterator i; + + m.add (1, 0, 0); + m.add (0, 1, 0); + m.add (0, 0, 1); + + for (i = m.begin(); i != m.end(); i++) + { + cout << "c p m = " << i->consign << " " << i->pwm << " " << i->measure + << endl; + } + + cout << "size : " << m.size () << endl; + cout << "type du message : " << m.getType () << endl; + + +} -- cgit v1.2.3