| #ifndef __APP_ZEDMON_USB_PROTO_H_ |
| #define __APP_ZEDMON_USB_PROTO_H_ |
| |
| #include <assert.h> |
| #include <stdint.h> |
| |
| typedef enum { |
| ZEDMON_USB_PACKET_QUERY_REPORT_FORMAT = 0x00, |
| ZEDMON_USB_PACKET_QUERY_TIME = 0x01, |
| ZEDMON_USB_PACKET_QUERY_PARAMETER_VALUE = 0x02, |
| ZEDMON_USB_PACKET_ENABLE_REPORTING = 0x10, |
| ZEDMON_USB_PACKET_DISABLE_REPORTING = 0x11, |
| ZEDMON_USB_PACKET_SET_OUTPUT = 0x20, |
| ZEDMON_USB_PACKET_REPORT_FORMAT = 0x80, |
| ZEDMON_USB_PACKET_REPORT = 0x81, |
| ZEDMON_USB_PACKET_TIMESTAMP = 0x82, |
| ZEDMON_USB_PACKET_PARAMETER_VALUE = 0x83, |
| } zedmon_usb_packet_type_t; |
| |
| typedef enum { |
| ZEDMON_USB_TYPE_UINT8 = 0x00, |
| ZEDMON_USB_TYPE_UINT16 = 0x01, |
| ZEDMON_USB_TYPE_UINT32 = 0x02, |
| ZEDMON_USB_TYPE_UINT64 = 0x03, |
| ZEDMON_USB_TYPE_INT8 = 0x10, |
| ZEDMON_USB_TYPE_INT16 = 0x11, |
| ZEDMON_USB_TYPE_INT32 = 0x12, |
| ZEDMON_USB_TYPE_INT64 = 0x13, |
| ZEDMON_USB_TYPE_FLOAT32 = 0x40, |
| } zedmon_usb_type_t; |
| |
| typedef enum { |
| ZEDMON_USB_UNIT_AMPERE = 0x00, |
| ZEDMON_USB_UNIT_VOLTS = 0x01, |
| } zedmon_usb_unit_t; |
| |
| typedef struct { |
| uint8_t packet_type; |
| uint8_t index; |
| uint8_t type; // zedmon_usb_type_t |
| uint8_t unit; // zedmon_usb_unit_t |
| float scale; |
| char name[56]; |
| } zedmon_usb_report_format_t; |
| |
| static_assert(sizeof(zedmon_usb_report_format_t) == 64); |
| static_assert(offsetof(zedmon_usb_report_format_t, packet_type) == 0); |
| static_assert(offsetof(zedmon_usb_report_format_t, index) == 1); |
| static_assert(offsetof(zedmon_usb_report_format_t, type) == 2); |
| static_assert(offsetof(zedmon_usb_report_format_t, unit) == 3); |
| static_assert(offsetof(zedmon_usb_report_format_t, scale) == 4); |
| static_assert(offsetof(zedmon_usb_report_format_t, name) == 8); |
| |
| typedef struct { |
| uint8_t packet_type; // zedmon_usb_packet_type_t |
| char name[54]; |
| uint8_t data_type; // zedmon_usb_type_t |
| union { |
| uint8_t bytes[8]; |
| float float_value; |
| } data; |
| } zedmon_usb_parameter_value_t; |
| |
| static_assert(sizeof(zedmon_usb_parameter_value_t) == 64); |
| static_assert(offsetof(zedmon_usb_parameter_value_t, packet_type) == 0); |
| static_assert(offsetof(zedmon_usb_parameter_value_t, name) == 1); |
| static_assert(offsetof(zedmon_usb_parameter_value_t, data_type) == 55); |
| static_assert(offsetof(zedmon_usb_parameter_value_t, data) == 56); |
| |
| #endif // __APP_ZEDMON_USB_PROTO_H_ |
| |