/******************************************************************************** * Copyright (c) 2012, Beijing Tongfang Microelectroics Co., Ltd. * All rights reserved. * Module: USB.h * Author: Yang Song * Version: V1.0 * History: * 2012-09-24 Original version ********************************************************************************/ #ifndef __USB_H__ #define __USB_H__ #include "global.h" // Standard Request Codes (bRequest) #define GET_STATUS 0 #define CLEAR_FEATURE 1 #define USBSTDREQRFU1 2 #define SET_FEATURE 3 #define USBSTDREQRFU2 4 #define SET_ADDRESS 5 #define GET_DESCRIPTOR 6 #define SET_DESCRIPTOR 7 #define GET_CONFIGURATION 8 #define SET_CONFIGURATION 9 #define GET_INTERFACE 10 #define SET_INTERFACE 11 #define SYNCH_FRAME 12 // Descriptor Type #define DEVICE 1 #define CONFIGURATION 2 #define STRING 3 #define INTERFACE 4 #define ENDPOINT 5 // Define pkt size #define EP0PKTSIZE 0x40 // Define type of status #define ACK 0x00 #define NAK 0x01 #define IN 0x00 #define OUT 0x01 // Enable or disable Dynamic FIFO,related configuration #define DYNAMICFIFO 1 // Variables and functions defined in USB_ep.c typedef struct { u8 bmRequestType; u8 bRequest; u16 wValue; u16 wIndex; u16 wLength; u8 bStdRqstFlag; // To indicate standard request is received u8 bClsRqstFlag; // To indicate class request is received u8 bVdrRqstFlag; // To indicate vendor request is received }USB_DEVICE_REQUEST; extern u8 *g_abUsbEp0Buf; extern u16 g_sUsbEp0TxLen; // Length of Ep0 data to be transmitted extern u8 g_bUsbEp0RcvDataFlag; extern volatile u8 g_bUsbEp0TxIntFlag; extern u8 g_bUsbEp1RcvDataFlag; extern u16 g_sUsbEp2TxLen; extern u8 *g_abUsbEp1Buf; extern u8 *g_abUsbEp2Buf; extern u8 *g_abUsbEp3Buf; //extern volatile u8 USB_Time; #if !DYNAMICFIFO extern u8 *g_abUsbBuf; #endif #define USBbuf g_abUsbEp0Buf extern u8 g_bCcidReader; extern USB_DEVICE_REQUEST st_usbDeviceRequest; extern u8 g_bUsbDevType; extern void usbStdReqGetDeviceDescriptor(void); extern void usbStdReqGetConfigDescriptor(void); extern void usbStdReqGetStringDescriptor(void); extern void usbStdReqGetDescriptor(void); extern void usbStdReqGetStatus(void); extern void usbStdReqRfu1(void); extern void usbStdReqClearFeature(void); extern void usbStdReqRfu2(void); extern void usbStdReqSetFeature(void); extern void usbStdReqSetAddress(void); extern void usbStdReqSetDescriptor(void); extern void usbStdReqGetConfiguration(void); extern void usbStdReqSetConfiguration(void); extern void usbStdReqGetInterface(void); extern void usbStdReqSetInterface(void); extern void usbStdReqSynchFrame(void); extern const voidfunc usbStdReq[0x0D]; extern void usbmain(void); extern void usbReqHandle(void); extern void usbEpInit(void); extern void USBInit(void); extern void USBClkInit(void); extern void usbEp0RxTx(void); extern void usbEp0RxAll(u8 * buf,u16 len); extern void usbEpnTx(u8 ep, u8 * buf,u8 len); extern void usbEpnTxAll(u8 ep,u8 * buf,u16 len); extern u8 usbEpnRxFirstPacket(u8 ep,u8 * buf); extern u16 usbEpnRxLastAllData(u8 ep,u8 * buf,u16 len); extern void AppUSBSendData(u8* buf, u32 len); extern u32 AppUSBReceiveData(u8 *buf, u32 bufSize); #endif //__USB_H__