Flair
Framework Libre Air
Controller.h
1 // %flair:license{
2 // This file is part of the Flair framework distributed under the
3 // CECILL-C License, Version 1.0.
4 // %flair:license}
5 // created: 2015/05/27
6 // filename: Controller.h
7 //
8 // author: Gildas Bayard
9 // Copyright Heudiasyc UMR UTC/CNRS 7253
10 //
11 // version: $Id: $
12 //
13 // purpose: Utility classes for controllers
14 //
15 //
16 /*********************************************************************/
17 
18 #ifndef CONTROLLER_H
19 #define CONTROLLER_H
20 
21 #include <Object.h>
22 #include <string.h>
23 
24 namespace flair {
25 namespace core {
26 class Message;
27 }
28 }
29 
30 namespace flair {
31 namespace sensor {
32 
33 enum class ControllerAction { SetLedOn, SetLedOff, Rumble, FlashLed, Exit };
34 
35 class RumbleMessage : public core::Message {
36 public:
37  RumbleMessage(unsigned int leftForce, unsigned int leftTimeout,
38  unsigned int rightForce, unsigned int rightTimeout);
39  unsigned int GetLeftForce() const;
40  unsigned int GetLeftTimeout() const;
41  unsigned int GetRightForce() const;
42  unsigned int GetRightTimeout() const;
43  void SetLeftForce(unsigned int leftForce);
44  void SetLeftTimeout(unsigned int leftTimeout);
45  void SetRightForce(unsigned int rightForce);
46  void SetRightTimeout(unsigned int rightTimeout);
47 
48 private:
49  static const unsigned int leftForceOffset = sizeof(ControllerAction);
50  static const unsigned int leftTimeoutOffset =
51  sizeof(ControllerAction) + sizeof(unsigned int);
52  static const unsigned int rightForceOffset =
53  sizeof(ControllerAction) + 2 * sizeof(unsigned int);
54  static const unsigned int rightTimeoutOffset =
55  sizeof(ControllerAction) + 3 * sizeof(unsigned int);
56 };
57 
59 public:
60  SwitchLedMessage(bool isOn, unsigned int ledId);
61  bool IsOn() const;
62  unsigned int GetLedId() const;
63  void SetOn();
64  void SetOff();
65  void SetLedId(unsigned int ledId);
66 
67 private:
68  static const unsigned int isOnOffset = sizeof(ControllerAction);
69  static const unsigned int ledIdOffset =
70  sizeof(ControllerAction) + sizeof(bool);
71 };
72 
74 public:
75  FlashLedMessage(unsigned int ledId, unsigned int onTime,
76  unsigned int offTime);
77  unsigned int GetLedId() const;
78  unsigned int GetOnTime() const;
79  unsigned int GetOffTime() const;
80  void SetLedId(unsigned int ledId);
81  void SetOnTime(unsigned int onTime);
82  void SetOffTime(unsigned int offTime);
83 
84 private:
85  static const unsigned int ledIdOffset = sizeof(ControllerAction);
86  static const unsigned int onTimeOffset =
87  sizeof(ControllerAction) + sizeof(unsigned int);
88  static const unsigned int offTimeOffset =
89  sizeof(ControllerAction) + 2 * sizeof(unsigned int);
90 };
91 }
92 }
93 
94 #endif // CONTROLLER_H
namespace of the flair Framework
Definition: Ahrs.h:19
Definition: Controller.h:58
Base class for all Framework's classes.
Definition: Controller.h:73
Definition: Object.h:41
Definition: Controller.h:35