muCom
1.0
The reliable, fast and easy way to exchange binary data via UART
|
20 #define MUCOM_ERR_TIMEOUT -2
21 #define MUCOM_ERR_COMM -3
24 #define MUCOM_DEFAULT_TIMEOUT 100
27 #define MUCOM_HEADER_BIT_MASK 0x80
28 #define MUCOM_FRAME_DESC_MASK 0x60
29 #define MUCOM_DATA_BYTE_CNT_MASK 0x1C
30 #define MUCOM_READ_RESPONSE 0x00
31 #define MUCOM_READ_REQUEST 0x20
32 #define MUCOM_WRITE_REQUEST 0x40
33 #define MUCOM_EXECUTE_REQUEST 0x60
39 typedef void (*muComFunc)(uint8_t *data, uint8_t cnt);
60 uint8_t _linked_var_num;
61 muComFunc *_linked_func;
62 uint8_t _linked_func_num;
66 int16_t _lastCommTime;
69 void writeRaw(uint8_t frameDesc, uint8_t index, uint8_t *data, uint8_t cnt);
72 virtual void _write(uint8_t* data, uint8_t cnt) = 0;
75 virtual uint8_t _read(
void) = 0;
78 virtual uint8_t _available(
void) = 0;
81 virtual void _flushTx(
void) = 0;
84 virtual int16_t _getTimestamp(
void) = 0;
93 muComBase(uint8_t num_var, uint8_t num_func);
107 {
return (this->_getTimestamp() - this->_lastCommTime); }
141 int8_t
linkVariable(uint8_t index, uint8_t *var, uint8_t size);
144 { this->
linkVariable(index, (uint8_t*)var,
sizeof(uint8_t)); }
147 { this->
linkVariable(index, (uint8_t*)var,
sizeof(int8_t)); }
150 { this->
linkVariable(index, (uint8_t*)var,
sizeof(uint16_t)); }
153 { this->
linkVariable(index, (uint8_t*)var,
sizeof(int16_t)); }
156 { this->
linkVariable(index, (uint8_t*)var,
sizeof(uint32_t)); }
159 { this->
linkVariable(index, (uint8_t*)var,
sizeof(int32_t)); }
162 { this->
linkVariable(index, (uint8_t*)var,
sizeof(uint64_t)); }
165 { this->
linkVariable(index, (uint8_t*)var,
sizeof(int64_t)); }
168 { this->
linkVariable(index, (uint8_t*)var,
sizeof(
float)); }
178 { this->writeRaw(MUCOM_EXECUTE_REQUEST, index, data, cnt); }
186 { uint8_t dummy; this->writeRaw(MUCOM_EXECUTE_REQUEST, index, &dummy, 1); }
195 inline void write(uint8_t index, uint8_t *data, uint8_t cnt)
196 { this->writeRaw(MUCOM_WRITE_REQUEST, index, data, cnt); }
204 { this->
write(index, (uint8_t*)&data,
sizeof(uint8_t)); }
212 { this->
write(index, (uint8_t*)&data,
sizeof(uint16_t)); }
220 { this->
write(index, (uint8_t*)&data,
sizeof(uint32_t)); }
228 { this->
write(index, (uint8_t*)&data,
sizeof(uint64_t)); }
236 { this->
write(index, (uint8_t*)&data,
sizeof(
float)); }
245 int8_t
read(uint8_t index, uint8_t *data, uint8_t cnt);
253 inline int8_t
readByte(uint8_t index, uint8_t *data)
254 {
return this->
read(index, (uint8_t*)data,
sizeof(uint8_t)); }
256 inline int8_t
readByte(uint8_t index, int8_t *data)
257 {
return this->
read(index, (uint8_t*)data,
sizeof(int8_t)); }
266 {
return this->
read(index, (uint8_t*)data,
sizeof(uint16_t)); }
268 inline int8_t
readShort(uint8_t index, int16_t *data)
269 {
return this->
read(index, (uint8_t*)data,
sizeof(int16_t)); }
277 inline int8_t
readLong(uint8_t index, uint32_t *data)
278 {
return this->
read(index, (uint8_t*)data,
sizeof(uint32_t)); }
280 inline int8_t
readLong(uint8_t index, int32_t *data)
281 {
return this->
read(index, (uint8_t*)data,
sizeof(int32_t)); }
290 {
return this->
read(index, (uint8_t*)data,
sizeof(uint64_t)); }
292 inline int8_t
readLongLong(uint8_t index, int64_t *data)
293 {
return this->
read(index, (uint8_t*)data,
sizeof(int64_t)); }
302 {
return this->
read(index, (uint8_t*)data,
sizeof(
float)); }
int16_t getLastCommTime(void)
Get timestamp of last successful communication.
Definition: muComBase.h:106
~muComBase(void)
Destructor of the base class.
Definition: muComBase.cpp:66
void invokeFunction(uint8_t index)
Invoke a function at the communication partner.
Definition: muComBase.h:185
void writeShort(uint8_t index, uint16_t data)
Write a short (16 bit) to the communication partner.
Definition: muComBase.h:211
void write(uint8_t index, uint8_t *data, uint8_t cnt)
Write a data array to a remote variable.
Definition: muComBase.h:195
int8_t readLongLong(uint8_t index, uint64_t *data)
Read a long long from the communication partner.
Definition: muComBase.h:289
void invokeFunction(uint8_t index, uint8_t *data, uint8_t cnt)
Invoke a function at the communication partner.
Definition: muComBase.h:177
void writeByte(uint8_t index, uint8_t data)
Write a byte (8 bit) to the communication partner.
Definition: muComBase.h:203
int8_t readShort(uint8_t index, uint16_t *data)
Read a short from the communication partner.
Definition: muComBase.h:265
void writeLong(uint8_t index, uint32_t data)
Write a long (32 bit) to the communication partner.
Definition: muComBase.h:219
int8_t linkVariable(uint8_t index, uint8_t *var, uint8_t size)
Link a variable or a buffer to the muCom interface.
Definition: muComBase.cpp:216
int8_t readFloat(uint8_t index, float *data)
Read a float from the communication partner.
Definition: muComBase.h:301
uint8_t handle(void)
Handle the muCom interface.
Definition: muComBase.cpp:85
int8_t read(uint8_t index, uint8_t *data, uint8_t cnt)
Read data from the communication partner.
Definition: muComBase.cpp:268
void writeLongLong(uint8_t index, uint64_t data)
Write a long long (64 bit) to the communication partner.
Definition: muComBase.h:227
muComBase(uint8_t num_var, uint8_t num_func)
Constructor of the base class.
Definition: muComBase.cpp:47
void writeFloat(uint8_t index, float data)
Write a float to the communication partner.
Definition: muComBase.h:235
int8_t readByte(uint8_t index, uint8_t *data)
Read a byte from the communication partner.
Definition: muComBase.h:253
int8_t readLong(uint8_t index, uint32_t *data)
Read a long from the communication partner.
Definition: muComBase.h:277
Base muCom class.
Definition: muComBase.h:56
int8_t linkFunction(uint8_t index, muComFunc function)
Link function to the muCom interface.
Definition: muComBase.cpp:202
Internal structure to store references to linked variables.
Definition: muComBase.h:45
void setTimeout(int16_t timeout)
Set timeout for read requests.
Definition: muComBase.cpp:74