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

📄 rbcchap9.h

📁 smartARM2400 USB OTG例程
💻 H
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               RbcChap9nDescr.h
** Latest modified Date:    2007-10-8
** Latest Version:          1.0
** Descriptions:            本文件包含了2个USB专用类请求实现函数,并提供用于RBC设备的USB设备描述符和配置
                            描述符(使用这些描述符时需要按实际硬件修改)。
**
**--------------------------------------------------------------------------------------------------------
** Created by:              Lizhenming
** Created date:            2007-09-19
** Version:                 1.0
** Descriptions:            The original version
**
*********************************************************************************************************/

#ifndef     __RBC_DESCRITOR_H
#define     __RBC_DESCRITOR_H

#include "usbdevconfig.h"

#include "..\COMMON\Descriptor.h"
//#include "..\Descriptor.h"
/*********************************************************************************************************
  USB 专用类请求
    #define     USB_CLASS_REQUEST_USBSTOR_RESET         0xFF            //  批量传输的大容量存储器复位  
    #define     USB_CLASS_REQUEST_USBSTOR_GETMAXLUN     0xFE            //  获取最大逻辑单元数目        
*********************************************************************************************************/

/*********************************************************************************************************
** Function name:           rbcClassDevReq
**
** Descriptions:            USB大容量类专用请求
**
** input parameters:        req     请求号:USB_CLASS_REQUEST_USBSTOR_RESET         0xFF
                                            USB_CLASS_REQUEST_USBSTOR_GETMAXLUN     0xFE
** output parameters:       无  
** Returned value:          无
**
*********************************************************************************************************/
//void rbcClassDevReq(__uint8 req);

/*
 *  定义了__USE_RBC_DESCR,使用本文件的设备描述符和配置描述符
 */
#define     __USE_RBC_DESCR
/*
 *  如果定义了__USE_RBC_DESCR,则使用本文件的设备描述符和配置描述符
 */
#ifdef      __USE_RBC_DESCR

/*********************************************************************************************************
  USB设备描述符和配置描述符。为了避免冲突把一些USB宏定义和结构体定义拷贝到下面
*********************************************************************************************************/

/*********************************************************************************************************
    与大容量储存类相关的基本定义
*********************************************************************************************************/

#define __USB_CLASS_CODE_MASSSTORAGE_CLASS_DEVICE   0x08

#define __USB_SUBCLASS_CODE_RBC			            0x01
#define __USB_SUBCLASS_CODE_SFF8020I			    0x02
#define __USB_SUBCLASS_CODE_QIC157			        0x03
#define __USB_SUBCLASS_CODE_UFI			            0x04
#define __USB_SUBCLASS_CODE_SFF8070I			    0x05
#define __USB_SUBCLASS_CODE_SCSI			        0x06

#define __USB_PROTOCOL_CODE_CBI0					0x00
#define __USB_PROTOCOL_CODE_CBI1					0x01
#define __USB_PROTOCOL_CODE_BULK					0x50

/*********************************************************************************************************
  USB 描述符结构体及其成员取值宏定义
*********************************************************************************************************/
/*
 *  USB  设备描述符结构体
 */
#if 0
 
typedef struct _USB_DEVICE_DESCRIPTOR_ {
    __uint8 bLength;
    __uint8 bDescriptorType;
    __uint8 bcdUSB0;
    __uint8 bcdUSB1;
    __uint8 bDeviceClass;
    __uint8 bDeviceSubClass;
    __uint8 bDeviceProtocol;
    __uint8 bMaxPacketSize0;
    __uint8 idVendor0;
    __uint8 idVendor1;
    __uint8 idProduct0;
    __uint8 idProduct1;
    __uint8 bcdDevice0;
    __uint8 bcdDevice1;
    __uint8 iManufacturer;
    __uint8 iProduct;
    __uint8 iSerialNumber;
    __uint8 bNumConfigurations;
} __USB_DEVICE_DESCRIPTOR, *__PUSB_DEVICE_DESCRIPTOR;

/*
 *  USB  配置描述符结构体
 */
typedef struct _USB_CONFIGURATION_DESCRIPTOR_ {
    __uint8 bLength;
    __uint8 bDescriptorType;
    __uint8 wTotalLength0;
    __uint8 wTotalLength1;
    __uint8 bNumInterfaces;
    __uint8 bConfigurationValue;
    __uint8 iConfiguration;
    __uint8 bmAttributes;
    __uint8 MaxPower;
} __USB_CONFIGURATION_DESCRIPTOR, *__PUSB_CONFIGURATION_DESCRIPTOR;

/*
 *  USB  接口描述符结构体
 */
typedef struct _USB_INTERFACE_DESCRIPTOR_ {
    __uint8 bLength;
    __uint8 bDescriptorType;
    __uint8 bInterfaceNumber;
    __uint8 bAlternateSetting;
    __uint8 bNumEndpoints;
    __uint8 bInterfaceClass;
    __uint8 bInterfaceSubClass;
    __uint8 bInterfaceProtocol;
    __uint8 iInterface;
} __USB_INTERFACE_DESCRIPTOR, *__PUSB_INTERFACE_DESCRIPTOR;

