20#define PING_INTERVAL_NS (1000LL * U_TIME_1MS_IN_NS)
21#define PING_TIMEOUT_NS (800LL * U_TIME_1MS_IN_NS)
23#define CONTACTGLOVE2_SENSOR_COUNT 16
25enum contactglove_to_device_packet_mode
27 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_PAIRING = 2,
28 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_DEBUG = 6,
29 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_VERSION = 7,
30 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_PING = 8,
31 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_SWITCH_CHANNEL = 13,
32 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_BODY_HAPTICS_LEFT = 15,
33 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_BODY_HAPTICS_RIGHT = 16,
34 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_SET_MODULE_STATE = 22,
35 CONTACTGLOVE_TO_DEVICE_PACKET_MODE_REQUEST_MODULE_STATE = 24,
38enum contactglove_to_host_packet_mode
40 CONTACTGLOVE_TO_HOST_PACKET_MODE_SENSOR_VALUE_LEFT = 4,
41 CONTACTGLOVE_TO_HOST_PACKET_MODE_SENSOR_VALUE_RIGHT = 5,
42 CONTACTGLOVE_TO_HOST_PACKET_MODE_DEBUG = 6,
43 CONTACTGLOVE_TO_HOST_PACKET_MODE_DEVICE_VERSION = 7,
44 CONTACTGLOVE_TO_HOST_PACKET_MODE_LEFT_PING = 8,
45 CONTACTGLOVE_TO_HOST_PACKET_MODE_RIGHT_PING = 9,
46 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_GYRO_DATA_LEFT = 10,
47 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_GYRO_DATA_RIGHT = 11,
48 CONTACTGLOVE_TO_HOST_PACKET_MODE_MODULE_STATE = 14,
49 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_MAGNETRA2_INPUT_LEFT = 21,
50 CONTACTGLOVE_TO_HOST_PACKET_MODE_HAND_MAGNETRA2_INPUT_RIGHT = 22,
51 CONTACTGLOVE_TO_HOST_PACKET_MODE_GLOVE_CONNECTION = 30,
52 CONTACTGLOVE_TO_HOST_PACKET_MODE_ERROR_LOG = 100,
57#define SIZE_ASSERT(type, size) \
58 static_assert(sizeof(type) == (size), "Size of " #type " is not " #size " bytes as was expected")
77 uint8_t charge_status;
91 __le16 glove_to_dongle_ms;
101enum contactglove_sensor_position
103 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_ROOT1,
104 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_TIP,
105 CONTACTGLOVE_SENSOR_POSITION_FINGER_PINKY_ROOT2,
106 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_ROOT1,
107 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_TIP,
108 CONTACTGLOVE_SENSOR_POSITION_FINGER_RING_ROOT2,
109 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_ROOT1,
110 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_TIP,
111 CONTACTGLOVE_SENSOR_POSITION_FINGER_MIDDLE_ROOT2,
112 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_ROOT1,
113 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_TIP,
114 CONTACTGLOVE_SENSOR_POSITION_FINGER_INDEX_ROOT2,
115 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_ROOT1,
116 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_TIP,
117 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_ROOT2,
118 CONTACTGLOVE_SENSOR_POSITION_FINGER_THUMB_BASE,
125 __le16 sensor_values[CONTACTGLOVE2_SENSOR_COUNT];
129enum contactglove_magnetra2_button_bits
131 MAGNETRA2_BUTTON_BITS_A = (1 << 0),
132 MAGNETRA2_BUTTON_BITS_B = (1 << 1),
133 MAGNETRA2_BUTTON_BITS_TRIGGER_CLICK = (1 << 2),
134 MAGNETRA2_BUTTON_BITS_TRACKPAD_BOTTOM = (1 << 3),
135 MAGNETRA2_BUTTON_BITS_PAIRING = (1 << 4),
138enum contactglove_magnetra2_multi_ch_ranges
140 MAGNETRA2_MULTI_CH_RANGE_JOYSTICK_START = 0,
141 MAGNETRA2_MULTI_CH_RANGE_JOYSTICK_END = 50,
142 MAGNETRA2_MULTI_CH_RANGE_TRACKPAD_TOP_START = 51,
143 MAGNETRA2_MULTI_CH_RANGE_TRACKPAD_TOP_END = 150,
144 MAGNETRA2_MULTI_CH_RANGE_SYSTEM_START = 151,
145 MAGNETRA2_MULTI_CH_RANGE_SYSTEM_END = 210,
146 MAGNETRA2_MULTI_CH_RANGE_NONE_START = 211,
147 MAGNETRA2_MULTI_CH_RANGE_NONE_END = 255,
156 uint8_t multi_ch_value;
160enum contactglove_module_kind
162 CONTACTGLOVE_MODULE_MAGNETRA2 = 1,
163 CONTACTGLOVE_MODULE_LED_MANAGER = 4,
164 CONTACTGLOVE_MODULE_SLEEP_MANAGER = 11,
165 CONTACTGLOVE_MODULE_MAX,
168enum contactglove_device_role
170 CONTACTGLOVE_DEVICE_ROLE_LEFT = 1,
171 CONTACTGLOVE_DEVICE_ROLE_RIGHT = 2,
205enum contactglove_debug_message_kind
207 CONTACTGLOVE_DEBUG_MESSAGE_TEMPORARY_LOG = 1,
208 CONTACTGLOVE_DEBUG_MESSAGE_SIZE_UNMATCHED = 2,
209 CONTACTGLOVE_DEBUG_MESSAGE_WAITING_FOR_PAIRING = 3,
210 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_MODE = 5,
211 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_MAC_ADDRESS = 6,
212 CONTACTGLOVE_DEBUG_MESSAGE_UNKNOWN_DEVICE = 9,
213 CONTACTGLOVE_DEBUG_MESSAGE_SEND_FAILED = 10,
214 CONTACTGLOVE_DEBUG_MESSAGE_CRC = 11,
219 uint8_t message_kind;
220 uint8_t message_value;
Endian-specific byte order defines.
Header holding common defines.