From ecedb2e9f7e3dd8070d0436eb042bdf113470a21 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goire=20Payen=20de=20La=20Garanderie?=
 <gregoire.payendelagaranderie@telecom-bretagne.eu>
Date: Fri, 15 Apr 2011 02:40:16 +0200
Subject: [PATCH] Simplification du design de la classe Odometrie pour la
 simulation.

---
 stm32/include/odometrie.h   | 13 ++++++----
 stm32/include/simul/robot.h |  2 +-
 stm32/src/simul/robot.cpp   | 50 +++++++++++++++++--------------------
 3 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/stm32/include/odometrie.h b/stm32/include/odometrie.h
index ad5597bd..5d52e582 100755
--- a/stm32/include/odometrie.h
+++ b/stm32/include/odometrie.h
@@ -7,12 +7,15 @@
 #ifndef ROBOTHW
 class Odometrie
 {
+private:
+	class Robot* robot;
 public:
-	virtual PositionPlusAngle getPos()=0;
-	virtual void setPos(PositionPlusAngle p)=0;
-	virtual Angle getVitesseAngulaire()=0;
-	virtual Distance getVitesseLineaire()=0;
-	virtual void update() { };
+	Odometrie(Robot* robot);
+	PositionPlusAngle getPos();
+	void setPos(PositionPlusAngle p);
+	Angle getVitesseAngulaire();
+	Distance getVitesseLineaire();
+	void update() { };
 };
 #else
 
diff --git a/stm32/include/simul/robot.h b/stm32/include/simul/robot.h
index d02e09f2..5855d1fb 100644
--- a/stm32/include/simul/robot.h
+++ b/stm32/include/simul/robot.h
@@ -18,7 +18,7 @@ public:
 	PositionPlusAngle deriv;
 	boost::circular_buffer<PositionPlusAngle> olds;
 	class Asservissement* asservissement;
-	class OdoRobot* odometrie;
+	class Odometrie* odometrie;
 	class Strategie* strategie;
 	
 	b2Body* body;
diff --git a/stm32/src/simul/robot.cpp b/stm32/src/simul/robot.cpp
index 25a3a5e4..97262af5 100644
--- a/stm32/src/simul/robot.cpp
+++ b/stm32/src/simul/robot.cpp
@@ -8,37 +8,33 @@
 #include "strategie.h"
 #include <iostream>
 
-class OdoRobot : public Odometrie
+//Odometrie class implementation for the simulation
+//Yes, it's ugly ! it should not be in this file.
+//But in a separate file
+Odometrie::Odometrie(Robot* robot)
 {
-private:
-	Robot* robot;
-
-public:
-	OdoRobot(Robot* robot)
-	{
-		this->robot = robot;
-	}
+	this->robot = robot;
+}
 
-	PositionPlusAngle getPos()
-	{
-		return robot->pos;
-	}
+PositionPlusAngle Odometrie::getPos()
+{
+	return robot->pos;
+}
 
-	Distance getVitesseLineaire()
-	{
-		return robot->deriv.position.getNorme();
-	}
+Distance Odometrie::getVitesseLineaire()
+{
+	return robot->deriv.position.getNorme();
+}
 
-	Angle getVitesseAngulaire()
-	{
-		return robot->deriv.angle;
-	}
+Angle Odometrie::getVitesseAngulaire()
+{
+	return robot->deriv.angle;
+}
 
-	void setPos(PositionPlusAngle p)
-	{
-		robot->pos = p;
-	}
-};
+void Odometrie::setPos(PositionPlusAngle p)
+{
+	robot->pos = p;
+}
 
 
 Robot::Robot(b2World & world) : world(world), olds(10000)
@@ -50,7 +46,7 @@ Robot::Robot(b2World & world) : world(world), olds(10000)
 	joint = NULL;
 	level = 0;
 
-	odometrie = new OdoRobot(this);
+	odometrie = new Odometrie(this);
 	asservissement = new Asservissement(odometrie);
 	strategie = new Strategie(true, odometrie);
 	asservissement->strategie = strategie;
-- 
GitLab