summaryrefslogtreecommitdiff
path: root/bsp/synwit/libraries/SWM341_CSL/SWM341_UsbHost_Lib/MSC/usbh_msc_bot.h
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__