📄 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
#ifndef __USB_DEVICE_DESCRIPTOR_TYPE_
#define __USB_DEVICE_DESCRIPTOR_TYPE_
typedef struct __tagUSB_DEVICE_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U bcdUSB0;
USB_INT8U bcdUSB1;
USB_INT8U bDeviceClass;
USB_INT8U bDeviceSubClass;
USB_INT8U bDeviceProtocol;
USB_INT8U bMaxPacketSize0;
USB_INT8U idVendor0;
USB_INT8U idVendor1;
USB_INT8U idProduct0;
USB_INT8U idProduct1;
USB_INT8U bcdDevice0;
USB_INT8U bcdDevice1;
USB_INT8U iManufacturer;
USB_INT8U iProduct;
USB_INT8U iSerialNumber;
USB_INT8U bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
#endif
/*********************************************************************************************************
USB configuration descriptor structure
*********************************************************************************************************/
#ifndef __USB_CONFIGURATION_DESCRIPTOR_TYPE_
#define __USB_CONFIGURATION_DESCRIPTOR_TYPE_
typedef struct __tagUSB_CONFIGURATION_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U wTotalLength0;
USB_INT8U wTotalLength1;
USB_INT8U bNumInterfaces;
USB_INT8U bConfigurationValue;
USB_INT8U iConfiguration;
USB_INT8U bmAttributes;
USB_INT8U MaxPower;
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
#endif
/*********************************************************************************************************
USB interface descriptor structure
*********************************************************************************************************/
#ifndef __USB_INTERFACE_DESCRIPTOR_TYPE_
#define __USB_INTERFACE_DESCRIPTOR_TYPE_
typedef struct __tagUSB_INTERFACE_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U bInterfaceNumber;
USB_INT8U bAlternateSetting;
USB_INT8U bNumEndpoints;
USB_INT8U bInterfaceClass;
USB_INT8U bInterfaceSubClass;
USB_INT8U bInterfaceProtocol;
USB_INT8U iInterface;
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
#endif
/*********************************************************************************************************
USB endpoint descriptor structure
*********************************************************************************************************/
#ifndef __USB_ENDPOINT_DESCRIPTOR_TYPE_
#define __USB_ENDPOINT_DESCRIPTOR_TYPE_
typedef struct __tagUSB_ENDPOINT_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U bEndpointAddress;
USB_INT8U bmAttributes;
USB_INT8U wMaxPacketSize0;
USB_INT8U wMaxPacketSize1;
USB_INT8U bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
#endif
/*********************************************************************************************************
USB string descriptor structure
*********************************************************************************************************/
#ifndef __USB_STRING_DESCRIPTOR_TYPE_
#define __USB_STRING_DESCRIPTOR_TYPE_
typedef struct __tagUSB_STRING_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U bString[1];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
#endif
/*********************************************************************************************************
USB OTG descriptor structure
*********************************************************************************************************/
#ifndef __USB_OTG_DESCRIPTOR_TYPE_
#define __USB_OTG_DESCRIPTOR_TYPE_
typedef struct __tagUSB_OTG_DESCRIPTOR {
USB_INT8U bLength;
USB_INT8U bDescriptorType;
USB_INT8U bmAttributes;
} USB_OTG_DESCRIPTOR, *PUSB_OTG_DESCRIPTOR;
#endif
/*********************************************************************************************************
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: 打开传输管道
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -