First class data visualization and communication library with embedded devices. Code is maintained at github.com/Overdrivr/Telemetry
Dependents: telemetry_car_demo telemetry_demo_FRDM-TFC telemetry_example_01 telemetry_indexed_data_demo ... more
Diff: c_api/telemetry_utils.h
- Revision:
- 5:cd94bb58e096
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c_api/telemetry_utils.h Wed Mar 09 12:15:13 2016 +0000 @@ -0,0 +1,75 @@ +#ifndef TELEMETRY_UTILS_H_ +#define TELEMETRY_UTILS_H_ + +#include "stddef.h" +#include "stdint.h" +#include "string.h" + +// Forward declaration of user state +typedef struct TM_state TM_state; + +// Enumeration of supported message payloads +enum TM_type { + TM_float32 = 0, + TM_uint8 = 1, + TM_uint16 = 2, + TM_uint32 = 3, + TM_int8 = 4, + TM_int16 = 5, + TM_int32 = 6, + TM_string = 7 +}; + +typedef enum TM_type TM_type; + + +// Data structure for received messages +typedef struct TM_msg TM_msg; +struct TM_msg { + TM_type type; + char * topic; + void * buffer; + uint32_t size; +}; + +// Data structure for holding transport interface +typedef struct TM_transport TM_transport; +struct TM_transport { + int32_t (*read)(void * buf, uint32_t sizeToRead); + int32_t (*readable)(); + int32_t (*write)(void * buf, uint32_t sizeToWrite); + int32_t (*writeable)(); +}; + +// Decodes TM_msg buffer and emplaces its value into dst +// Returns 1 (true) if decoding was successful +uint32_t emplace(TM_msg * m, char * buf, size_t bufSize); +uint32_t emplace_u8(TM_msg * m, uint8_t * dst); +uint32_t emplace_u16(TM_msg * m, uint16_t * dst); +uint32_t emplace_u32(TM_msg * m, uint32_t * dst); +uint32_t emplace_i8(TM_msg * m, int8_t * dst); +uint32_t emplace_i16(TM_msg * m, int16_t * dst); +uint32_t emplace_i32(TM_msg * m, int32_t * dst); +uint32_t emplace_f32(TM_msg * m, float * dst); + +// Returns 1 if topicToMatch matches m->topic +// 0 otherwise +uint32_t match(TM_msg * m, const char * topicToMatch); + +// Returns 1 if topicToMatch matches m->topic and typeToMatch matches m->type, +// 0 otherwise +uint32_t fullmatch(TM_msg * m, const char * topicToMatch, TM_type typeToMatch); + +// Decodes TM_msg buffer and update its value into dst if matching topic +// Returns 1 (true) if decoding was successful +uint32_t update(TM_msg * msg, const char *topic, char *var, size_t bufSize); +uint32_t update_u8(TM_msg * msg, const char *topic, uint8_t *var); +uint32_t update_u16(TM_msg * msg, const char *topic, uint16_t *var); +uint32_t update_u32(TM_msg * msg, const char *topic, uint32_t *var); +uint32_t update_i8(TM_msg * msg, const char *topic, int8_t *var); +uint32_t update_i16(TM_msg * msg, const char *topic, int16_t *var); +uint32_t update_i32(TM_msg * msg, const char *topic, int32_t *var); +uint32_t update_f32(TM_msg * msg, const char *topic, float *var); + + +#endif