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