📄 rbcchap9.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 + -