⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbd.h

📁 smartARM2400 USB host例程
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************Copyright(c)****************************************************************
**                    Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                           http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File Name:            usbd.h
** Latest modified Date: 2007-11-15        
** Latest Version:       V1.0    
** Description:          USBD.c的头文件
**                       
**--------------------------------------------------------------------------------------------------------
** Created By:           吴隆穗  Longsui Wu   
** Created date:         2007-11-15    
** Version:              V1.0    
** Descriptions:         初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:          
** Modified date:        
** Version:              
** Description:          
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#ifndef __USBD_H
#define __USBD_H

#include "USBHostConfig.h"


#define USB_TRAN_TYPE_CONTROL                   0x01                    /*  传输类型                    */

#define USB_TRAN_TYPE_BULK_OUT                  0x02
#define USB_TRAN_TYPE_BULK_IN                   0x82

#define USB_TRAN_TYPE_INTR_OUT                  0x03
#define USB_TRAN_TYPE_INTR_IN                   0x83

#define USB_TRAN_TYPE_ISO                       0x04


/*********************************************************************************************************
  USB 主机状态标志位
*********************************************************************************************************/
typedef struct __tagUSB_HOST_FLAGS {
    
    USB_INT8U ucAttached;                                               /*  设备是(1)否(0)已插入        */
    USB_INT8U ucConfiged;                                               /*  是(1)否(0)已配置设备        */
    USB_INT8U ucEnumed;                                                 /*  是(1)否(0)已成功枚举设备    */
    
    USB_INT8U ucCtrlPipe;                                               /*  控制传输管道是(1)否(0)已打开*/ 
    USB_INT8U ucBulkOutPipe;
    USB_INT8U ucBulkInPipe;
    USB_INT8U ucIntrOutPipe;
    USB_INT8U ucIntrInPipe;
    
    USB_BOOL  bExitStdOperaReq;                                         /*  是否请求退出控制传输        */
    USB_BOOL  bExitDataOperaReq;                                        /*  是否请求退出批量和中断传输  */
    
} __USB_HOST_FLAGS, *__PUSB_HOST_FLAGS;

/*********************************************************************************************************
  USB 设备,接口的类型,协议等集合
*********************************************************************************************************/
typedef struct {
    USB_INT8U bDeviceClass;
    USB_INT8U bDeviceProtocol;
    USB_INT8U bInterfaceClass;
    USB_INT8U bInterfaceProtocol;
    USB_INT8U bInterfaceSubClass;
} USB_DEVICE_TYPE, *PUSB_DEVICE_TYPE;  
    
#define __USB_MAX_INTERFACE                         2                   /*  最大接口数                  */
#define __USB_MAX_EP                                32                  /*  最大端点数                  */
#define __USB_MAX_SAME_EP                           2                   /*  每类端点的最大数目          */

typedef struct __tagUSB_INTERFACE_EP_DESCR {
    USB_INT8U                ucInterfaceIndex;                          /*  接口序号                    */
    USB_INT8U                ucInterfaceNum;                            /*  该设备所具有的接口总数      */
    USB_INT8U                ucReserv[2];
    
    USB_INT8U                ucBulkInEpNum;                             /*  该接口具有的 Bulk IN 端点数 */
    USB_INT8U                ucBulkOutEpNum;                            /*  该接口具有的 Bulk OUT 端点数*/
    USB_INT8U                ucIntrInEpNum;                             /*  该接口具有的 Intr IN 端点数 */
    USB_INT8U                ucIntrOutEpNum;                            /*  该接口具有的 Intr Out 端点数*/
    USB_INT8U                ucIsoInEpNum;                              /*  该接口具有的 Iso IN 端点数  */
    USB_INT8U                ucIsoOutEpNum;                             /*  该接口具有的 Iso Out 端点数 */
    USB_INT8U                ucControlInEpNum;                          /*  该接口具有的 控制 IN 端点数 */
    USB_INT8U                ucControlOutEpNum;                         /*  该接口具有的 控制 Out 端点数*/
    
    USB_INTERFACE_DESCRIPTOR usbInterfaceDescr;                         /*  接口描述符                  */
    
    USB_ENDPOINT_DESCRIPTOR  usbBulkInEpDescr[__USB_MAX_SAME_EP];       /*  该接口下的 Bulk IN 描述符   */
    USB_ENDPOINT_DESCRIPTOR  usbBulkOutEpDescr[__USB_MAX_SAME_EP];

    USB_ENDPOINT_DESCRIPTOR  usbIntrInEpDescr[__USB_MAX_SAME_EP];
    USB_ENDPOINT_DESCRIPTOR  usbIntrOutEpDescr[__USB_MAX_SAME_EP];

    USB_ENDPOINT_DESCRIPTOR  usbIsoInEpDescr[__USB_MAX_SAME_EP];
    USB_ENDPOINT_DESCRIPTOR  usbIsoOutEpDescr[__USB_MAX_SAME_EP];
} __USB_INTERFACE_EP_DESCR, __PUSB_INTERFACE_EP_DESCR;


