blob: 6e4ab13252ab156a70f3eea97182c5cd1c5736b9 [file] [log] [blame]
#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, "unexpected size");
static_assert(offsetof(zedmon_usb_report_format_t, packet_type) == 0, "unexpected offset");
static_assert(offsetof(zedmon_usb_report_format_t, index) == 1, "unexpected offset");
static_assert(offsetof(zedmon_usb_report_format_t, type) == 2, "unexpected offset");
static_assert(offsetof(zedmon_usb_report_format_t, unit) == 3, "unexpected offset");
static_assert(offsetof(zedmon_usb_report_format_t, scale) == 4, "unexpected offset");
static_assert(offsetof(zedmon_usb_report_format_t, name) == 8, "unexpected offset");
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, "unexpected size");
static_assert(offsetof(zedmon_usb_parameter_value_t, packet_type) == 0, "unexpected offset");
static_assert(offsetof(zedmon_usb_parameter_value_t, name) == 1, "unexpected offset");
static_assert(offsetof(zedmon_usb_parameter_value_t, data_type) == 55, "unexpected offset");
static_assert(offsetof(zedmon_usb_parameter_value_t, data) == 56, "unexpected offset");
#endif // __APP_ZEDMON_USB_PROTO_H_