/*
 *  USB  端点描述符结构体  
 */
typedef struct _USB_ENDPOINT_DESCRIPTOR_ {
    __uint8 bLength;
    __uint8 bDescriptorType;
    __uint8 bEndpointAddress;
    __uint8 bmAttributes;
    __uint8 wMaxPacketSize0;
    __uint8 wMaxPacketSize1;
    __uint8 bInterval;
} __USB_ENDPOINT_DESCRIPTOR, *__PUSB_ENDPOINT_DESCRIPTOR;

/*
 *  USB 字符串描述符结构体
 */
typedef struct _USB_STRING_DESCRIPTOR_ {
    __uint8 bLength;
    __uint8 bDescriptorType;
    __uint8 bString[1];
} __USB_STRING_DESCRIPTOR, *__PUSB_STRING_DESCRIPTOR;

#endif

/*
 *  USB 配置描述符、接口描述符和端点描述符
 */
typedef struct _USB_DESCRIPTOR_ {
	USB_CONFIGURATION_DESCRIPTOR ConfigDescr;		                    /*  配置描述符                  */
	USB_INTERFACE_DESCRIPTOR InterfaceDescr;		                    /*  接口描述符                  */
	USB_ENDPOINT_DESCRIPTOR EP2_TXDescr;			                    /*  端点2输入描述符             */
	USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;			                    /*  端点2输出描述符             */
} __USB_DESCRIPTOR, *__PUSB_DESCRIPTOR;



/*********************************************************************************************************
  USB 字符串结构体定义
*********************************************************************************************************/
/*
 *  USB字符串索引值
 */
#define __STR_INDEX_LANGUAGE						0x00	
#define __STR_INDEX_MANUFACTURER					0x01	
#define __STR_INDEX_PRODUCT						    0x02	
#define __STR_INDEX_SERIALNUMBER					0x03
#define __STR_INDEX_CONFIGURATION					0x04	
#define __STR_INDEX_INTERFACE						0x05
/*
 *  USB最大字符串长度
 */
#define __MAXIMUM_USB_STRING_LENGTH 255

typedef struct _USB_STRING_LANGUAGE_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  blanguageID[2];
} __USB_STRING_LANGUAGE_DESCRIPTOR, *__PUSB_STRING_LANGUAGE_DESCRIPTOR;

typedef struct _USB_STRING_INTERFACE_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  Interface[22];
} __USB_STRING_INTERFACE_DESCRIPTOR, *__PUSB_STRING_INTERFACE_DESCRIPTOR;

typedef struct _USB_STRING_CONFIGURATION_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  Configuration[16];
} __USB_STRING_CONFIGURATION_DESCRIPTOR, *__PUSB_STRING_CONFIGURATION_DESCRIPTOR;

typedef struct _USB_STRING_SERIALNUMBER_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  SerialNum[24];
} __USB_STRING_SERIALNUMBER_DESCRIPTOR, *__PUSB_STRING_SERIALNUMBER_DESCRIPTOR;

typedef struct _USB_STRING_PRODUCT_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  Product[30];
} __USB_STRING_PRODUCT_DESCRIPTOR, *__PUSB_STRING_PRODUCT_DESCRIPTOR;

typedef struct _USB_STRING_MANUFACTURER_DESCRIPTOR_ {
	__uint8  bLength;
	__uint8  bDescriptorType;
	__uint8  Manufacturer[24];
} __USB_STRING_MANUFACTURER_DESCRIPTOR, *__PUSB_STRING_MANUFACTURER_DESCRIPTOR;

/*
 *  设备描述符
 */
extern const USB_DEVICE_DESCRIPTOR __GrbcDeviceDescr;

/*
 *  USB 配置描述符、接口描述符和端点描述符
 */
extern const USB_DESCRIPTOR __GrbcDescr;
/*
 *  字符串描述符语言编码
 */
extern const __USB_STRING_LANGUAGE_DESCRIPTOR  __strLanguage;
/*
 *  厂商描述符
 */
extern const __USB_STRING_MANUFACTURER_DESCRIPTOR  __strManufacturer;
/*
 *  产品描述符
 */
extern const __USB_STRING_PRODUCT_DESCRIPTOR  __strProduct;
/*
 *  设备出厂编码
 */
extern const __USB_STRING_SERIALNUMBER_DESCRIPTOR  __strSerialNum;

/*********************************************************************************************************
** Function name:           rbcClassDevReq
**
** Descriptions:            USB大容量类专用请求
**
** input parameters:        req     请求号:USB_CLASS_REQUEST_USBSTOR_RESET         0xFF
                                            USB_CLASS_REQUEST_USBSTOR_GETMAXLUN     0xFE
** output parameters:       无  
** Returned value:          无
**
*********************************************************************************************************/
void rbcClassDevReq(__uint8 req);

#endif                                                                  /*  #ifdef      __USE_RBC_DESCR */

#endif

⌨️ 快捷键说明

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