|
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
// File name : wdt_drv.h
|
|
|
// Version : V0.1
|
|
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
#ifndef __USB_DRV_H__
|
|
|
#define __USB_DRV_H__
|
|
|
|
|
|
#include "type.h"
|
|
|
#include "usb_reg.h"
|
|
|
|
|
|
//#define USB_CCID
|
|
|
//#define USB_MS
|
|
|
//#define USB_HID 0
|
|
|
//#define USB_CDC
|
|
|
|
|
|
|
|
|
|
|
|
#define USB_MODE_1D1 0
|
|
|
#define USB_MODE_2D0 1 //USB2.0оƬÐèÒªÍâ½Ó12M¾§Õñ
|
|
|
|
|
|
/*USB variables*/
|
|
|
/* Global USB Register */
|
|
|
extern USBCFIFO_Reg* gUSBC_fifoReg;
|
|
|
extern USBCCommonReg* gUSBC_ComReg;
|
|
|
extern USBCIndexedReg* gUSBC_IdxReg;
|
|
|
|
|
|
//usb the max packet size
|
|
|
extern unsigned short gTxMaxPacket;
|
|
|
extern unsigned short gRxMaxPacket;
|
|
|
|
|
|
//USB version(1--USB2.0;0--USB1.1)
|
|
|
extern unsigned char g_usbVer;
|
|
|
|
|
|
//Suspend Mode Enable Flag(0-disable;1-enable)
|
|
|
extern unsigned char g_suspendMode;
|
|
|
|
|
|
//Save USB Address
|
|
|
extern volatile unsigned char g_USBNewAddr;
|
|
|
|
|
|
//indicate which command is processed currently
|
|
|
extern volatile unsigned char g_bulkPhase;
|
|
|
|
|
|
|
|
|
extern UINT8 g_dev_std_req[];
|
|
|
extern UINT8 g_uchUSBStatus;
|
|
|
|
|
|
//global message queue for USB loop tasks.
|
|
|
extern volatile UINT8 g_msgflags;
|
|
|
extern UINT8 g_msgflags1;
|
|
|
|
|
|
|
|
|
//CCID using
|
|
|
extern const UINT8 SmartCard_Reader[];
|
|
|
|
|
|
extern const UINT8 DATA_RATE[];
|
|
|
|
|
|
extern const UINT8 USB_CCID_Device_Descriptor[];
|
|
|
|
|
|
extern const UINT8 USB_CCID_Device_Qualifier_Descriptor[];
|
|
|
|
|
|
extern const UINT8 USB_CCID_Configuration_Descriptor [];
|
|
|
|
|
|
extern const UINT8 USB_CCID_StrDescProduct[];
|
|
|
|
|
|
//CDC using
|
|
|
extern const UINT8 USB_cdc_Device_Descriptor[];
|
|
|
//Device Qualifier Descriptor
|
|
|
extern const unsigned char USB_cdc_Device_Qualifier_Descriptor[];
|
|
|
|
|
|
extern const UINT8 USB_cdc_Configuration_Descriptor[] ;
|
|
|
extern const unsigned char USB_cdc_String_Descriptor[];
|
|
|
|
|
|
//USB Language ID
|
|
|
extern const UINT8 UsbLanguageID[] ;
|
|
|
|
|
|
//Manufacturer String
|
|
|
extern const UINT8 UsbStrDescManufacturer[];
|
|
|
|
|
|
//Product String
|
|
|
extern const UINT8 UsbStrDescProduct[];
|
|
|
|
|
|
//Serial Number
|
|
|
extern const UINT8 UsbStrDescSerialNumber[] ;
|
|
|
|
|
|
//standard Device Descriptor
|
|
|
extern const UINT8 USB_Device_Descriptor[18];
|
|
|
//Device Qualifier Descriptor
|
|
|
extern const UINT8 USB_Device_Qualifier_Descriptor[10];
|
|
|
//configuration descriptor
|
|
|
extern const UINT8 USB_Configuration_Descriptor[];
|
|
|
//standard string Descriptor,serial number
|
|
|
extern const UINT8 USB_String_Descriptor[];
|
|
|
//MBR const data
|
|
|
extern const UINT8 MBR[];
|
|
|
//DBR const data
|
|
|
extern const UINT8 DBR[];
|
|
|
|
|
|
|
|
|
//Save USB Address
|
|
|
extern volatile UINT8 g_USBAddrFlag;
|
|
|
|
|
|
//indicate which sub command is processed currently
|
|
|
extern UINT8 g_subCmd;
|
|
|
|
|
|
//CBW packet
|
|
|
extern UINT32 g_cbwPacket_l[];
|
|
|
extern UINT8* g_cbwPacket;
|
|
|
|
|
|
//CSW packet
|
|
|
extern UINT8 g_cswPacket[];
|
|
|
|
|
|
//USB data buffer1
|
|
|
extern UINT32 g_databuf;
|
|
|
extern UINT32 g_userdatabuf;
|
|
|
|
|
|
//indicate the start sector in reading device
|
|
|
extern UINT32 g_wrLBA;
|
|
|
|
|
|
//indicate the length in Once tranfer from PC to device
|
|
|
extern UINT32 g_transLens;
|
|
|
|
|
|
//indicate the transfer stage of USB1.1
|
|
|
extern UINT8 g_TxRxCounter;
|
|
|
|
|
|
//indicate the mode of reading device
|
|
|
extern UINT8 g_readMode;
|
|
|
extern UINT32 RWDataAddr;
|
|
|
extern UINT32 RWDataLength;
|
|
|
|
|
|
//ChipTest Status
|
|
|
extern UINT16 g_Chiptest_Status; //1-Selftest is running;0-Selftest finished
|
|
|
extern UINT16 g_Chiptest_Result; //0-Selftest pass;Other-Selftest fail
|
|
|
extern UINT16 g_Chiptest_FailtoDo; //0-After Selftest fail,system halt,Other-After fail,system go-on
|
|
|
extern UINT16 g_Chiptest_Enable; //0-ChipTest Enable,Other-ChipTest Disable
|
|
|
//ChipTest Parameters
|
|
|
//ChipTest Parameters
|
|
|
extern UINT16 g_trng_mode;
|
|
|
extern UINT16 g_sm1_protect;
|
|
|
extern UINT16 g_sm4_protect;
|
|
|
extern UINT16 g_rsa_protect;
|
|
|
|
|
|
//Bootloader Enable Flag
|
|
|
extern UINT16 g_BL_Enable;
|
|
|
|
|
|
//Bootloader Password Success Flag
|
|
|
extern UINT16 g_PWD_Result;
|
|
|
|
|
|
//Bootloader Pwd fail Counter
|
|
|
extern UINT16 g_BL_FailCounter;
|
|
|
|
|
|
//Bootloader Pwd Max fail time
|
|
|
extern UINT16 g_BL_MaxFail;
|
|
|
|
|
|
extern const UINT8 USB_hid_Device_Descriptor[18];
|
|
|
|
|
|
//Device Qualifier Descriptor
|
|
|
extern const UINT8 USB_hid_Device_Qualifier_Descriptor[10];
|
|
|
|
|
|
//configuration descriptor
|
|
|
extern const UINT8 USB_hid_Configuration_Descriptor[];
|
|
|
|
|
|
//standard string Descriptor,serial number
|
|
|
extern const UINT8 USB_hid_String_Descriptor[];
|
|
|
extern const UINT8 USB_hid_report_Descriptor2[];
|
|
|
|
|
|
extern unsigned char usb_tx_int_flag ;
|
|
|
|
|
|
/*USB function*/
|
|
|
extern void USBDev_Polling(void);
|
|
|
extern void USB_Init(void);
|
|
|
extern void read_ep_buf(UINT8 *out_buf,UINT32 ep,UINT16 uiLens);
|
|
|
extern void write_ep_buf(UINT32 ep,UINT8 *out_buf,UINT16 uiLens);
|
|
|
extern void USBDev_EP0_SendStall(void);
|
|
|
extern void write_ep0_buf(UINT8 *in_buf,UINT16 uiLen);
|
|
|
extern void USBDev_TestMode(void);
|
|
|
extern void USBDev_Inquiry(void);
|
|
|
extern void USBDev_ModeSense(void);
|
|
|
extern void USBDev_RequestSense(void);
|
|
|
extern void USBDev_ReadCapacity(void);
|
|
|
extern void USBDev_Suspend(void);
|
|
|
extern void USBDev_BusReset(void);
|
|
|
extern void USBDev_Ep0Handler(void);
|
|
|
extern void ClearRx(void);
|
|
|
extern void SetTx(void);
|
|
|
extern void SetFIFO_Addr(UINT32 bufferAddr,UINT8 mode);
|
|
|
extern void USBDev_Packet_BulkIn(UINT8 *pDataBuf,UINT16 uiLength,UINT8 flag);
|
|
|
extern void USB_int_Service(void);
|
|
|
extern void USB_CDC_Init(void);
|
|
|
extern void usb_cdc_send(UINT8 usb_ep, UINT8 *buf, UINT16 len);
|
|
|
extern void usb_cdc_send_null(UINT8 usb_ep);
|
|
|
extern UINT16 usb_cdc_receive(UINT8 usb_ep, UINT8 *buf);
|
|
|
extern void USB_HID_Init(void);
|
|
|
extern UINT16 USB_HID_EP1_RX_ISR(UINT8* pData);
|
|
|
extern void USB_HID_EP1_TX_ISR(UINT8* pData,UINT16 len);
|
|
|
extern void USB_HID_EP_TX_ISR(unsigned char epID,unsigned char* pData,unsigned short len);
|
|
|
extern void USB_HID_BusReset(void);
|
|
|
extern void USB_HID_EP0_ISR(void);
|
|
|
extern UINT16 usb_receive(UINT8 *buf);
|
|
|
extern void usb_send(UINT8 *buf,UINT16 len);
|
|
|
extern void USB_HID_Ep0Handler(void);
|
|
|
extern void USBDev_EP1_TX_ISR(void);
|
|
|
extern void USBDev_EP0_ISR(void);
|
|
|
extern void USBDev_EP1_RX_ISR(void);
|
|
|
extern void UsbSetTXsize(UINT16 size,UINT8 mode);
|
|
|
extern void USBDev_Data_BulkOut(void);
|
|
|
extern void USBDev_Data_BulkIn(void);
|
|
|
extern void USB_MS_ISR(void);
|
|
|
extern void USB_HID_ISR(void);
|
|
|
extern void USB_CDC_ISR(void);
|
|
|
extern void USBC_IRQHandler(void);
|
|
|
extern void USB_HID_Polling(void);
|
|
|
extern void HID_SetFIFO_Addr(UINT32 bufferAddr,UINT8 mode);
|
|
|
|
|
|
extern void USB_CCID_Init(void);
|
|
|
extern UINT16 USB_CCID_receive(UINT8 usb_ep, UINT8 *buf);
|
|
|
extern void USB_CCID_send(UINT8 usb_ep, UINT8 *buf, UINT16 len);
|
|
|
extern void USB_CCID_ISR(void);
|
|
|
|
|
|
#endif /* __USB_DRV_H__ */
|