61 #define U32_LE(v) (uint32_t)(__rev(v))
62 #define U16_LE(v) (uint16_t)(__rev(v) >> 16)
63 #define U32_BE(v) (uint32_t)(v)
64 #define U16_BE(v) (uint16_t)(v)
66 #define U32_BE(v) (uint32_t)(__rev(v))
67 #define U16_BE(v) (uint16_t)(__rev(v) >> 16)
68 #define U32_LE(v) (uint32_t)(v)
69 #define U16_LE(v) (uint16_t)(v)
83 #define USBD_MSC_MEDIA_READY (1U)
84 #define USBD_MSC_MEDIA_PROTECTED (1U<<1)
94 typedef struct _usbd_msc_data_t {
115 typedef struct _usbd_msc_t {
122 uint32_t bulk_buf_sz;
123 uint16_t max_packet_size[2];
124 uint8_t *inquiry_data;
138 uint8_t bEndpointAddress;
139 uint8_t bmAttributes;
140 uint16_t wMaxPacketSize;
142 uint32_t transferred;
156 uint8_t configured : 1;
157 uint8_t initialized : 1;
159 uint8_t max_packet_size;
163 uint8_t class_custom;
164 uint8_t class_instance;
165 uint8_t class_driver;
166 uint8_t dev_desc_len;
167 uint8_t cfg_desc_len;
168 osThreadId recovery_thread_id;
177 extern const uint8_t usbh_cls_num;
217 void USBD_Devicen_Initialize (
void);
221 void USBD_Devicen_Uninitialize (
void);
225 void USBD_Devicen_EventReset (
void);
235 usbdRequestStatus USBD_Devicen_Endpoint0_SetupPacketReceived (
const USB_SETUP_PACKET *setup_packet, uint8_t **buf, int32_t *len);
240 void USBD_Devicen_Endpoint0_SetupPacketProcessed (
const USB_SETUP_PACKET *setup_packet);
249 usbdRequestStatus USBD_Devicen_Endpoint0_OutDataReceived (uint32_t len);
258 usbdRequestStatus USBD_Devicen_Endpoint0_InDataSent (uint32_t len);
525 bool USBD_HIDn_SetReport (uint8_t rtype, uint8_t req, uint8_t rid,
const uint8_t *buf, int32_t len);
692 extern usbStatus
USBD_EndpointRead (uint8_t device, uint8_t ep_addr, uint8_t *buf, uint32_t len);
710 extern usbStatus
USBD_EndpointWrite (uint8_t device, uint8_t ep_addr,
const uint8_t *buf, uint32_t len);
769 extern usbStatus
USBH_MSC_Read (uint8_t instance, uint32_t lba, uint32_t cnt, uint8_t *buf);
777 extern usbStatus
USBH_MSC_Write (uint8_t instance, uint32_t lba, uint32_t cnt,
const uint8_t *buf);
784 extern usbStatus
USBH_MSC_ReadCapacity (uint8_t instance, uint32_t *block_count, uint32_t *block_size);
801 extern int32_t
USBH_HID_Read (uint8_t instance, uint8_t *buf, int32_t len);
810 extern int32_t
USBH_HID_Write (uint8_t instance,
const uint8_t *buf, int32_t len);
820 typedef struct _usbHID_MouseState {
857 extern usbStatus
USBH_CDC_ACM_Send (uint8_t instance,
const uint8_t *data, uint32_t num);
924 extern usbStatus USBH_CustomClass_GetDeviceStatus (uint8_t instance);
968 extern USBH_PIPE *
USBH_PipeCreate (uint8_t ctrl, uint8_t dev_addr, uint8_t dev_speed, uint8_t hub_addr, uint8_t hub_port, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_max_packet_size, uint8_t ep_interval);
979 extern usbStatus
USBH_PipeModify (uint8_t ctrl,
USBH_PIPE *ptr_pipe, uint8_t dev_addr, uint8_t dev_speed, uint8_t hub_addr, uint8_t hub_port, uint16_t ep_max_packet_size);
1109 extern usbStatus
USBH_DeviceRequest_GetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint8_t language_id, uint8_t *descriptor_data, uint16_t descriptor_length);
1120 extern usbStatus
USBH_DeviceRequest_SetDescriptor (uint8_t ctrl, uint8_t recipient, uint8_t descriptor_type, uint8_t descriptor_index, uint8_t language_id, uint8_t *descriptor_data, uint16_t descriptor_length);