14#define PING_INTERVAL_NS (1000LL * U_TIME_1MS_IN_NS)
15#define PING_TIMEOUT_NS (800LL * U_TIME_1MS_IN_NS)
17#define CONTACTGLOVE2_SENSOR_COUNT 16
19enum contactglove_to_device_packet_mode
21 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_PAIRING = 2,
22 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_DEBUG = 6,
23 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_VERSION = 7,
24 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_PING = 8,
25 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_SWITCH_CHANNEL = 13,
26 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_BODY_HAPTICS_LEFT = 15,
27 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_BODY_HAPTICS_RIGHT = 16,
28 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_SET_MODULE_STATE = 22,
29 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_MODULE_STATE = 24,
32enum contactglove_to_host_packet_mode
34 CONTACTGLOVE_TO_HOST_PACKET_MODE_SENSOR_VALUE_LEFT = 4,
35 CONTACTGLOVE_TO_HOST_PACKET_MODE_SENSOR_VALUE_RIGHT = 5,
36 CONTACTGLOVE_TO_HOST_PACKET_MODE_DEBUG = 6,
37 CONTACTGLOVE_TO_HOST_PACKET_MODE_DEVICE_VERSION = 7,
38 CONTACTGLOVE_TO_HOST_PACKET_MODE_LEFT_PING = 8,
39 CONTACTGLOVE_TO_HOST_PACKET_MODE_RIGHT_PING = 9,
40 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_GYRO_DATA_LEFT = 10,
41 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_GYRO_DATA_RIGHT = 11,
42 CONTACTGLOVE_TO_HOST_PACKET_MODE_MODULE_STATE = 14,
43 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_MAGNETRA2_INPUT_LEFT = 21,
44 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_MAGNETRA2_INPUT_RIGHT = 22,
45 CONTACTGLOVE_TO_HOST_PACKET_MODE_GLOVE_CONNECTION = 30,
46 CONTACTGLOVE_TO_HOST_PACKET_MODE_ERROR_LOG = 100,
51#define SIZE_ASSERT(type, size) \
52 static_assert(sizeof(type) == (size), "Size of " #type " is not " #size " bytes as was expected")
71 uint8_t charge_status;
85 __le16 glove_to_dongle_ms;
95enum contactglove_sensor_position
97 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_ROOT1,
98 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_TIP,
99 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_ROOT2,
100 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_ROOT1,
101 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_TIP,
102 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_ROOT2,
103 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_ROOT1,
104 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_TIP,
105 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_ROOT2,
106 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_ROOT1,
107 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_TIP,
108 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_ROOT2,
109 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_ROOT1,
110 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_TIP,
111 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_ROOT2,
112 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_BASE,
119 __le16 sensor_values[CONTACTGLOVE2_SENSOR_COUNT];
123enum contactglove_magnetra2_button_bits
125 MAGNETRA2_BUTTON_BITS_A = (1 << 0),
126 MAGNETRA2_BUTTON_BITS_B = (1 << 1),
127 MAGNETRA2_BUTTON_BITS_TRIGGER_CLICK = (1 << 2),
128 MAGNETRA2_BUTTON_BITS_TRACKPAD_BOTTOM = (1 << 3),
129 MAGNETRA2_BUTTON_BITS_PAIRING = (1 << 4),
132enum contactglove_magnetra2_multi_ch_ranges
134 MAGNETRA2_MULTI_CH_RANGE_JOYSTICK_START = 0,
135 MAGNETRA2_MULTI_CH_RANGE_JOYSTICK_END = 50,
136 MAGNETRA2_MULTI_CH_RANGE_TRACKPAD_TOP_START = 51,
137 MAGNETRA2_MULTI_CH_RANGE_TRACKPAD_TOP_END = 150,
138 MAGNETRA2_MULTI_CH_RANGE_SYSTEM_START = 151,
139 MAGNETRA2_MULTI_CH_RANGE_SYSTEM_END = 210,
140 MAGNETRA2_MULTI_CH_RANGE_NONE_START = 211,
141 MAGNETRA2_MULTI_CH_RANGE_NONE_END = 255,
150 uint8_t multi_ch_value;
154enum contactglove_module_kind
156 CONTACTGLOVE_MODULE_MAGNETRA2 = 1,
157 CONTACTGLOVE_MODULE_LED_MANAGER = 4,
158 CONTACTGLOVE_MODULE_SLEEP_MANAGER = 11,
159 CONTACTGLOVE_MODULE_MAX,
162enum contactglove_device_role
164 CONTACTGLOVE_DEVICE_ROLE_LEFT = 1,
165 CONTACTGLOVE_DEVICE_ROLE_RIGHT = 2,
199enum contactglove_debug_message_kind
201 CONTACTGLOVE_DEBUG_MESSAGE_TEMPORARY_LOG = 1,
202 CONTACTGLOVE_DEBUG_MESSAGE_SIZE_UNMATCHED = 2,
203 CONTACTGLOVE_DEBUG_MESSAGE_WAITING_FOR_PAIRING = 3,
204 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_MODE = 5,
205 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_MAC_ADDRESS = 6,
206 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_DEVICE = 9,
207 CONTACTGLOVE_DEBUG_MESSAGE_SEND_FAILED = 10,
208 CONTACTGLOVE_DEBUG_MESSAGE_CRC = 11,
213 uint8_t message_kind;
214 uint8_t message_value;
Endian-specific byte order defines.
Header holding common defines.