summaryrefslogtreecommitdiff
path: root/i/siroco
diff options
context:
space:
mode:
authorgalmes2004-01-25 16:27:25 +0000
committergalmes2004-01-25 16:27:25 +0000
commit922ad44dedc5e217bcf99cf98f9fb940f4774101 (patch)
treece1b4966cbbc6141ce04df79b33f5076fd0d31e4 /i/siroco
parenta8609189954e4708b0aec010e336a9994aee3a44 (diff)
Implémentation de la classe MessageAsservissementData
Diffstat (limited to 'i/siroco')
-rw-r--r--i/siroco/src/message_asservissement_data.cc67
-rw-r--r--i/siroco/src/message_asservissement_data.h25
-rw-r--r--i/siroco/src/message_asservissement_info.cc81
-rwxr-xr-xi/siroco/src/pg_test/Makefile9
-rw-r--r--i/siroco/src/pg_test/message_asservissement_data_test.cc52
5 files changed, 229 insertions, 5 deletions
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 <list>
+#include <iterator>
#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<Point> 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 <iostream>
+#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;
+
+
+}