@@ -168,6 +168,73 @@ struct hid_ops {
168
168
#define HID_PROTOCOL_BOOT 0x00
169
169
#define HID_PROTOCOL_REPORT 0x01
170
170
171
+ /* Example HID report descriptors */
172
+ /**
173
+ * @brief Simple HID mouse report descriptor for n button mouse.
174
+ *
175
+ * @param bcnt Button count. Allowed values from 1 to 8.
176
+ */
177
+ #define HID_MOUSE_REPORT_DESC (bcnt ) { \
178
+ /* USAGE_PAGE (Generic Desktop) */ \
179
+ HID_GI_USAGE_PAGE , USAGE_GEN_DESKTOP , \
180
+ /* USAGE (Mouse) */ \
181
+ HID_LI_USAGE , USAGE_GEN_DESKTOP_MOUSE , \
182
+ /* COLLECTION (Application) */ \
183
+ HID_MI_COLLECTION , COLLECTION_APPLICATION , \
184
+ /* USAGE (Pointer) */ \
185
+ HID_LI_USAGE , USAGE_GEN_DESKTOP_POINTER , \
186
+ /* COLLECTION (Physical) */ \
187
+ HID_MI_COLLECTION , COLLECTION_PHYSICAL , \
188
+ /* Bits used for button signalling */ \
189
+ /* USAGE_PAGE (Button) */ \
190
+ HID_GI_USAGE_PAGE , USAGE_GEN_BUTTON , \
191
+ /* USAGE_MINIMUM (Button 1) */ \
192
+ HID_LI_USAGE_MIN (1 ), 0x01 , \
193
+ /* USAGE_MAXIMUM (Button bcnt) */ \
194
+ HID_LI_USAGE_MAX (1 ), bcnt , \
195
+ /* LOGICAL_MINIMUM (0) */ \
196
+ HID_GI_LOGICAL_MIN (1 ), 0x00 , \
197
+ /* LOGICAL_MAXIMUM (1) */ \
198
+ HID_GI_LOGICAL_MAX (1 ), 0x01 , \
199
+ /* REPORT_SIZE (1) */ \
200
+ HID_GI_REPORT_SIZE , 0x01 , \
201
+ /* REPORT_COUNT (bcnt) */ \
202
+ HID_GI_REPORT_COUNT , bcnt , \
203
+ /* INPUT (Data,Var,Abs) */ \
204
+ HID_MI_INPUT , 0x02 , \
205
+ /* Unused bits */ \
206
+ /* REPORT_SIZE (8 - bcnt) */ \
207
+ HID_GI_REPORT_SIZE , (8 - bcnt ), \
208
+ /* REPORT_COUNT (1) */ \
209
+ HID_GI_REPORT_COUNT , 0x01 , \
210
+ /* INPUT (Cnst,Ary,Abs) */ \
211
+ HID_MI_INPUT , 0x01 , \
212
+ /* X and Y axis, scroll */ \
213
+ /* USAGE_PAGE (Generic Desktop) */ \
214
+ HID_GI_USAGE_PAGE , USAGE_GEN_DESKTOP , \
215
+ /* USAGE (X) */ \
216
+ HID_LI_USAGE , USAGE_GEN_DESKTOP_X , \
217
+ /* USAGE (Y) */ \
218
+ HID_LI_USAGE , USAGE_GEN_DESKTOP_Y , \
219
+ /* USAGE (WHEEL) */ \
220
+ HID_LI_USAGE , USAGE_GEN_DESKTOP_WHEEL , \
221
+ /* LOGICAL_MINIMUM (-127) */ \
222
+ HID_GI_LOGICAL_MIN (1 ), -127 , \
223
+ /* LOGICAL_MAXIMUM (127) */ \
224
+ HID_GI_LOGICAL_MAX (1 ), 127 , \
225
+ /* REPORT_SIZE (8) */ \
226
+ HID_GI_REPORT_SIZE , 0x08 , \
227
+ /* REPORT_COUNT (3) */ \
228
+ HID_GI_REPORT_COUNT , 0x03 , \
229
+ /* INPUT (Data,Var,Rel) */ \
230
+ HID_MI_INPUT , 0x06 , \
231
+ /* END_COLLECTION */ \
232
+ HID_MI_COLLECTION_END , \
233
+ /* END_COLLECTION */ \
234
+ HID_MI_COLLECTION_END , \
235
+ }
236
+
237
+
171
238
/* Register HID device */
172
239
void usb_hid_register_device (const u8_t * desc , size_t size ,
173
240
const struct hid_ops * op );
0 commit comments