Eirbot1A-2020
protocole.hpp
Aller à la documentation de ce fichier.
1 #ifndef __PROTOCOLE_H_
2 #define __PROTOCOLE_H_
3 
4 #include <termios.h>
5 #include <string>
6 #include "asserv.hpp"
7 
8 #define READ_BUF_SIZE 32
9 
20 class Protocole
21 {
22  public:
29  Protocole(std::string device);
30  ~Protocole();
31 
32  //ERROR c'est grave, si ça arrive c'est la merde
33  //-> réception de données erronées
43  enum class Etat {OK, TIME_OUT, OBSTACLE, ERROR};
44 
45  // ################# SET ###################
46 
47  /*
48  * set_position
49  * entrees:
50  * x et y en cm position absolue
51  * etats tableaux de char TODO: definir signification ou enum
52  * timeout en s
53  * sortie:
54  * Etat OK, TIME_OUT, OBSTACLE ou ERROR
55  */
56 
64  enum Etat set_position(short x, short y, char etats[3], int timeout);
65 
66  /*
67  * set_detection_GP2
68  * entrees:
69  * actif '1' = actif et '0' = desactive, /!\ caractère '1', pas 1
70  * sortie:
71  * Etat OK, TIME_OUT, ou ERROR
72  */
78  enum Etat set_detection_GP2(char actif);
79 
80  /*
81  * set_angle
82  * entrees:
83  * angle entre 0 et 360 deg
84  * sortie:
85  * Etat OK, TIME_OUT, ou ERROR
86  */
91  enum Etat set_angle(short angle);
92 
93  /*
94  * set_actionneur
95  * entrees:
96  * id : identifiant : 0 bras, 1 pavillon
97  * on: 0 off, 1 on
98  * sortie:
99  * Etat OK, TIME_OUT, ou ERROR */
105  enum Etat set_actionneur(char id, char on);
106 
107  // ################# GET ###################
108  /*
109  * get_*
110  * entrees:
111  * pointeur vers la valeur à maj
112  * sortie:
113  * Etat OK, TIME_OUT, ou ERROR
114  */
120  enum Etat get_angle(short *angle);
126  enum Etat get_position(struct position *pos);
132  enum Etat get_etats_GP2(char etats[3]);
136  void print_buffer(char* buf); //debug
137 
138  private:
139  int serial_port;
140  void update_buffer();
141  struct termios tty;
142  char writeBuffer[64];
143  char readBuffer[READ_BUF_SIZE];
144  short GP2_etats[6];
145 
146  void send(const char *command, ...);
147  int update_buffer(int timeout);
148  void flush_buffer();
149  void parse();
150 };
151 
152 #endif // __PROTOCOLE_H_
Protocole::set_detection_GP2
enum Etat set_detection_GP2(char actif)
Permet de demander l'activation où la désactivation des GP2.
Definition: protocole.cpp:203
protocole.hpp
Fichier central du projet, permet de faire la communication entre la raspberry et la nucléo,...
Protocole::Etat
Etat
Permet de transmettre à la rasp les possibles erreurs du protocole.
Definition: protocole.hpp:43
Protocole::set_actionneur
enum Etat set_actionneur(char id, char on)
Permet de demander le déploiement d'un actionneur.
Definition: protocole.cpp:247
Protocole
Contient toutes les méthodes permettant d'utiliser le protocole côté nucléo.
Definition: Protocole_nucleo.hpp:26
Protocole::get_etats_GP2
enum Etat get_etats_GP2(char etats[3])
Permet de demander l'état des GP2.
Definition: protocole.cpp:161
Protocole::set_angle
enum Etat set_angle(short angle)
Permet de demander une rotation du robot.
Definition: protocole.cpp:184
Protocole::set_position
enum Etat set_position(short x, short y, char etats[3], int timeout)
Permet de demander un changement de position à l'asservissement.
Definition: protocole.cpp:221
Protocole::get_position
enum Etat get_position(struct position *pos)
Permet de demander la valeur de la position.
Definition: protocole.cpp:128
angle
short angle()
Permet de demander l'information sur l'angle du robot par rapport à la table.
Definition: asserv.cpp:52
asserv.hpp
Fichier d'interface avec l'asservissement, permet d'utiliser le protocole de communication pour deman...
Protocole::get_angle
enum Etat get_angle(short *angle)
Permet de demander la valeur de l'angle.
Definition: protocole.cpp:144
Protocole::print_buffer
void print_buffer(char *buf)
Fonction permettant d'afficher le buffer à fin de debug.
Definition: protocole.cpp:116
position
Simple structure permettant de définir une position.
Definition: asserv.hpp:31