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


/****************************************Copyright (c)************************************************** 
**                               ¹ãÖÝÖÜÁ¢¹¦µ¥Æ¬»ú·¢Õ¹ÓÐÏÞ¹«Ë¾ 
**                                     ÑÐ    ¾¿    Ëù 
**                                        ²úÆ·Ò»²¿  
** 
**                                 http://www.zlgmcu.com 
** 
** ÎÄ   ¼þ   Ãû: D12Driver.h 
** ×îºóÐÞ¸ÄÈÕÆÚ: 2004Äê7ÔÂ2ÈÕ 
** Ãè        Êö: PDIUSBD12 É豸¶ËÇý¶¯³ÌÐò Ó¦ÓòãÍ·Îļþ 
** °æ	     ±¾: V1.0 
**********************************************************************************************************/ 
 
/**************** ¶¨Òå USB ÊÕ·¢´íÎóÂë ***************************/ 
#define USB_NO_ERR				0x00		//ÕýÈ· 
#define USB_ERR_NO_CONFIG		0x01		//USB×ÜÏßδÅäÖÃÍê³É´íÎó 
#define USB_ERR_BUFF_INVALID	0x02		//½ÓÊÕ»ò·¢ËÍ»º³åÇø´íÎó§ 
#define USB_ERR_WR_TIMEOUT		0x03		//½ÓÊÕ»ò·¢Ëͳ¬Ê±´íÎó 
 
 
/*************** ¶¨Òå USB ½ÓÊÕ»ò·¢ËÍ¿ØÖÆ¿é **********************/ 
typedef struct tagUsb_Struct 
{ 
	INT8U   *pBuff[OS_LOWEST_PRIO];			//½ÓÊÕ»ò·¢ËÍ»º³åÇøÖ¸ÕëÊý×é 
	 
	INT32U  Max[OS_LOWEST_PRIO];			//½ÓÊÕ»ò·¢ËÍ×Ö½ÚÊý, Ò²×÷Ϊ½ÓÊÕ»ò·¢ËÍÍê³É±êÖ¾ 
	INT32U  Cnt;							//½ÓÊÕ»ò·¢ËÍ×Ö½Ú¼ÆÊýÆ÷ 
	 
	INT8U   Grp;							//µÈ´ý×é	 
	INT8U   Tbl[OS_RDY_TBL_SIZE];			//µÈ´ýÁбí 
			 
	INT8U   Sem;							//¶Ëµã×ÊÔ´ÐźÅÁ¿	 
	INT8U   Prio;							//µ±Ç°Õ¼Óøö˵ãµÄÈÎÎñÓÅÏȼ¶ 
}CTRL_USB; 
 
 
/*************** Setup°ü´¦ÀíÈÎÎñ¶ÑÕ»  ****************************/ 
extern OS_STK  TaskSetupStk[128]; 
 
 
/**************** D12Driver.cÄÚ²¿Ê¹Óú¯Êý ************************/ 
INT8U USB_GetHighPrio(CTRL_USB *pUsb); 
void USB_InsertPrio(CTRL_USB *pUsb,INT8U prio); 
void USB_DelPrio(CTRL_USB *pUsb,INT8U prio); 
 
INT8U USB_ReadPort(INT8U endp,CTRL_USB *pUsb,INT32U len,INT8U *recbuff,INT16U timeout); 
INT8U USB_WritePort(INT8U endp,INT32U eppsize,INT8U buffnums,CTRL_USB *pUsb, 
					INT8U *sendbuff,INT32U len,INT16U timeout); 
 
void USB_ReadISR(CTRL_USB *pUsb,INT8U endp,INT32U eppsize,INT8U buffnums);	 
void USB_WriteISR(CTRL_USB *pUsb,INT8U endp,INT32U eppsize,INT8U buffnums);		 
	      
INT8U USB_RW_Result(INT8U endp,CTRL_USB *pUsb,INT16U timeout); 
INT8U USB_RW_Param(CTRL_USB *pUsb,INT32U len,INT8U *pbuff); 
 
/**************************************************** 
	  D12Driver.c  ÌṩµÄAPIº¯Êý  
*****************************************************/ 
 
/************************************************************ 
** º¯ÊýÃû³Æ: INT8U Init_D12(void) 
** ¹¦ÄÜÃèÊö: ÉèÖÃD12ÓëÓ²¼þµÄÁ¬½Ó, ³õʼ»¯D12,  ¸´Î»D12 
** Êä¡¡Èë:   ÎÞ 
** Êä¡¡³ö:   0: ³õʼ»¯³É¹¦    1: ³õʼ»¯Ê§°Ü   
************************************************************/ 
extern INT8U Init_D12(void); 
 
/************************************************************ 
** º¯ÊýÃû³Æ: INT8U ReadPort1(INT32U len,INT8U *recbuff,INT16U timeout) 
** ¹¦ÄÜÃèÊö: ´Ó¶Ëµã 1 ¶Á³ö len¸ö×Ö½Ú 
** Êä¡¡Èë:   INT32U  len:	     Òª¶Á³öµÄ×Ö½ÚÊý£¨È¡Öµ·¶Î§Îª0x00000001 ~ 0xFFFFFFFF£© 
			 INT8U   *recbuff:   ½ÓÊÕÊý¾ÝÖ¸Õë 
			 INT16U  timeout:    ³¬Ê±Ê±¼ä, ±ØÐë´óÓÚµÈÓÚ0 
** Êä¡¡³ö:   0: ¶Á³ö³É¹¦	 > 0: ¶Á³öʧ°Ü(´íÎóÂë) 
************************************************************/ 
extern INT8U ReadPort1(INT32U len,INT8U *recbuff,INT16U timeout); 
 
/************************************************************ 
** º¯ÊýÃû³Æ: INT8U ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout) 
** ¹¦ÄÜÃèÊö: ´Ó¶Ëµã 2 ¶Á³ölen¸ö×Ö½Ú 
** Êä¡¡Èë:   INT32U  len:	     Òª¶Á³öµÄ×Ö½ÚÊý£¨È¡Öµ·¶Î§Îª0x00000001 ~ 0xFFFFFFFF£© 
			 INT8U   *recbuff:   ½ÓÊÕÊý¾ÝÖ¸Õë 
			 INT16U  timeout:    ³¬Ê±Ê±¼ä, ±ØÐë´óÓÚµÈÓÚ0 
** Êä¡¡³ö:   0: ¶Á³ö³É¹¦	> 0: ¶Á³öʧ°Ü(´íÎóÂë) 
************************************************************/ 
extern INT8U ReadPort2(INT32U len,INT8U *recbuff,INT16U timeout); 
 
/*********************************************************************** 
** º¯ÊýÃû³Æ: INT8U WritePort1(INT32U len,INT8U *sendbuff,INT16U timeout) 
** ¹¦ÄÜÃèÊö: Óö˵ã 1 ·¢ËÍlen¸ö×Ö½Ú 
** Êä¡¡Èë:   INT32U  len:	  	 ·¢Ë͵Ä×Ö½ÚÊý£¨È¡Öµ·¶Î§Îª0x00000001 ~ 0xFFFFFFFF£© 
			 INT8U   sendbuff:   ·¢ËÍ»º³åÇøÖ¸Õë 
			 INT16U  timeout:    ³¬Ê±µÈ´ýʱ¼ä, ±ØÐë´óÓÚµÈÓÚ0 
** Êä¡¡³ö:   0: ·¢Ëͳɹ¦	 > 0: ·¢ËÍʧ°Ü(´íÎóÂë) 
************************************************************************/ 
extern INT8U WritePort1(INT32U len,INT8U *sendbuff,INT16U timeout); 
 
/************************************************************ 
** º¯ÊýÃû³Æ: INT8U WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout) 
** ¹¦ÄÜÃèÊö: Óö˵ã 2 ·¢ËÍlen¸ö×Ö½Ú 
** Êä¡¡Èë:   INT32U  len:	      ·¢Ë͵Ä×Ö½ÚÊý£¨È¡Öµ·¶Î§Îª0x00000001 ~ 0xFFFFFFFF£© 
			 INT8U   *sendbuff:   ·¢ËÍÖ¸Õë 
			 INT16U  timeout:     ³¬Ê±Ê±¼ä, ±ØÐë´óÓÚµÈÓÚ0 
** Êä¡¡³ö:   0: ·¢Ëͳɹ¦	> 0: ·¢ËÍʧ°Ü(´íÎóÂë) 
************************************************************/ 
extern INT8U WritePort2(INT32U len,INT8U *sendbuff,INT16U timeout); 
 
/******************************************************************* 
** º¯ÊýÃû³Æ: void  TaskSetup(void *pdata) 
** ¹¦ÄÜÃèÊö: Setup°ü´¦Àí 
** Êä	 Èë: void *pdata  ÈÎÎñ²ÎÊý 
** Êä	 ³ö: ÎÞ 
** ×¢	 Òâ: ¸ÃÈÎÎñµÄÓÅÏȼ¶Ó¦¸ßÓÚÆäËüÈÎÎñ,²ÅÄÜÔÚÈκÎÇé¿öÏ´«ÊäSetup°ü 
********************************************************************/ 
extern void  TaskSetup(void *pdata);