Eirbot1A-2020
Protocole_nucleo.hpp
Aller à la documentation de ce fichier.
1 #ifndef __PROTOCOLE_H_
2 #define __PROTOCOLE_H_
3 
4 #include "mbed.h"
5 #include "asserv.hpp"
6 #include "asserv_vitesse_angle.hpp"
7 
8 //temps en seconde avant que la requete expire
9 #define PROTO_TIMEOUT_DIST 20
10 #define PROTO_TIMEOUT_ROT 20
11 
12 
18 enum protocol_state {INIT, WAIT_ORDER, WAIT_ASSERV};
19 enum order {PO, RO, OTHER};
20 
21 
25 class Protocole
26 {
27  public:
28  Protocole();
29  ~Protocole();
30 
31  //robot variables
32  short x;
33  short y;
34  short angle;
35  char GP2_on;
36  char GP2_etats[3];
37  char actionneur_id;
38  char actionneur_etat;
39 
40  //void poll();
41  void update_state();
42  void act();
43  void print_dbg();
44 
45  private:
46  enum protocol_state state;
47  enum order last_order;
48  char readBuffer[32];
49  int buf_index = 0;
50  //flags
51  bool order_ready_flag = false;
52  bool timeout_flag = false;
53  bool obstacle_flag = false;
54  bool GP2_enable = false;
55 
56  RawSerial *_serial;
57  RawSerial *debug_serial;
58  void enable_callback(bool enable);
59  void set_timeout_flag();
60  void parse();
61  void readByte();
62 };
63 
64 
65 #endif // __PROTOCOLE_H_
Protocole
Contient toutes les méthodes permettant d'utiliser le protocole côté nucléo.
Definition: Protocole_nucleo.hpp:26
activate_pavillon
void activate_pavillon()
Sort le pavillon.
Definition: actionneur_nucleo.cpp:38
rotate
void rotate(short angle)
Permet d'ordonner la rotation du robot.
Definition: asserv.cpp:30
actionneur_nucleo.hpp
Contient les fonctions permettant d'activer ou désactiver les actionneurs.
Protocole_nucleo.hpp
Fichier principal du projet permet de communiquer entre la raspberry et la nucléo....
Protocole::get_angle
enum Etat get_angle(short *angle)
Permet de demander la valeur de l'angle.
Definition: protocole.cpp:144