📄 datatype.h
字号:
/*********************************************************************
** Module Name: DataType.h **
** Author: Zhangquan **
** Version: 1.0 **
** CreateDate: 2001-05-18 **
** Description: Definitions Dataype **
** Remark: **
** Revision History: 2001-05-18 **
**********************************************************************/
#ifndef __DATATYPE__
#define __DATATYPE__
//#include <linux/interrupt.h>
//#include <linux/kernel.h>
//#include <linux/types.h>
//#include <asm/segment.h>
//#include <linux/tqueue.h>
//#include <linux/sched.h>
typedef unsigned char UCHAR;
typedef char SCHAR;
typedef unsigned short UWORD;
typedef short SWORD;
typedef unsigned long ULONG;
typedef long SLONG;
typedef unsigned int UINT;
typedef int INT;
/*TPBulk*/
// USB Class Request Functions and Public Functions
/* Host Device Disagreement Matrix*/
enum _HOST_DEV_DISAGREE
{
CASEOK = 0,
CASE1,
CASE2,
CASE3,
CASE4,
CASE5,
CASE6,
CASE7,
CASE8,
CASE9,
CASE10,
CASE11,
CASE12,
CASE13,
CASECBW
};
typedef union _D12FLAGS
{
struct _D12FSM_FLAGS
{
UCHAR bus_reset : 1;
UCHAR suspend : 1;
UCHAR At_IRQL1 : 1;
UCHAR configuration : 1;
UCHAR remote_wakeup : 1;
UCHAR Reserved00 : 3;
UCHAR DCP_state : 3; // Default Control Pipe FSM state
UCHAR DCP_IOorMEM : 1; // Access Data via DCP from/to IO data port or Memory
UCHAR BOT_state : 4; // Default Bulk Out Pipe FSM state
UCHAR BOT_IOorMEM : 1; // Store Data via Bulk Out Pipe to IO port(ATA dev) or Memory
UCHAR verbose : 1; // Debug info
UCHAR timer : 1;
UCHAR Reserved20 : 6;
UCHAR Reserved30;
} bits;
ULONG value;
} D12FLAGS;
/*TPBulk*/
/*Protocol*/
#define MAX_CONTROLDATA_SIZE 0x08
typedef struct _device_request
{
UCHAR bmRequestType;
UCHAR bRequest;
UWORD wValue;
UWORD wIndex;
UWORD wLength;
} DEVICE_REQUEST;
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
ULONG wLength; //UWORD to ULONG Modified by Mike Chan
ULONG wCount; //UWORD to ULONG Modified by Mike Chan
UCHAR *pData;
UCHAR dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;
/*Protocol*/
/*PDIUSBD12*/
typedef union _epp_flags
{
struct _flags
{
UCHAR timer : 1;
//UCHAR bus_reset : 1;
//UCHAR suspend : 1;
//UCHAR setup_packet : 1;
UCHAR remote_wakeup : 1;
UCHAR in_isr : 1;
UCHAR control_state : 2;
UCHAR configuration : 1;
UCHAR verbose : 1;
UCHAR do_ep1_rxdone : 1; //////ep1_rxdone
UCHAR setup_dma : 1;
UCHAR dma_state : 2;
UCHAR dma_disable : 1;
UCHAR set_d12 : 1;
} bits;
UWORD value;
} EPPFLAGS;
/*PDIUSBD12*/
/*define begin*/
#define USB_DEVICE_DESCRIPTOR_TYPE 0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
#define USB_STRING_DESCRIPTOR_TYPE 0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
// Endpoint direction bit, stored in address
#define USB_DATA_TRANSMIT_DEVICE_TO_HOST 0x80
// USB defined Feature selectors
#define USB_FEATURE_ENDPOINT_STALL 0x0000
#define USB_FEATURE_REMOTE_WAKEUP 0x0001
// USB defined request codes see chapter 9 of the USB 1.1 specifcation for more information.
// These are the correct values based on the USB 1.1 specification
#define USB_REQUEST_GET_STATUS 0x00
#define USB_REQUEST_CLEAR_FEATURE 0x01
#define USB_REQUEST_SET_FEATURE 0x03
#define USB_REQUEST_SET_ADDRESS 0x05
#define USB_REQUEST_GET_DESCRIPTOR 0x06
#define USB_REQUEST_SET_DESCRIPTOR 0x07
#define USB_REQUEST_GET_CONFIGURATION 0x08
#define USB_REQUEST_SET_CONFIGURATION 0x09
#define USB_REQUEST_GET_INTERFACE 0x0a
#define USB_REQUEST_SET_INTERFACE 0x0b
#define USB_REQUEST_SYNC_FRAME 0x0c
#define FALSE 0x00
#define TRUE (!FALSE)
#define CSW_GOOD 0x00
#define CSW_FAIL 0x01
#define CSW_PHASE_ERROR 0x02
#define CBW_SIGNATURE 0x43425355
#define CSW_SIGNATURE 0x55534253//53425355
#define CBW_FLAG_IN 0x80
#define MAX_CDBLEN 0x10
// Normal FSM for Set Command
// IDLE -> SETUP[IRQL-1] -> DataOut[IRQL_1] -> RequestProc[IRQL_0] -> Status Stage
// Normal FSM for Get Command
// IDLE -> SETUP[IRQL-1] -> RequestProc[IRQL_0] -> DataIn[IRQL-1]-> Status Stage
#define USBFSM_IDLE 0x00
#define USBFSM_XMIT 0x01
#define USBFSM_RCV 0x02
#define USBFSM_INPROCESS 0x03
#define USBFSM_STATUS 0x04
#define USBFSM_ABORT 0x05
#define USBFSM_INPROCESS2 0x06
#define USBFSM_STALL 0x07
// FSM for Default Control Pipe
#define USBFSM4DCP_IDLE USBFSM_IDLE
#define USBFSM4DCP_DATAIN USBFSM_XMIT
#define USBFSM4DCP_DATAOUT USBFSM_RCV
#define USBFSM4DCP_REQUESTPROC USBFSM_INPROCESS2
#define USBFSM4DCP_STALL USBFSM_STALL
#define USBFSM4DCP_HANDSHAKE USBFSM_STATUS
#define USBFSM4DCP_SETUPPROC USBFSM_INPROCESS
// FSM for Bulk-Only Transfer
#define USBFSM4BOT_STALL USBFSM_STALL
#define USBFSM4BOT_IDLE USBFSM_IDLE
#define USBFSM4BOT_DATAIN USBFSM_XMIT
#define USBFSM4BOT_DATAOUT USBFSM_RCV
#define USBFSM4BOT_CBWPROC USBFSM_INPROCESS
//#define USBFSM4BOT_CSWPROC USBFSM_INPROCESS2
#define USBFSM4BOT_CSW USBFSM_STATUS
#define USBFSM4BOT_CBW USBFSM_ABORT
#define USBFSM4BOT_DATAOVER 0x08
//added ?????? 0x10X
#define USB_CLASS_REQUEST_USBSTOR_RESET 0xff
#define USB_CLASS_REQUEST_USBSTOR_GETMAXLUN 0xfe
#define ATAPI_FORMATUNIT 0x04
#define ATAPI_READFORMATCAPA 0x23
#define ATAPI_RAEDCAPACITY 0x25
#define ATAPI_INQUIRE 0x12
#define ATAPI_REQUESTSENSE 0x03
//************************************************************************
#define ATAPI_MODESELECT15 0x15
#define ATAPI_MODESELECT55 0x55
#define ATAPI_MODESENSE1A 0x1a
#define ATAPI_MODESELECT5A 0x5A
#define ATAPI_TESTUNIT 0x00
#define ATAPI_REZEROUNITPACKET 0x01
#define ATAPI_SEEKPACKET0B 0x0B
#define ATAPI_SEEKPACKET2B 0x2B
#define ATAPI_SENDDIAGPACKET 0x1D
#define ATAPI_STARTSTOPUNIT 0x1B
#define ATAPI_READ 0x08
#define ATAPI_READ10 0x28
#define ATAPI_WRITE10 0x2A
#define ATAPI_WRITE 0x0A
#define ATAPI_MODESENSE5A 0x5A
#define ATAPI_TESTUNIT 0x00
#define ATAPI_NONSENSE 0x06 //Command 0x06:Non-sense
#define MAX_ENDPOINTS 0x03
#define EP0_TX_FIFO_SIZE 16
#define EP0_RX_FIFO_SIZE 16
#define EP0_PACKET_SIZE 16
#define EP1_TX_FIFO_SIZE 16
#define EP1_RX_FIFO_SIZE 16
#define EP1_PACKET_SIZE 16
#define EP2_TX_FIFO_SIZE 64
#define EP2_RX_FIFO_SIZE 64
#define EP2_PACKET_SIZE 64
#define USB_IDLE 0
#define USB_TRANSMIT 1
#define USB_RECEIVE 2
// Mask
#define USB_RECIPIENT 0x1f
#define USB_RECIPIENT_DEVICE 0x00
#define USB_RECIPIENT_INTERFACE 0x01
#define USB_RECIPIENT_ENDPOINT 0x02
#define USB_REQUEST_TYPE_MASK 0x60
#define USB_STANDARD_REQUEST 0x00
#define USB_CLASS_REQUEST 0x20
#define USB_VENDOR_REQUEST 0x40
#define USB_REQUEST_MASK 0x0f
#define DEVICE_ADDRESS_MASK 0x7f
#define NUM_ENDPOINTS 0x02
#define CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) + sizeof(USB_INTERFACE_DESCRIPTOR) + (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR))
#define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
// PDIUSBD12 Command
// Initialization Commands
#define D12_CMD_SET_ADDRESS_ENABLE 0xd0
#define D12_CMD_SET_ENDPOINT_ENABLE 0xd8
#define D12_CMD_SET_MODE 0xf3
#define D12_CMD_SET_DMA 0xfb
// Data Flow Commands
#define D12_CMD_READ_INTERRUPT_REGISTER 0xf4
#define D12_CMD_SELECT_ENDPOINT 0x00
#define D12_CMD_READ_STATUS 0x40
#define D12_CMD_READ_BUFFER 0xf0
#define D12_CMD_WRITE_BUFFER 0xf0
#define D12_CMD_SET_STATUS 0x40
#define D12_CMD_ACKNOWLEDGE_SETUP 0xf1
#define D12_CMD_CLEAR_BUFFER 0xf2
#define D12_CMD_VALIDATE_BUFFER 0xfa
// General Commands
#define D12_CMD_SEND_RESUME 0xf6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -