www.pudn.com > data-isotransfer.rar > TestHeader.h


 
#ifndef TESTHEADER_H		 
#define TESTHEADER_H 
 
typedef unsigned char	BYTE; 
typedef unsigned short	WORD; 
typedef unsigned long	DWORD; 
typedef bit		BOOL; 
 
#define	TRUE 	1 
#define FALSE	0 
 
#define DEVICE_DSCR		0x01		 
#define CONFIG_DSCR		0x02		 
#define STRING_DSCR		0x03		 
#define INTRFC_DSCR		0x04		 
#define ENDPNT_DSCR		0x05		 
 
#define SC_GET_STATUS			0x00	 
#define SC_CLEAR_FEATURE		0x01	 
#define SC_RESERVED			0x02	 
#define SC_SET_FEATURE			0x03	 
#define SC_SET_ADDRESS			0x05	 
#define SC_GET_DESCRIPTOR		0x06	 
#define SC_SET_DESCRIPTOR		0x07	 
#define SC_GET_CONFIGURATION	        0x08	 
#define SC_SET_CONFIGURATION	        0x09	 
#define SC_GET_INTERFACE		0x0a	 
#define SC_SET_INTERFACE		0x0b	 
#define SC_SYNC_FRAME			0x0c	 
#define SC_ANCHOR_LOAD			0xa0	 
 
#define GD_DEVICE			0x01	 
#define GD_CONFIGURATION		0x02	 
#define GD_STRING			0x03 
 
#define GS_DEVICE			0x80	 
#define GS_INTERFACE			0x81	 
#define GS_ENDPOINT			0x82	 
 
#define FT_DEVICE			0x00	 
#define FT_ENDPOINT			0x02	 
 
typedef struct		 
{ 
	BYTE	length;	 
	BYTE	type;	 
	BYTE	spec_ver_minor;	 
	BYTE	spec_ver_major;	 
	BYTE	dev_class;	 
	BYTE	sub_class;	 
	BYTE	protocol;	 
	BYTE	max_packet;	 
	WORD	vendor_id;	 
	WORD	product_id;	 
	WORD	version_id;	 
	BYTE	mfg_str;	 
	BYTE	prod_str;	 
	BYTE	serialnum_str;	 
	BYTE	configs;	 
}DEVICEDSCR; 
 
typedef struct 
{ 
	BYTE	length;		 
	BYTE	type;		 
	WORD	config_len;	 
	BYTE	interfaces;	 
	BYTE	index;		 
	BYTE	config_str;	 
	BYTE	attrib;		 
	BYTE	power;		 
}CONFIGDSCR; 
 
typedef struct 
{ 
	BYTE	length;		 
	BYTE	type;		 
	BYTE	index;		 
	BYTE	alt_setting;	 
	BYTE	ep_cnt;		 
	BYTE	class;		 
	BYTE	sub_class;	 
	BYTE	protocol;	 
	BYTE	interface_str;	 
}INTRFCDSCR;    
 
typedef struct 
{ 
	BYTE	length;		 
	BYTE	type;		 
	BYTE	addr;		 
	BYTE	ep_type;	 
	BYTE	mp_L;		 
	BYTE	mp_H; 
	BYTE	interval;	 
}ENDPNTDSCR;    
 
typedef struct 
{ 
	BYTE	length;		 
	BYTE	type;		 
}STRINGDSCR; 
 
#define	INT0_VECT	0 
#define	TMR0_VECT	1 
#define	INT1_VECT	2 
#define	TMR1_VECT	3 
#define	COM0_VECT	4 
#define	TMR2_VECT	5 
#define	WKUP_VECT	6 
#define	COM1_VECT	7 
#define	USB_VECT	8 
#define	I2C_VECT	9 
#define	INT4_VECT	10 
#define	INT5_VECT	11 
#define	INT6_VECT	12 
 
#define	SUDAV_USBVECT	(0 << 2) 
#define	SOF_USBVECT	(1 << 2) 
#define	SUTOK_USBVECT	(2 << 2) 
#define	SUSP_USBVECT	(3 << 2) 
#define	URES_USBVECT	(4 << 2) 
#define	SPARE_USBVECT	(5 << 2) 
#define	IN0BUF_USBVECT	(6 << 2) 
#define	OUT0BUF_USBVECT	(7 << 2) 
#define	IN1BUF_USBVECT	(8 << 2) 
#define	OUT1BUF_USBVECT	(9 << 2) 
#define	IN2BUF_USBVECT	(10 << 2) 
#define	OUT2BUF_USBVECT	(11 << 2) 
#define	IN3BUF_USBVECT	(12 << 2) 
#define	OUT3BUF_USBVECT	(13 << 2) 
#define	IN4BUF_USBVECT	(14 << 2) 
#define	OUT4BUF_USBVECT	(15 << 2) 
#define	IN5BUF_USBVECT	(16 << 2) 
#define	OUT5BUF_USBVECT	(17 << 2) 
#define	IN6BUF_USBVECT	(18 << 2) 
#define	OUT6BUF_USBVECT	(19 << 2) 
#define	IN7BUF_USBVECT	(20 << 2) 
#define	OUT7BUF_USBVECT	(21 << 2) 
 
//Macros 
#define MSB(word)		(BYTE)(((WORD)word >> 8) & 0xff) 
#define LSB(word)		(BYTE)((WORD)word & 0xff) 
 
#define SWAP_ENDIAN(word)	((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\ 
				((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\ 
				((BYTE*)&word)[0] ^= ((BYTE*)&word)[1] 
 
 
#define EZUSB_IRQ_CLEAR()	EXIF &= ~0x10		 
#define EZUSB_CLEAR_RSMIRQ()		(EICON &= ~0x20)	 
#define EZUSB_STALL_EP0()		EP0CS |= bmEPSTALL  
#define EZUSB_STALL_EP(ep_id)  		EPIO[ep_id].cntrl = bmEPSTALL 
#define EZUSB_UNSTALL_EP(ep_id)		EPIO[ep_id].cntrl = 0 
#define EZUSB_RESET_DATA_TOGGLE(ep)     TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x07));\ 
                                        TOGCTL |= 0x20 
#define EZUSB_EXTWAKEUP()		(USBCS & bmRWAKEUP) 
#define EZUSB_SET_EP_BYTES(ep_id,count)	EPIO[ep_id].bytes = count  
#define EZUSB_UNARM_EP(ep_id)  		EPIO[ep_id].cntrl = bmEPBUSY 
 
#endif