www.pudn.com > USBDriver.rar > Chap_9.h


/****************************************Copyright (c)************************************************** 
**                               广州周立功单片机发展有限公司 
**                                     研    究    所 
**                                        产品一部  
** 
**                                 http://www.zlgmcu.com 
** 文   件   名: Chap_9.h 
** 最后修改日期: 2004年7月2日 
** 描        述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 协议层头文件 
** 版	     本: V1.0 
**********************************************************************************************************/ 
 
#ifndef __CHAP_9_H__ 
#define __CHAP_9_H__ 
 
#define MSB(x)    (((x) >> 8) & 0xFF) 
 
#define MAX_ENDPOINTS      (INT8U)0x3 
 
// 下面的值为 Get Status命令的返回值 
#define USB_GETSTATUS_SELF_POWERED                0x01 
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED       0x02 
 
/********* USB  状态取值 **************/  
#define USB_IDLE           0 
#define USB_TRANSMIT       1 
#define USB_RECEIVE        2 
 
 
   //************************************************************************* 
   // Chap_9.c 使用的结构体 
   //************************************************************************* 
/************ USB事件结构体 *********************/ 
typedef union _epp_flags 
{ 
	struct _flags 
	{ 
		unsigned  remote_wakeup		   	: 1; 
		unsigned  control_state			: 2; 
		unsigned  configuration			: 1; 
		unsigned  command				: 1; 
	} bits; 
	INT16U value; 
} EPPFLAGS; 
 
typedef struct _device_request 
{ 
	INT8U bmRequestType; 
	INT8U bRequest; 
	INT16U wValue; 
	INT16U wIndex; 
	INT16U wLength; 
} DEVICE_REQUEST; 
 
 
/*********** 控制传输结构体 ************/ 
#define MAX_CONTROLDATA_SIZE	8 
 
typedef struct _control_xfer 
{ 
	DEVICE_REQUEST DeviceRequest; 
	INT16U wLength; 
	INT16U wCount; 
	INT8U * pData; 
	INT8U dataBuffer[MAX_CONTROLDATA_SIZE]; 
} CONTROL_XFER; 
 
 
   //************************************************************************* 
   // USB 标准设备请求函数 
   //************************************************************************* 
 
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 stall_ep0(void); 
void ep0_txdone(void); 
void ep0_rxdone(void); 
 
void init_unconfig(void); 
void init_config(void); 
void single_transmit(INT8U * pData, INT8U len); 
void code_transmit(INT8U * pRomData, INT16U len); 
void control_handler(void); 
 
#endif