Statistics
| Branch: | Tag: | Revision:

amiro-os / include / amiro / ControllerAreaNetworkRx.h @ 81b48c66

History | View | Annotate | Download (1.625 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 b4885314 Thomas Schöpping
    int32_t getMagnetometerValue(int axis);
24
    int16_t getGyroscopeValue(int axis);
25 58fe0e0b Thomas Schöpping
26
    void calibrateProximityRingValues();
27
    void calibrateProximityFloorValues();
28
29
    int rxCmdShell(CANRxFrame *frame);
30
31
  protected:
32
    virtual msg_t main();
33
    virtual msg_t receiveMessage(CANRxFrame *frame);
34
35
    int decodeBoardId(CANRxFrame *frame);
36
    int decodeDeviceId(CANRxFrame *frame);
37
    int decodeIndexId(CANRxFrame *frame);
38
39
    int boardId;
40
    uint16_t proximityRingValue[8];
41
    int actualSpeed[2];
42
    uint16_t proximityFloorValue[4];
43 b4885314 Thomas Schöpping
    int32_t magnetometerValue[3];
44
    int16_t gyroscopeValue[3];
45 58fe0e0b Thomas Schöpping
    types::position robotPosition;
46
    types::power_status powerStatus;
47
    uint8_t robotId;
48
    chibios_rt::EvtListener rxFullCanEvtListener;
49
    chibios_rt::EvtSource *rxFullCanEvtSource;
50
51
  private:
52
    msg_t receiveSensorVal(CANRxFrame *frame);
53
54
    CANDriver *canDriver;
55
    CANConfig canConfig;
56
57
  };
58
59
}
60
61
#endif /* AMIRO_CONTROLLER_AREA_NETWORK_RX_H_ */