📄 catprotype.h
字号:
USBFM.UEPIR19_4.BYTE = 0x13;\
USBFM.UEPIR20_0.BYTE = 0x04;\
USBFM.UEPIR20_1.BYTE = 0x14;\
USBFM.UEPIR20_2.BYTE = 0x00;\
USBFM.UEPIR20_3.BYTE = 0x00;\
USBFM.UEPIR20_4.BYTE = 0x14;\
USBFM.UEPIR21_0.BYTE = 0x04;\
USBFM.UEPIR21_1.BYTE = 0x10;\
USBFM.UEPIR21_2.BYTE = 0x00;\
USBFM.UEPIR21_3.BYTE = 0x00;\
USBFM.UEPIR21_4.BYTE = 0x15;\
USBFM.UEPIR22_0.BYTE = 0x04;\
USBFM.UEPIR22_1.BYTE = 0x1C;\
USBFM.UEPIR22_2.BYTE = 0x00;\
USBFM.UEPIR22_3.BYTE = 0x00;\
USBFM.UEPIR22_4.BYTE = 0x16;
#define CLEAR_SETTING unit_state[0] = 0x00;
/* StartUp.c */
/* pull up D+ */
#define ENABLE_DPLUS_PULLUP PORT.P3DR.BYTE |= 0x40; /* -1-- ---- */ /* Pullup function is used to P36 pin(Active High) */
//#define ENABLE_DPLUS_PULLUP PORT.P3DR.BYTE &= 0xBF; /* -0-- ---- */ /* Pullup function is used to P36 pin(Active High) */
/* disable pull up D+ */
//#define DISABLE_DPLUS_PULLUP PORT.P3DR.BYTE &= ~0x40; /* -0-- ---- */ /* Pullup function is used to P36 pin(Active High) */
#define DISABLE_DPLUS_PULLUP PORT.P3DR.BYTE &= 0xBF; /* -0-- ---- */ /* Pullup function is used to P36 pin(Active High) */
//#define DISABLE_DPLUS_PULLUP PORT.P3DR.BYTE |= 0x40; /* -1-- ---- */ /* Pullup function is used to P36 pin(Active High) */
enum PresentStateType {WAIT,TRANS_IN,TRANS_OUT,STALL};
enum SetCompleteType {COMPLETE,INCOMPLETE};
enum TransModeType {CONTROL,BULK,INTERRUPT};
enum DecControlCmdDoneType {CTRL_COMMAND_DONE,UNKNOWN_CTRL_COMMAND};
typedef struct BuffType {
unsigned char* sPtr;
unsigned char* ePtr;
} BuffType;
typedef struct InterruptType {
union {
unsigned long LONG;
struct {
unsigned char InterruptRegister0;
unsigned char InterruptRegister1;
unsigned char InterruptRegister2;
unsigned char InterruptRegister3;
} BYTE;
} INTERRUPT;
} InterruptType;
typedef struct LinkType {
/* interrupt flag information ( these bits are concerned next informations ) */
/* Endpoint Information */
/* call routine */
const unsigned long InterruptBitStream; /* 0x00000000 */
const unsigned char EpInfoNum; /* 0 */
const unsigned char DataBuffNum; /* 0 */
const void (*CallOn)(unsigned long, unsigned char, unsigned char); /* Act**** */
} LinkType;
typedef struct EpInfoType { /* each Endpoint information */
const unsigned char epNumber; /* Enspoint number */
enum TransModeType transMode; /* transfer type */
volatile unsigned char* FifoSize; /* FIFO size register address
if Endpoint dose not have FIFO size register, it's writeFifoSizeGVar[] address */
volatile unsigned char* epdrPtr; /* Endpoint data size regizter address */
volatile unsigned long* epdrLPtr; /* Endpoint data size regizter address */
const unsigned char putEnable; /* packet enable bit pattern */
const unsigned char getFinish; /* read finish bit pattern */
const unsigned char fifoClearEnable; /* FIFO clear bit pattern */
const unsigned char stallEnable; /* Endpoint stall bit pattern */
enum PresentStateType PresentState; /* USB transfer state */
unsigned char MaxPacketSize; /* Max packet size */
} EpInfoType;
typedef struct ControlType { /* chnage received data */
unsigned char* beginPtr; /* start point */
unsigned char* endPtr; /* end point */
} ControlType;
typedef union RequestType { /* bmRequestType definition */
unsigned char byteVal;
struct bitValType {
unsigned char d7:1; /* data transfer direction */
unsigned char d65:2; /* command type "standard" "class" "vendor" */
unsigned char d40:5; /* receive side */
} bitValType;
} RequestType;
typedef union SetupDataType { /* Setup Data definition */
unsigned char byteVal[8];
struct access0Type {
RequestType bmRequest; /* request feature */
unsigned char bRequest; /* request number */
unsigned short wValue; /* Word-sized field that varies according to request (Word) */
unsigned short wIndex; /* Word-sized field that varies according to request ; typically used to pass an index or offset (Word) */
unsigned short wLength; /* Number of bytes to transfer if there is a Data Stage (Word) */
} access0Type;
struct access1Type {
unsigned char bmRequest; /* request feature */
unsigned char bRequest; /* request number */
unsigned char wValue_B1; /* Word-sized field that varies according to request 1 (Byte) */
unsigned char wValue_B2; /* Word-sized field that varies according to request 2 (Byte) */
unsigned char wIndex_B1; /* Word-sized field that varies according to request 1 ; typically used to pass an index or offset (Byte) */
unsigned char wIndex_B2; /* Word-sized field that varies according to request 2 ; typically used to pass an index or offset (Byte) */
unsigned char wLength_B1; /* Number of bytes to transfer if there is a Data Stage 1 (Byte) */
unsigned char wLength_B2; /* Number of bytes to transfer if there is a Data Stage 2 (Byte) */
} access1Type;
} SetupDataType;
typedef struct DiscriptorType { /* Descriptor */
unsigned short length;
unsigned char* d_data;
} DiscriptorType;
typedef union CBWDataType { /* CBW struct */
unsigned char byteVal[31];
struct cbwType {
unsigned long dCBWSignature; /* using to recognize CBW */
unsigned long dCBWTag; /* Comand Block Tag */
unsigned long dCBWDataTransferLength; /* HOST expectant data length */
unsigned char bmCBWFlags; /* data transfer direction */
unsigned char bCBWLUN; /* LUN */
unsigned char bCBWCBLength; /* CBWCB command length */
unsigned char cmdOpeCode; /* command Operation Code */
unsigned char cmd1; /* command */
unsigned char cmd2; /* command */
unsigned char cmd3; /* command */
unsigned char cmd4; /* command */
unsigned char cmd5; /* command */
unsigned char cmd6; /* command */
unsigned char cmd7; /* command */
unsigned char cmd8; /* command */
unsigned char cmd9; /* command */
unsigned char cmd10; /* command */
unsigned char cmd11; /* command */
unsigned char cmd12; /* command */
unsigned char cmd13; /* command */
unsigned char cmd14; /* command */
unsigned char cmd15; /* command */
} cbwType;
} CBWDataType;
typedef union CSWDataType { /* CSW struct */
unsigned char byteVal[13];
struct cswMeaningType {
unsigned long dCSWSignature; /* using to recognize CSW */
unsigned long dCSWTag; /* related Tag for CBW */
signed long dCSWDataResidue; /* difference between HOST expectant data length and executed data length */
unsigned char bCSWStatus; /* command status */
} cswMeaningType;
} CSWDataType;
typedef union ReturnDataType {
unsigned long longVal[16];
unsigned char byteVal[64];
} ReturnDataType;
typedef union MBRDataType { /* MBR */
unsigned char byteVal[532];
struct mbrMeaningType {
unsigned char bsl[446];
unsigned char pt1[16];
unsigned char pt2[16];
unsigned char pt3[16];
unsigned char pt4[16];
unsigned char chknum[2];
} mbrMeaningType;
} MBRDataType;
typedef union PBRDataType { /* PBR */
unsigned char byteVal[62];
struct pbrMeaningType {
unsigned char jump[3]; /* Jump command to IPL */
unsigned char dummy[8]; /* name */
unsigned char bytePerSector[2]; /* byte numbers per one sector */
unsigned char sectorPerClaster; /* sector numbers per one claster */
unsigned char reserveSectorNum[2]; /* reserved sector numbers */
unsigned char fat; /* FAT numbers */
unsigned char root[2]; /* entry numbers */
unsigned char allSector[2]; /* all sector numbers */
unsigned char mediaDiscripter; /* media descriptor */
unsigned char sectorPerFat[2]; /* sector numbers per one FAT */
unsigned char sectorPerTrak[2]; /* sector numbers per one track */
unsigned char head[2]; /* head numbers */
unsigned char hideSector[4]; /* hide sector numbers */
unsigned char allSectorLarge[4]; /* hide sector numbers */
unsigned char dummy2[18];
unsigned char reserve[8];
} pbrMeaningType;
} PBRDataType;
// variable
extern SetupDataType ep0PacketGVar;
extern LinkType jump[];
extern unsigned char writeFifoSizeGVar[];
extern BuffType BufPtr[];
extern BuffType contCMDGPtr;
extern InterruptType interruptEnableBitsGVar;
extern ControlType transStageGPtr;
extern EpInfoType EpInfo[];
extern DiscriptorType deviceDiscriptorGVar[]; // Descriptor information
extern DiscriptorType configurationDiscriptorGVar[]; // Descriptor information
extern DiscriptorType stringDiscriptorGVar[]; // Descriptor information
extern CBWDataType cbwDataGVar[];
extern CSWDataType cswDataGVar[];
extern unsigned char ansInquiryData[];
extern BuffType botCmdGPtr;
extern BuffType botDataGPtr;
extern ReturnDataType returnData[];
extern unsigned long readCapaData[];
extern unsigned char reqSensDataGVar[];
extern unsigned char controlBeginGVar[];
/* Function */
extern void error(void);
extern unsigned long DecBotCmd(void);
extern void ActBulkOnly(unsigned long ,unsigned char ,unsigned char);
extern void DecStandardCommands(void);
extern enum DecControlCmdDoneType DecBOTClassCommands(void);
extern enum DecControlCmdDoneType DecVenderCommands(void);
extern short GetPacket(EpInfoType*,BuffType*);
extern short PutPacket(EpInfoType*,BuffType*);
extern short GetPacket4S(EpInfoType*,BuffType*);
extern short PutPacket4S(EpInfoType*,BuffType*);
extern enum SetCompleteType SetControlOutContents(ControlType*,BuffType*);
extern short ActBulkOut(unsigned long,unsigned char,unsigned char);
extern short ActBulkIn(unsigned long,unsigned char,unsigned char);
extern void ActBulkInReady(unsigned long,unsigned char,unsigned char);
extern void ActControlIn(unsigned long,unsigned char);
extern void ActControlOut(unsigned long,unsigned char);
extern void ActControl(unsigned long,unsigned char, unsigned char);
extern void ActControlInOut(unsigned long, unsigned char, unsigned char);
extern void SetUsbModule(unsigned long ,unsigned char, unsigned char );
extern void ActBusReset(unsigned long ,unsigned char, unsigned char );
extern void ActBusVcc(unsigned long ,unsigned char, unsigned char );
extern unsigned long ConvRealn(unsigned char* ,unsigned char );
extern unsigned long ConvReflexn(unsigned char* ,unsigned char );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -