📄 usbd.h
字号:
/*****************************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 + -