@@ -168,6 +168,73 @@ struct hid_ops {
168168#define HID_PROTOCOL_BOOT 0x00
169169#define HID_PROTOCOL_REPORT 0x01
170170
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+
171238/* Register HID device */
172239void usb_hid_register_device (const u8_t * desc , size_t size ,
173240 const struct hid_ops * op );
0 commit comments