/*********************************************************************************************************
** Function name:       usbHostInitialize
** Descriptions:        USB 主机初始化
** input parameters:    ucShedPrio           调度任务的优先级
**                      ucEnumPrio           枚举任务的优先级
**                      pEnumSucessCallBack: 枚举成功回调函数,若没有则设置为NULL
**                      pDevDisconCallBack:  设备拨出回调函数,若没有则设置为NULL
** output parameters:   None
** Returned value:      TRUE : 成功  FALSE : 失败
*********************************************************************************************************/
USB_BOOL usbHostInitialize (USB_INT8U ucShedPrio, 
                            USB_INT8U ucEnumPrio,
                            void      (*pEnumSucessCallBack)(void),
                            void      (*pDevDisconCallBack)(void));

USB_BOOL usbHostDeInit (void);
USB_BOOL usbHostNotifyExitDataOpera (void);
USB_BOOL usbHostNotifyExitStdOpera (void);

/*********************************************************************************************************
** Function name:       usbPipeOpen
** Descriptions:        打开传输管道
** input parameters:    ucTranType  传输类型
** output parameters:   None
** Returned value:      TRUE : 成功  FALSE : 失败
*********************************************************************************************************/
USB_BOOL usbPipeOpen (USB_INT8U ucTranType);

/*********************************************************************************************************
** Function name:       usbPipeClose
** Descriptions:        关闭传输管道
** input parameters:    ucTranType  传输类型
** output parameters:   None
** Returned value:      TRUE : 成功  FALSE : 失败
*********************************************************************************************************/
USB_BOOL usbPipeClose (USB_INT8U ucTranType);

/*********************************************************************************************************
** Function name:       usbGetStatus
** Descriptions:        读取状态请求
** input parameters:    ucType  要读取的状态的对象类型,指设备(0),接口(1),或端点(2)
**                      wIndex  索引,设备号(固定为0),或接口号,或端点号
** output parameters:   pucData 接收数据缓冲区,用于存放读取到的状态值
** Returned value:      传输错误码  成功 : USB_ERR_SUCESS, 其余为错误
*********************************************************************************************************/
USB_INT8U usbGetStatus (USB_INT8U ucType , USB_INT16U wIndex, USB_INT8U *pucData);

#define usbGetDeviceStatus(pucData)            usbGetStatus(0, 0, pucData)
#define usbGetInterfaceStatus(wIndex, pucData) usbGetStatus(0x01, wIndex, pucData)
#define usbGetEndPointStatus(wIndex, pucData)  usbGetStatus(0x02, wIndex, pucData)

/*********************************************************************************************************
** Function name:       usbClearFeature
** Descriptions:        清除特性
** input parameters:    ucType  要读取的状态的对象类型,指设备(0),接口(1),或端点(2)
**                      wValue  特性选择符
**                      wIndex  索引,设备号(固定为0),或接口号,或端点号
** output parameters:   None
** Returned value:      传输错误码  成功 : USB_ERR_SUCESS, 其余为错误
*********************************************************************************************************/
USB_INT8U usbClearFeature (USB_INT8U ucType, USB_INT16U wValue, USB_INT16U wIndex);

#define usbClearFeature_EP(wIndex) usbClearFeature (__USB_RECIPIENT_ENDPOINT, 0, wIndex)

/*********************************************************************************************************
** Function name:       usbSetFeature
** Descriptions:        设置特性
** input parameters:    ucType  要读取的状态的对象类型,指设备(0),接口(1),或端点(2)
**                      wValue  特性选择符
**                      wIndex  索引,设备号(固定为0),或接口号,或端点号
** output parameters:   None

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -