120 lines
3.2 KiB
C
120 lines
3.2 KiB
C
/********************************************************************************
|
|
* 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__
|