#ifndef _MSC_H_ #define _MSC_H_ #include "type.h" typedef struct { DWORD_t dCBWSignature; DWORD_t dCBWTag; DWORD_t dCBWDataTransferLength; BYTE bmCBWFlags; BYTE bCBWLUN; BYTE bCBWCBLength; BYTE CBWCB[16]; } msc_cbw_t; typedef struct { DWORD_t dCSWSignature; DWORD_t dCSWTag; DWORD_t dCSWDataResidue; BYTE bCSWStatus; } msc_csw_t; extern msc_cbw_t __xdata msc_cbw; extern msc_csw_t __xdata msc_csw; #define MSC_EP_IN 3 #define MSC_EP_OUT 3 #define CONCAT2_(a,b) (a ## b) #define CONCAT2(a,b) CONCAT2_(a, b) #define MSC_EP_IN_PACKET_SIZE (CONCAT2(PACKET_SIZE_EP, MSC_EP_IN)) #define MSC_EP_OUT_PACKET_SIZE (CONCAT2(PACKET_SIZE_EP, MSC_EP_OUT)) #define MSC_RESET 0xFF // Mass-storage device Reset #define MSC_GET_MAX_LUN 0xFE // Mass-storage device Get Max LUN void msc_polling(); void usb_MSC_init(); void usb_MSC_req(); extern u8 __xdata msc_action; #define MSC_HOST_NO_DATA 0x01 #define MSC_HOST_TX 0x02 #define MSC_HOST_RX 0x04 #define MSC_DEVICE_NO_DATA 0x10 #define MSC_DEVICE_RX 0x20 #define MSC_DEVICE_TX 0x40 #define MSC_HOST_SIDE(action) (action & 0x0F) #define MSC_DEVICE_SIDE(action) (action & 0xF0) #endif