amiro-os / include / amiro / ControllerAreaNetworkRx.h @ 3f899f5d
History | View | Annotate | Download (1.479 KB)
1 | 58fe0e0b | Thomas Schöpping | #ifndef AMIRO_CONTROLLER_AREA_NETWORK_RX_H_
|
---|---|---|---|
2 | #define AMIRO_CONTROLLER_AREA_NETWORK_RX_H_
|
||
3 | |||
4 | #include <evtimer.h> |
||
5 | #include <amiro/Color.h> |
||
6 | #include <Types.h> // ::kinematic |
||
7 | |||
8 | #include <amiro/Constants.h> // CAN::* macros |
||
9 | |||
10 | namespace amiro { |
||
11 | |||
12 | class ControllerAreaNetworkRx : public chibios_rt::BaseStaticThread<128> {
|
||
13 | public:
|
||
14 | ControllerAreaNetworkRx(CANDriver *can, const uint8_t boardId);
|
||
15 | virtual ~ControllerAreaNetworkRx() = 0;
|
||
16 | |||
17 | uint16_t getProximityRingValue(int index);
|
||
18 | uint16_t getProximityFloorValue(int index);
|
||
19 | void getActualSpeed(types::kinematic &targetSpeed);
|
||
20 | types::position getOdometry(); |
||
21 | types::power_status& getPowerStatus(); |
||
22 | uint8_t getRobotID(); |
||
23 | |||
24 | void calibrateProximityRingValues();
|
||
25 | void calibrateProximityFloorValues();
|
||
26 | |||
27 | int rxCmdShell(CANRxFrame *frame);
|
||
28 | |||
29 | protected:
|
||
30 | virtual msg_t main(); |
||
31 | virtual msg_t receiveMessage(CANRxFrame *frame); |
||
32 | |||
33 | int decodeBoardId(CANRxFrame *frame);
|
||
34 | int decodeDeviceId(CANRxFrame *frame);
|
||
35 | int decodeIndexId(CANRxFrame *frame);
|
||
36 | |||
37 | int boardId;
|
||
38 | uint16_t proximityRingValue[8];
|
||
39 | int actualSpeed[2]; |
||
40 | uint16_t proximityFloorValue[4];
|
||
41 | types::position robotPosition; |
||
42 | types::power_status powerStatus; |
||
43 | uint8_t robotId; |
||
44 | chibios_rt::EvtListener rxFullCanEvtListener; |
||
45 | chibios_rt::EvtSource *rxFullCanEvtSource; |
||
46 | |||
47 | private:
|
||
48 | msg_t receiveSensorVal(CANRxFrame *frame); |
||
49 | |||
50 | CANDriver *canDriver; |
||
51 | CANConfig canConfig; |
||
52 | |||
53 | }; |
||
54 | |||
55 | } |
||
56 | |||
57 | #endif /* AMIRO_CONTROLLER_AREA_NETWORK_RX_H_ */ |