MRMS
mrm-node.h
1 #pragma once
2 #include "Arduino.h"
3 #include <mrm-board.h>
4 
12 #define CAN_ID_NODE0_IN 0x170
13 #define CAN_ID_NODE0_OUT 0x171
14 #define CAN_ID_NODE1_IN 0x172
15 #define CAN_ID_NODE1_OUT 0x173
16 #define CAN_ID_NODE2_IN 0x174
17 #define CAN_ID_NODE2_OUT 0x175
18 #define CAN_ID_NODE3_IN 0x176
19 #define CAN_ID_NODE3_OUT 0x177
20 #define CAN_ID_NODE4_IN 0x178
21 #define CAN_ID_NODE4_OUT 0x179
22 #define CAN_ID_NODE5_IN 0x17A
23 #define CAN_ID_NODE5_OUT 0x17B
24 #define CAN_ID_NODE6_IN 0x17C
25 #define CAN_ID_NODE6_OUT 0x17D
26 #define CAN_ID_NODE7_IN 0x17E
27 #define CAN_ID_NODE7_OUT 0x17F
28 
29 #define MRM_NODE_ANALOG_COUNT 9
30 #define MRM_NODE_SWITCHES_COUNT 5
31 #define MRM_NODE_SERVO_COUNT 3
32 
33 //CANBus commands
34 #define COMMAND_NODE_SENDING_SENSORS_1_TO_3 0x04
35 #define COMMAND_NODE_SENDING_SENSORS_4_TO_6 0x05
36 #define COMMAND_NODE_SENDING_SENSORS_7_TO_9 0x06
37 #define COMMAND_NODE_SWITCH_ON 0x07
38 #define COMMAND_NODE_SERVO_SET 0x08
39 
40 
41 class Mrm_node : public SensorBoard
42 {
43  std::vector<uint16_t[MRM_NODE_ANALOG_COUNT]>* readings; // Analog readings of all sensors
44  std::vector<bool[MRM_NODE_SWITCHES_COUNT]>* switches;
45  std::vector<uint16_t[MRM_NODE_SERVO_COUNT]>* servoDegrees;// = { 0xFFFF, 0xFFFF, 0xFFFF };
46 
47 public:
48 
55  Mrm_node(Robot* robot = NULL, uint8_t maxNumberOfBoards = 2);
56 
57  ~Mrm_node();
58 
62  void add(char * deviceName = (char*)"");
63 
68  bool messageDecode(uint32_t canId, uint8_t data[8]);
69 
75  uint16_t reading(uint8_t receiverNumberInSensor, uint8_t sensorNumber = 0);
76 
79  void readingsPrint();
80 
83  void servoTest();
84 
90  void servoWrite(uint8_t servoNumber, uint16_t degrees, uint8_t deviceNumber = 0);
91 
97  bool switchRead (uint8_t switchNumber, uint8_t deviceNumber = 0);
98 
101  void test();
102 
103 };
104 
105 
Definition: mrm-node.h:42
void readingsPrint()
Definition: mrm-node.cpp:136
bool switchRead(uint8_t switchNumber, uint8_t deviceNumber=0)
Definition: mrm-node.cpp:190
void servoTest()
Definition: mrm-node.cpp:146
Mrm_node(Robot *robot=NULL, uint8_t maxNumberOfBoards=2)
Definition: mrm-node.cpp:10
bool messageDecode(uint32_t canId, uint8_t data[8])
Definition: mrm-node.cpp:76
void servoWrite(uint8_t servoNumber, uint16_t degrees, uint8_t deviceNumber=0)
Definition: mrm-node.cpp:169
void add(char *deviceName=(char *)"")
Definition: mrm-node.cpp:23
void test()
Definition: mrm-node.cpp:201
uint16_t reading(uint8_t receiverNumberInSensor, uint8_t sensorNumber=0)
Definition: mrm-node.cpp:126
Definition: mrm-robot.h:42
Definition: mrm-board.h:356