1 #ifndef __USBH_MSC_BOT_H__ 2 #define __USBH_MSC_BOT_H__ 3 4 #include <stdint.h> 5 6 7 typedef enum { 8 USBH_MSC_BOT_CBW = 0, 9 USBH_MSC_BOT_CBW_WAIT, 10 USBH_MSC_BOT_DIN, 11 USBH_MSC_BOT_DIN_WAIT, 12 USBH_MSC_BOT_DOUT, 13 USBH_MSC_BOT_DOUT_WAIT, 14 USBH_MSC_BOT_CSW, 15 USBH_MSC_BOT_CSW_WAIT, 16 USBH_MSC_BOT_HANDLE_ERROR, 17 USBH_MSC_BOT_HANDLE_STALL_IN, 18 USBH_MSC_BOT_HANDLE_STALL_OUT, 19 } USBH_MSC_BOT_State; 20 21 22 typedef struct __attribute__((packed)) { 23 uint32_t CBWSignature; 24 uint32_t CBWTag; 25 uint32_t CBWTransferLength; 26 uint8_t CBWFlags; 27 uint8_t CBWLUN; 28 uint8_t CBWCBLength; 29 uint8_t CBWCB[16]; 30 } USBH_CBWPkt_t; 31 32 33 typedef struct __attribute__((packed)) { 34 uint32_t CSWSignature; 35 uint32_t CSWTag; 36 uint32_t CSWDataResidue; 37 uint8_t CSWStatus; 38 } USBH_CSWPkt_t; 39 40 41 extern USBH_CBWPkt_t USBH_CBWData; 42 extern USBH_CSWPkt_t USBH_CSWData; 43 44 45 void USBH_MSC_BOT_Init(void); 46 void USBH_MSC_BOT_Process(USBH_Info_t *phost); 47 uint8_t USBH_MSC_BOT_DecodeCSW(USBH_Info_t *phost); 48 49 50 #endif // __USBH_MSC_BOT_H__ 51 52