22 #define ENABLE_ERR_MSG 1 23 #define ENABLE_DBG_MSG 0 26 #define HID_ERRMSG printf 28 #define HID_ERRMSG(...) 32 #define HID_DBGMSG printf 34 #define HID_DBGMSG(...) 52 #define CONFIG_HID_MAX_DEV 4 53 #define CONFIG_HID_DEV_MAX_PIPE 8 57 #define HID_DESCRIPTOR_TYPE 0x21 58 #define REPORT_DESCRIPTOR_TYPE 0x22 60 #define HID_SUBCLASS_BOOT_DEVICE 0x01 62 #define HID_PROTOCOL_KEYBOARD 0x01 63 #define HID_PROTOCOL_MOUSE 0x02 70 #define TAG_INPUT 0x80 71 #define TAG_OUTPUT 0x90 72 #define TAG_FEATURE 0xB0 73 #define TAG_COLLECTION 0xA0 74 #define TAG_END_COLLECTION 0xC0 78 #define TAG_USAGE_PAGE 0x04 79 #define TAG_LOGICAL_MIN 0x14 80 #define TAG_LOGICAL_MAX 0x24 81 #define TAG_PHYSICAL_MIN 0x34 82 #define TAG_PHYSICAL_MAX 0x44 83 #define TAG_UNIT_EXPONENT 0x54 85 #define TAG_REPORT_SIZE 0x74 86 #define TAG_REPORT_ID 0x84 87 #define TAG_REPORT_COUNT 0x94 92 #define TAG_USAGE 0x08 93 #define TAG_USAGE_MIN 0x18 94 #define TAG_USAGE_MAX 0x28 95 #define TAG_DESIGNATOR_INDEX 0x38 96 #define TAG_DESIGNATOR_MIN 0x48 97 #define TAG_DESIGNATOR_MAX 0x58 98 #define TAG_STRING_INDEX 0x78 99 #define TAG_STRING_MIN 0x88 100 #define TAG_STRING_MAX 0x98 101 #define TAG_DELIMITER 0xA8 104 #define COLLECT_PHYSICAL 0x00 105 #define COLLECT_APPLICATION 0x01 106 #define COLLECT_LOGICAL 0x02 107 #define COLLECT_VENDOR 0xFF 112 #define UP_GENERIC_DESKTOP 0x01 113 #define UP_SIMULATION_CONTROLS 0x02 114 #define UP_VR_CONTROLS 0x03 115 #define UP_SPORT_CONTROLS 0x04 116 #define UP_GAME_CONTROLS 0x05 117 #define UP_KEYCODE 0x07 119 #define UP_BUTTON 0x09 120 #define UP_ORDINAL 0x0A 121 #define UP_TELEPHONY 0x0B 122 #define UP_CONSUMER 0x0C 123 #define UP_DIGITIZER 0x0D 124 #define UP_PID_PAGE 0x0F 125 #define UP_UNICODE 0x10 126 #define UP_BARCODE_SCANNER 0x8C 129 #define USAGE_ID_POINTER 0x01 130 #define USAGE_ID_MOUSE 0x02 131 #define USAGE_ID_JOYSTICK 0x04 132 #define USAGE_ID_GAMEPAD 0x05 133 #define USAGE_ID_KEYBOARD 0x06 134 #define USAGE_ID_KEYPAD 0x07 135 #define USAGE_ID_X 0x30 136 #define USAGE_ID_Y 0x31 137 #define USAGE_ID_Z 0x32 138 #define USAGE_ID_WHEEL 0x38 140 #define KEYCODE_CAPS_LOCK 0x39 141 #define KEYCODE_SCROLL_LOCK 0x47 142 #define KEYCODE_NUM_LOCK 0x53 144 #define STATE_MASK_NUM_LOCK 0x01 145 #define STATE_MASK_CAPS_LOCK 0x02 146 #define STATE_MASK_SCROLL_LOCK 0x04 152 #define USB_DT_HID (REQ_TYPE_CLASS_DEV | 0x01) 153 #define USB_DT_REPORT (REQ_TYPE_CLASS_DEV | 0x02) 156 #define HID_REPORT_GET 0x01 157 #define HID_GET_IDLE 0x02 158 #define HID_GET_PROTOCOL 0x03 159 #define HID_REPORT_SET 0x09 160 #define HID_SET_IDLE 0x0A 161 #define HID_SET_PROTOCOL 0x0B 181 typedef struct hid_descriptor
183 __packed uint8_t bLength;
184 __packed uint8_t bDescriptorType;
185 __packed uint16_t bcdHID;
186 __packed uint8_t bCountryCode;
187 __packed uint8_t bNumDescriptors;
188 __packed uint8_t bRPDescType;
189 __packed uint16_t wDescriptorLength;
195 uint8_t bDescriptorType;
197 uint8_t bCountryCode;
198 uint8_t bNumDescriptors;
200 uint16_t wDescriptorLength;
204 typedef struct report_info
210 signed int usage_mim;
211 signed int usage_max;
212 signed int logical_min;
213 signed int logical_max;
214 signed int physical_min;
215 signed int physical_max;
216 signed int unit_exponent;
218 signed int designator_index;
219 signed int designator_min;
220 signed int designator_max;
221 signed int string_index;
222 signed int string_min;
223 signed int string_max;
226 uint8_t report_count;
233 uint32_t non_linear:1;
234 uint32_t no_preferred:1;
235 uint32_t null_state:1;
236 uint32_t is_volatile:1;
237 uint32_t buffered_bytes:1;
238 uint32_t reserved:23;
240 struct report_info *next;
243 static uint8_t _designator_index, _designator_min, _designator_max;
244 static uint8_t _string_index, _string_max, _string_min;
247 typedef struct rp_desc_info
249 uint8_t has_report_id;
250 uint8_t last_pressed_lock_keys;
334 int hid_parse_keyboard_reports(
HID_DEV_T *hdev, uint8_t *data,
int data_len);
335 int hid_parse_mouse_reports(
HID_DEV_T *hdev, uint8_t *data,
int data_len);
336 int32_t usbh_hid_set_report_non_blocking(
HID_DEV_T *hdev,
int rtp_typ,
int rtp_id, uint8_t *data,
int len);
struct usbhid_mouse_event MOUSE_EVENT_T
void() HID_KEYBOARD_FUNC(struct usbhid_dev *hdev, KEYBOARD_EVENT_T *kbd)
void() HID_IR_FUNC(struct usbhid_dev *hdev, uint16_t ep_addr, int status, uint8_t *rdata, uint32_t data_len)
NuMicro peripheral access layer header file.
void() HID_MOUSE_FUNC(struct usbhid_dev *hdev, MOUSE_EVENT_T *mouse)
void *__dso_handle __attribute__((weak))
void() HID_IW_FUNC(struct usbhid_dev *hdev, uint16_t ep_addr, int status, uint8_t *wbuff, uint32_t *data_len)
void usbh_hid_regitser_keyboard_callback(HID_KEYBOARD_FUNC *func)
Register the keyboard event callback function to HID class driver. Any keyboard reports will be sent ...
void usbh_hid_regitser_mouse_callback(HID_MOUSE_FUNC *func)
Register the mouse event callback function to HID class driver. Any mouse reports will be sent to use...
USB Host library header file.
struct usbhid_keyboard_event KEYBOARD_EVENT_T
#define CONFIG_HID_DEV_MAX_PIPE
HIDDEN_SYMBOLS struct usbhid_dev HID_DEV_T
UTR_T * utr_list[CONFIG_HID_DEV_MAX_PIPE]