📄 usbmain.h
字号:
#define MAX_ENDPOINTS (unsigned char)0x3
#define EP0_PACKET_SIZE 16
#define EP1_PACKET_SIZE 16
#define EP2_PACKET_SIZE 64
#define USB_IDLE 0
#define USB_TRANSMIT 1
#define USB_RECEIVE 2
#define USB_CLASS_CODE_TEST_CLASS_DEVICE 0xdc
#define USB_SUBCLASS_CODE_TEST_CLASS_D12 0xA0
#define USB_PROTOCOL_CODE_TEST_CLASS_D12 0xB0
#define DISABLE EX1=0
#define ENABLE EX1=1
#define D12_SETUPPACKET 0x20
#define D12_BUFFER0FULL 0x20
#define D12_BUFFER1FULL 0x40
#define D12_FULLEMPTY 0x01
#define D12_STALL 0x02
#define D12_COMMAND 0x8101
#define D12_DATA 0x8100
/*
//*************************************************************************
// masks
//*************************************************************************
*/
#define USB_RECIPIENT (unsigned char)0x1F
#define USB_RECIPIENT_DEVICE (unsigned char)0x00
#define USB_RECIPIENT_INTERFACE (unsigned char)0x01
#define USB_RECIPIENT_ENDPOINT (unsigned char)0x02
#define USB_REQUEST_TYPE_MASK (unsigned char)0x60
#define USB_STANDARD_REQUEST (unsigned char)0x00
//#define USB_CLASS_REQUEST (unsigned char)0x20
#define USB_VENDOR_REQUEST (unsigned char)0x40
#define USB_REQUEST_MASK (unsigned char)0x0F
#define DEVICE_ADDRESS_MASK 0x7F
/*
//*************************************************************************
// macros
//*************************************************************************
*/
#define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
#define MSB(x) (((x) >> 8) & 0xFF)
#define LSB(x) ((x) & 0xFF)
//#define FALSE 0
//#define TRUE (!FALSE)
/*
//*************************************************************************
// basic typedefs
//*************************************************************************
*/
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef unsigned char BOOL;
//void control_handler();
/*
//*************************************************************************
// structure and union definitions
//*************************************************************************
*/
typedef union _epp_flags
{
struct _flags
{
unsigned char timer : 1;
unsigned char bus_reset : 1;
unsigned char suspend : 1;
unsigned char setup_packet : 1;
unsigned char remote_wakeup : 1;
unsigned char in_isr : 1;
unsigned char control_state : 1;
unsigned char configuration : 1;
unsigned char verbose : 2;
unsigned char ep1_rxdone : 1;
unsigned char ep2_rxdone : 1;
unsigned char ep2_txdone : 1;
unsigned char dma_state : 2;
unsigned char power_down : 1; // Smart Board
} bits;
unsigned short value;
} EPPFLAGS;
typedef struct _device_request
{
unsigned char bmRequestType ;
unsigned char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
} DEVICE_REQUEST;
#define MAX_CONTROLDATA_SIZE 8
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
unsigned short wLength;
unsigned short wCount;
unsigned char * pData;
unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;
/*
typedef struct _IO_REQUEST {
unsigned short uAddressL;
unsigned char bAddressH;
unsigned short uSize;
unsigned char bCommand;
} IO_REQUEST, *PIO_REQUEST;
*/
/*
//*************************************************************************
// USB utility functions
//*************************************************************************
*/
/*
extern void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv);
extern void D12_SetDMA(unsigned char bMode);
extern unsigned char D12_GetDMA(void);
extern unsigned char D12_ReadEndpointStatus(unsigned char bEndp);
extern void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled);
extern void single_transmit(unsigned char * pData, unsigned char len);
extern void stall_ep0(void);
void D12_SendResume(void);
*/
//#define IN_TOKEN_DMA 1
//#define OUT_TOKEN_DMA 0
#define DMA_BUFFER_SIZE 256
#define DMA_IDLE 0
#define DMA_RUNNING 1
#define DMA_PENDING 2
#define SETUP_DMA_REQUEST 0x0471
#define GET_FIRMWARE_VERSION 0x0472
//#define GET_SET_TWAIN_REQUEST 0x0473
#define GET_BUFFER_SIZE 0x0474
//*********************************************************************
// D12
//*********************************************************************
void outportcmd(unsigned char value);
void outportdata(unsigned char value);
unsigned char inportb(unsigned int Addr);
void D12_SetEndpointEnable(unsigned char bEnable);
void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable);
void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv);
void D12_SetDMA(unsigned char bMode);
unsigned char D12_GetDMA(void);
unsigned int D12_ReadInterruptRegister(void);
unsigned char D12_SelectEndpoint(unsigned char bEndp);
unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp);
unsigned char D12_ReadEndpointStatus(unsigned char bEndp);
void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled);
void D12_SendResume(void);
unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf);
unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf) ;
//unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf);
void D12_AcknowledgeEndpoint(unsigned char endp);
//unsigned short D12_ReadChipID(void);
unsigned char D12_WriteEndpoint5(unsigned char len);
//*********************************************************************88
// CHAP9
//*************************************************************************8
void get_status(void);
void clear_feature(void);
void set_feature(void);
void set_address(void);
void get_descriptor(void);
void get_configuration(void);
void set_configuration(void);
void get_interface(void);
void set_interface(void);
void reserved(void);
void read_write_register(void);
void single_transmit(unsigned char * buf, unsigned char len);
void code_transmit(unsigned char code * pRomData, unsigned short len);
void stall_ep0(void);
void init_unconfig(void);
void init_config(void);
#define NUM_ENDPOINTS 4
#define CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) \
+ sizeof(USB_INTERFACE_DESCRIPTOR) \
+ (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR))
//*********************************************************************88
// ISR
//*************************************************************************8
void fn_usb_isr();
extern void bus_reset(void);
extern void ep0_txdone(void);
extern void ep0_rxdone(void);
extern void ep1_txdone(void);
extern void ep1_rxdone(void);
extern void main_txdone(void);
extern void main_rxdone(void);
//extern void dma_eot(void);
//unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
//unsigned char idata EpBuf[EP2_PACKET_SIZE];
//IO_REQUEST idata ioRequest;
//unsigned char ioSize, ioCount;
//unsigned long ClockTicks = 0;
//unsigned char xdata MainEpBuf[256] _at_ 0x0200;
//unsigned char xdata MainEpBuf2[256] _at_ 0x0300;
// unsigned char xdata MainEpBuf5[256] _at_ 0x0600;
// unsigned char xdata MainEpBuf6[256] _at_ 0x0700;
// unsigned char xdata MainEpBuf7[256] _at_ 0x0800;
//data control
void unpack(void);
void check_pack(void);
void trsusb_num_rate(unsigned int xiaoshi);
void trsusb_rate(unsigned int xiaoshi);
void trsusb_rate_beg(void);
void trsusb_ydshj(void);
//void trsusb_2daylich(void);
//void trsusb_2dayrate(void);
void trsusb_2dayover(void);
void trsusb_down_time(void);
//计时标记
unsigned long int xdata usbclk_cnt=0;
//error flag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -