31 #ifndef __USB_DESCRIPTOR_H__ 32 #define __USB_DESCRIPTOR_H__ 1 34 #include "bootloader_common.h" 35 #include "usb_device_config.h" 37 #include "usb_device.h" 39 #include "usb_device_class.h" 40 #include "usb_device_hid.h" 41 #include "usb_device_msc.h" 43 #include "usb_descriptor.h" 45 #define USB_BCD_VERSION (0x0200) 52 #define USB_DEVICE_DESCRIPTOR_LENGTH (18) 54 #if (USB_DEVICE_CONFIG_HID == 0) && (USB_DEVICE_CONFIG_MSC == 1) 55 #define USB_CONFIGURE_DESCRIPTOR_LENGTH (32) // 64, HID_only = 41, MSC_ONLY = 32 56 #elif(USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 0) 57 #define USB_CONFIGURE_DESCRIPTOR_LENGTH (41) // 64, HID_only = 41, MSC_ONLY = 32 58 #elif(USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 1) 59 #define USB_CONFIGURE_DESCRIPTOR_LENGTH (64) // 64, HID_only = 41, MSC_ONLY = 32 61 #define USB_CONFIGURE_DESCRIPTOR_LENGTH (41) // 64, HID_only = 41, MSC_ONLY = 32 64 #define USB_HID_REPORT_DESC_SIZE (76) 65 #define USB_HID_GENERIC_DESCRIPTOR_LENGTH (32) 66 #define USB_CONFIGURE_ONLY_DESCRIPTOR_LENGTH (9) 67 #define USB_INTERFACE_DESCRIPTOR_LENGTH (9) 68 #define USB_HID_DESCRIPTOR_LENGTH (9) 69 #define USB_ENDPOINT_DESCRIPTOR_LENGTH (7) 70 #define USB_MSC_DISK_REPORT_DESCRIPTOR_LENGTH (63) 71 #define USB_IAD_DESC_SIZE (8) 73 #define USB_CONFIGURE_COUNT (1) 74 #define USB_STRING_COUNT (4) 75 #define USB_LANGUAGE_COUNT (1) 77 #if (USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 1) 79 #define USB_HID_CONFIG_INDEX (USB_CONFIGURE_ONLY_DESCRIPTOR_LENGTH) 80 #define USB_MSC_CONFIG_INDEX \ 81 (USB_HID_CONFIG_INDEX + 2 * USB_ENDPOINT_DESCRIPTOR_LENGTH + USB_INTERFACE_DESCRIPTOR_LENGTH + \ 82 USB_HID_DESCRIPTOR_LENGTH) 83 #elif(USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 0) 85 #define USB_HID_CONFIG_INDEX (USB_CONFIGURE_ONLY_DESCRIPTOR_LENGTH) 86 #define USB_MSC_CONFIG_INDEX (0) 87 #elif(USB_DEVICE_CONFIG_HID == 0) && (USB_DEVICE_CONFIG_MSC == 1) 89 #define USB_HID_CONFIG_INDEX (0) 90 #define USB_MSC_CONFIG_INDEX (USB_CONFIGURE_ONLY_DESCRIPTOR_LENGTH) 93 #define USB_HID_CONFIG_INDEX (USB_CONFIGURE_ONLY_DESCRIPTOR_LENGTH) 94 #define USB_MSC_CONFIG_INDEX \ 95 (USB_HID_CONFIG_INDEX + 2 * USB_ENDPOINT_DESCRIPTOR_LENGTH + USB_INTERFACE_DESCRIPTOR_LENGTH + \ 96 USB_HID_DESCRIPTOR_LENGTH) 99 #define HS_BULK_IN_PACKET_SIZE (512) 100 #define HS_BULK_OUT_PACKET_SIZE (512) 101 #define FS_BULK_IN_PACKET_SIZE (64) 102 #define FS_BULK_OUT_PACKET_SIZE (64) 105 #define USB_MSC_CLASS (0x08) 107 #define USB_MSC_SUBCLASS (0x06) 109 #define USB_MSC_PROTOCOL (0x50) 111 #define USB_MSC_CONFIGURE_INDEX (1) 112 #define USB_MSC_ENDPOINT_COUNT (2) 113 #define USB_MSC_BULK_IN_ENDPOINT (3) 114 #define USB_MSC_BULK_OUT_ENDPOINT (4) 115 #define USB_MSC_INTERFACE_COUNT (1) 117 #if (USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 1) 118 #define USB_HID_GENERIC_INTERFACE_INDEX (0) 119 #define USB_MSC_INTERFACE_INDEX (1) 121 #define USB_HID_GENERIC_INTERFACE_INDEX (0) 122 #define USB_MSC_INTERFACE_INDEX (0) 126 #define USB_HID_GENERIC_CONFIGURE_INDEX (1) 127 #define USB_HID_GENERIC_INTERFACE_COUNT (1) 129 #define USB_HID_GENERIC_IN_BUFFER_LENGTH (8) 130 #define USB_HID_GENERIC_OUT_BUFFER_LENGTH (8) 131 #define USB_HID_GENERIC_ENDPOINT_COUNT (2) 132 #define USB_HID_GENERIC_ENDPOINT_IN (1) 133 #define USB_HID_GENERIC_ENDPOINT_OUT (2) 135 #define USB_HID_GENERIC_CLASS (0x03) 136 #define USB_HID_GENERIC_SUBCLASS (0x00) 137 #define USB_HID_GENERIC_PROTOCOL (0x00) 139 #define HS_HID_GENERIC_INTERRUPT_OUT_PACKET_SIZE (8) 140 #define FS_HID_GENERIC_INTERRUPT_OUT_PACKET_SIZE (8) 141 #define HS_HID_GENERIC_INTERRUPT_OUT_INTERVAL (0x04) 142 #define FS_HID_GENERIC_INTERRUPT_OUT_INTERVAL (0x01) 144 #define HS_HID_GENERIC_INTERRUPT_IN_PACKET_SIZE (8) 145 #define FS_HID_GENERIC_INTERRUPT_IN_PACKET_SIZE (8) 146 #define HS_HID_GENERIC_INTERRUPT_IN_INTERVAL (0x04) 147 #define FS_HID_GENERIC_INTERRUPT_IN_INTERVAL (0x01) 149 #if (USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 1) 150 #define USB_COMPOSITE_INTERFACE_COUNT (USB_HID_GENERIC_INTERFACE_COUNT + USB_MSC_INTERFACE_COUNT) 151 #elif(USB_DEVICE_CONFIG_HID == 1) && (USB_DEVICE_CONFIG_MSC == 0) 152 #define USB_COMPOSITE_INTERFACE_COUNT (USB_HID_GENERIC_INTERFACE_COUNT) 153 #elif(USB_DEVICE_CONFIG_HID == 0) && (USB_DEVICE_CONFIG_MSC == 1) 154 #define USB_COMPOSITE_INTERFACE_COUNT (USB_MSC_INTERFACE_COUNT) 156 #define USB_COMPOSITE_INTERFACE_COUNT (USB_HID_GENERIC_INTERFACE_COUNT) 159 #define USB_COMPOSITE_CONFIGURE_INDEX (1) 161 #define USB_STRING_DESCRIPTOR_HEADER_LENGTH (0x02) 162 #define USB_STRING_DESCRIPTOR_0_LENGTH (0x02) 163 #define USB_STRING_DESCRIPTOR_1_LENGTH (56) 164 #define USB_STRING_DESCRIPTOR_2_LENGTH (40) 165 #if ((USB_DEVICE_CONFIG_MSC > 0U) && (USB_DEVICE_CONFIG_HID > 0U)) // MSC + HID 166 #define USB_STRING_DESCRIPTOR_3_LENGTH (60) 167 #elif((USB_DEVICE_CONFIG_MSC == 0U) && (USB_DEVICE_CONFIG_HID > 0U)) // Only HID 168 #define USB_STRING_DESCRIPTOR_3_LENGTH (44) 169 #elif((USB_DEVICE_CONFIG_MSC > 0U) && (USB_DEVICE_CONFIG_HID == 0U)) // Only MSC 170 #define USB_STRING_DESCRIPTOR_3_LENGTH (28) 172 #define USB_STRING_DESCRIPTOR_3_LENGTH (2) 174 #define USB_STRING_DESCRIPTOR_ERROR_LENGTH (32) 176 #define USB_DEVICE_CLASS (0x00) 177 #define USB_DEVICE_SUBCLASS (0x00) 178 #define USB_DEVICE_PROTOCOL (0x00) 180 #define USB_CONFIGURE_DRAWN (0x32) 185 enum _usb_descriptor_index
187 kUsbDescriptorIndex_VidLow = 8,
188 kUsbDescriptorIndex_VidHigh = 9,
189 kUsbDescriptorIndex_PidLow = 10,
190 kUsbDescriptorIndex_PidHigh = 11
193 typedef struct _usb_hid_config_descriptor
195 usb_descriptor_interface_t interface;
196 usb_descriptor_interface_t hid_report;
197 usb_descriptor_endpoint_t endpoint_in;
198 usb_descriptor_endpoint_t endpoint_out;
201 typedef struct _usb_msc_config_descriptor
203 usb_descriptor_interface_t interface;
204 usb_descriptor_endpoint_t endpoint_in;
205 usb_descriptor_endpoint_t endpoint_out;
208 extern usb_device_class_struct_t g_hid_generic_class;
209 extern usb_device_class_struct_t g_msc_class;
212 extern usb_status_t usb_device_set_speed(usb_device_handle handle, uint8_t speed);
215 usb_status_t usb_device_get_device_descriptor(usb_device_handle handle,
216 usb_device_get_device_descriptor_struct_t *device_descriptor);
219 usb_status_t usb_device_get_configuration_descriptor(
220 usb_device_handle handle, usb_device_get_configuration_descriptor_struct_t *configuration_descriptor);
223 usb_status_t usb_device_get_string_descriptor(usb_device_handle handle,
224 usb_device_get_string_descriptor_struct_t *string_descriptor);
227 usb_status_t usb_device_get_hid_descriptor(usb_device_handle handle,
228 usb_device_get_hid_descriptor_struct_t *hid_descriptor);
231 usb_status_t usb_device_get_hid_report_descriptor(usb_device_handle handle,
232 usb_device_get_hid_report_descriptor_struct_t *hid_report_descriptor);
235 usb_status_t usb_device_get_hid_physical_descriptor(
236 usb_device_handle handle, usb_device_get_hid_physical_descriptor_struct_t *hid_physical_descriptor);
238 extern uint8_t g_device_descriptor[];
239 extern usb_language_list_t g_language_list;
241 extern usb_language_list_t *g_language_ptr;
Definition: src/bm_usb/usb_descriptor.h:201
Definition: src/bm_usb/usb_descriptor.h:193