Publishing for Biomimetics.
Dependencies: CRC MODDMA MODSERIAL MPU6050IMU PID QEI mbed-rtos mbed-src
Diff: protocol.h
- Revision:
- 0:8cfa73bb68e4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/protocol.h Tue May 31 17:04:59 2016 +0000 @@ -0,0 +1,68 @@ +#ifndef PROTOCOL_H +#define PROTOCOL_H + +#include <stdint.h> +/** + * Packet type characters. + */ +#define PKT_TYPE_COMMAND 'C' +#define PKT_TYPE_SENSOR 'S' +#define PKT_TYPE_READ 'G' +#define PKT_TYPE_RESET 'R' +#define PKT_TYPE_TIME 'T' +#define PKT_TYPE_PID 'P' + +/** + * Defines the total maximum size of a packet, including header + */ +#define MAX_PACKET_LENGTH 256 + +/** + * Packet structure definitions + */ +typedef struct header_t { + uint8_t start; + uint8_t length; + char type; + uint8_t flags; + uint32_t sequence; +} header_t; + +typedef struct packet_t { + header_t header; + uint8_t data_crc[MAX_PACKET_LENGTH-sizeof(header_t)]; +} packet_t; + +typedef union packet_union_t { + packet_t packet; + char raw[MAX_PACKET_LENGTH]; +} packet_union_t; + +typedef struct command_data_t { + float left; + float right; +} command_data_t; + +typedef struct sensor_data_t { + uint32_t time; + float accel[3]; + float gyro[3]; + int32_t encoder[2]; + float velocity[2]; + float voltage; +} sensor_data_t; + +typedef struct read_data_t { + int32_t period; +} read_data_t; + +typedef struct time_data_t { + uint32_t time; +} time_data_t; + +typedef struct pid_data_t { + float vel[2]; + float pwm[2]; +} pid_data_t; + +#endif \ No newline at end of file