?? usbd.h
字號(hào):
/*****************************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 主機(jī)狀態(tài)標(biāo)志位
*********************************************************************************************************/
typedef struct __tagUSB_HOST_FLAGS {
USB_INT8U ucAttached; /* 設(shè)備是(1)否(0)已插入 */
USB_INT8U ucConfiged; /* 是(1)否(0)已配置設(shè)備 */
USB_INT8U ucEnumed; /* 是(1)否(0)已成功枚舉設(shè)備 */
USB_INT8U ucCtrlPipe; /* 控制傳輸管道是(1)否(0)已打開(kāi)*/
USB_INT8U ucBulkOutPipe;
USB_INT8U ucBulkInPipe;
USB_INT8U ucIntrOutPipe;
USB_INT8U ucIntrInPipe;
USB_BOOL bExitStdOperaReq; /* 是否請(qǐng)求退出控制傳輸 */
USB_BOOL bExitDataOperaReq; /* 是否請(qǐng)求退出批量和中斷傳輸 */
} __USB_HOST_FLAGS, *__PUSB_HOST_FLAGS;
/*********************************************************************************************************
USB 設(shè)備,接口的類型,協(xié)議等集合
*********************************************************************************************************/
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 /* 最大接口數(shù) */
#define __USB_MAX_EP 32 /* 最大端點(diǎn)數(shù) */
#define __USB_MAX_SAME_EP 2 /* 每類端點(diǎn)的最大數(shù)目 */
typedef struct __tagUSB_INTERFACE_EP_DESCR {
USB_INT8U ucInterfaceIndex; /* 接口序號(hào) */
USB_INT8U ucInterfaceNum; /* 該設(shè)備所具有的接口總數(shù) */
USB_INT8U ucReserv[2];
USB_INT8U ucBulkInEpNum; /* 該接口具有的 Bulk IN 端點(diǎn)數(shù) */
USB_INT8U ucBulkOutEpNum; /* 該接口具有的 Bulk OUT 端點(diǎn)數(shù)*/
USB_INT8U ucIntrInEpNum; /* 該接口具有的 Intr IN 端點(diǎn)數(shù) */
USB_INT8U ucIntrOutEpNum; /* 該接口具有的 Intr Out 端點(diǎn)數(shù)*/
USB_INT8U ucIsoInEpNum; /* 該接口具有的 Iso IN 端點(diǎn)數(shù) */
USB_INT8U ucIsoOutEpNum; /* 該接口具有的 Iso Out 端點(diǎn)數(shù) */
USB_INT8U ucControlInEpNum; /* 該接口具有的 控制 IN 端點(diǎn)數(shù) */
USB_INT8U ucControlOutEpNum; /* 該接口具有的 控制 Out 端點(diǎn)數(shù)*/
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 主機(jī)初始化
** input parameters: ucShedPrio 調(diào)度任務(wù)的優(yōu)先級(jí)
** ucEnumPrio 枚舉任務(wù)的優(yōu)先級(jí)
** pEnumSucessCallBack: 枚舉成功回調(diào)函數(shù),若沒(méi)有則設(shè)置為NULL
** pDevDisconCallBack: 設(shè)備撥出回調(diào)函數(shù),若沒(méi)有則設(shè)置為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: 打開(kāi)傳輸管道
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -