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 { namespace sensor { |
---|
31 | |
---|
32 | enum class ControllerAction { |
---|
33 | SetLedOn, |
---|
34 | SetLedOff, |
---|
35 | Rumble, |
---|
36 | FlashLed, |
---|
37 | Exit |
---|
38 | }; |
---|
39 | |
---|
40 | class RumbleMessage: public core::Message { |
---|
41 | public: |
---|
42 | RumbleMessage(unsigned int leftForce,unsigned int leftTimeout,unsigned int rightForce,unsigned int rightTimeout); |
---|
43 | unsigned int GetLeftForce() const; |
---|
44 | unsigned int GetLeftTimeout() const; |
---|
45 | unsigned int GetRightForce() const; |
---|
46 | unsigned int GetRightTimeout() const; |
---|
47 | void SetLeftForce(unsigned int leftForce); |
---|
48 | void SetLeftTimeout(unsigned int leftTimeout); |
---|
49 | void SetRightForce(unsigned int rightForce); |
---|
50 | void SetRightTimeout(unsigned int rightTimeout); |
---|
51 | private: |
---|
52 | static const unsigned int leftForceOffset=sizeof(ControllerAction); |
---|
53 | static const unsigned int leftTimeoutOffset=sizeof(ControllerAction)+sizeof(unsigned int); |
---|
54 | static const unsigned int rightForceOffset=sizeof(ControllerAction)+2*sizeof(unsigned int); |
---|
55 | static const unsigned int rightTimeoutOffset=sizeof(ControllerAction)+3*sizeof(unsigned int); |
---|
56 | }; |
---|
57 | |
---|
58 | class SwitchLedMessage: public core::Message { |
---|
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 | private: |
---|
67 | static const unsigned int isOnOffset=sizeof(ControllerAction); |
---|
68 | static const unsigned int ledIdOffset=sizeof(ControllerAction)+sizeof(bool); |
---|
69 | }; |
---|
70 | |
---|
71 | class FlashLedMessage: public core::Message { |
---|
72 | public: |
---|
73 | FlashLedMessage(unsigned int ledId,unsigned int onTime,unsigned int offTime); |
---|
74 | unsigned int GetLedId() const; |
---|
75 | unsigned int GetOnTime() const; |
---|
76 | unsigned int GetOffTime() const; |
---|
77 | void SetLedId(unsigned int ledId); |
---|
78 | void SetOnTime(unsigned int onTime); |
---|
79 | void SetOffTime(unsigned int offTime); |
---|
80 | private: |
---|
81 | static const unsigned int ledIdOffset=sizeof(ControllerAction); |
---|
82 | static const unsigned int onTimeOffset=sizeof(ControllerAction)+sizeof(unsigned int); |
---|
83 | static const unsigned int offTimeOffset=sizeof(ControllerAction)+2*sizeof(unsigned int); |
---|
84 | }; |
---|
85 | |
---|
86 | }} |
---|
87 | |
---|
88 | #endif // CONTROLLER_H |
---|