summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/motor/motor.h
diff options
context:
space:
mode:
Diffstat (limited to '2003/i/buzz/src/motor/motor.h')
-rw-r--r--2003/i/buzz/src/motor/motor.h60
1 files changed, 58 insertions, 2 deletions
diff --git a/2003/i/buzz/src/motor/motor.h b/2003/i/buzz/src/motor/motor.h
index 330ce88..a51b140 100644
--- a/2003/i/buzz/src/motor/motor.h
+++ b/2003/i/buzz/src/motor/motor.h
@@ -15,21 +15,77 @@ class Motor
// Paramètre vitesse/acceleration.
int m_accel, m_speed;
int m_raccel, m_rspeed;
+ int m_inf_accel, m_inf_speed;
+ int m_inf_raccel, m_inf_rspeed;
+ // Paramètres géométriques.
+ int m_ed2;
+ double m_factor, m_rfactor;
// Operations en cours.
- bool running;
+ bool m_running;
+ char m_last_com;
+ int m_last_a1, m_last_a2, m_last_a3;
+ // Calcul de position.
+ double m_x, m_y, m_dir;
+ // Capteurs.
+ char m_capteurs;
+ bool m_capteursFetch;
+ // Servo.
+ bool m_servoFinnish;
+ // Distance effectuée.
+ int m_doneG, m_doneD;
+ int m_doneGs, m_doneDs;
+ // Instance unique.
+ static Motor *m_instance;
public:
// Constructeur.
Motor (void);
// Destructeur.
~Motor (void);
+ // Change la position courante.
+ void setPos (double x, double y);
+ // Change la position courante.
+ void setPos (double x, double y, double dir);
+ // Récupère la position courante. TODO: valider avec une date.
+ void getPos (double &x, double &y, double &dir);
+ // Retourne une référence vers l'instance unique.
+ static Motor &getInstance (void) { return *m_instance; }
// Avance d'une distance d, à la vitesse s.
void goDistance (int d, int s = -1);
// Tourne d'un angle d, à la vitesse s.
void turnAngle (int d, int s = -1);
+ // Avance indéfiniment à la vitesse s.
+ void go (int s = 0);
+ // Avance indéfiniment à la vitesse sg et sd, respectivement pour le
+ // moteur gauche et droit.
+ void go (int sg, int sd);
+ // Tourne indéfiniment à la vitesse s.
+ void turn (int s = 0);
+ // Avance indéfiniment en tournant à la vitesse max s, de rayon r.
+ void goTurn (int s, int r);
+ // Stoppe.
+ void stop (void);
+ // Stop progressif.
+ void stopp (void);
+ // Reset.
+ void reset (void);
// Retourne true si la commande est terminée.
- bool finnish (void) { readMsg (); return !running; }
+ bool finnish (void) { readMsg (); return !m_running; }
// Traite les message entrants.
void readMsg (void);
+ // Traite l'information de bouclage.
+ void readTicks (int g, int d);
+ // Demande les infos capteurs.
+ void fetchCapteurs (void);
+ // Retourne les infos capteurs.
+ int getCapteurs (void);
+ // Gère les servos.
+ void setServo (int s);
+ // Attend le top départ.
+ void waitRound (void);
+ // Récupère la distance parcouru.
+ int getDone (void);
+ // Mémorise la distance parcourue pour le moment.
+ void setDone (void);
private:
// Envoie une commande.
void send (char com, int a1 = -1, int a2 = -1, int a3 = -1);