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

📄 descriptor.h

📁 增强型51单片机fs7821cf卡读写程序
💻 H
字号:
/*
**********************************************************************************************
* Project:	TK7821
* File:		Descriptor.h
* Contents: 
*           
*
* $Date: 02/25/05    Jason    v0.1
*        04/21/05    Mingo    v0.2   www.fameg.com
*
* Copyright (c) 2005 Fameg, Inc. All rights reserved
***********************************************************************************************
*/

#ifndef DescriptorH
#define DescriptorH

// Descriptor Types
#define DEVICE_DESC_TYPE              1
#define CONFIGURATION_DESC_TYPE       2
#define STRING_DESC_TYPE              3
#define INTERFACE_DESC_TYPE           4
#define ENDPOINT_DESC_TYPE            5
  // Exist on USB 2.0 Spec.    
#define DEVICE_QUALIFIER_DESC_TYPE    6
#define OTHER_SPEED_CONFIG_DESC_TYPE  7
#define INTERFACE_POWER_DESC_TYPE     8
#define END_DESC_TYPE                 INTERFACE_POWER_DESC_TYPE                 

// Descriptor Related.
#define DEV_DESC_EP0_MAX_PKT_SIZE_OFFSET   7
#define CONFIG_DESC_LEN                    9
#define DFU_CONFIG_DESC_TOTAL_LEN         18
#define STR_DESC_HEADER_LEN                2                
#define STR_DESC_VENDOR_INDEX              1
#define STR_DESC_PRODUCT_INDEX             2
#define STR_DESC_SERIALNUM_INDEX           3

// Descriptor Information Related
#define DI_DESC_DETECT_TOKEN_OFFSET    0
#define DI_DESC_START_OFFSET           2
#define DI_CONFIG_VALUE_FIELD_OFFSET   5  

//----------------------------------------------------------------------------
//  USB Device Descriptor Structure.
//----------------------------------------------------------------------------
typedef struct
{
  BYTE   bLength;
  BYTE   bDescriptorType;	
  UINT16 bcdUSB;
  BYTE   bDeviceClass;
  BYTE   bDeviceSubClass;
  BYTE   bDeviceProtocol;
  BYTE   bMaxPacketSize0;
  UINT16 idVendor;
  UINT16 idProduct;
  UINT16 bcdDevice;
  BYTE   iManufacture;
  BYTE   iProduct;
  BYTE   iSerialNumber;
  BYTE   bNumConfigurations; 
}USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;	

//----------------------------------------------------------------------------
//  USB Configuration Descriptor Structure.
//----------------------------------------------------------------------------
typedef struct
{
  BYTE   bLength;
  BYTE   bDescriptorType;
  UINT16 wTotalLength;
  BYTE   bNumInterfaces;
  BYTE   bConfigurationValue;
  BYTE   iConfiguration;
  BYTE   bmAttributes;
  BYTE   MaxPower;
}USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;	

//----------------------------------------------------------------------------
//  USB Interface Descriptor Structure.
//----------------------------------------------------------------------------
typedef struct
{
  BYTE   bLength;
  BYTE   bDescriptorType;
  BYTE   bInterfaceNumber;
  BYTE   bAlternateSetting;
  BYTE   bNumEndpoints;
  BYTE   bInterfaceClass;
  BYTE   bInterfaceSubClass;
  BYTE   bInterfaceProtocol;
  BYTE   iInterface;
}USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;	

//----------------------------------------------------------------------------
//  USB Endpoint Descriptor Structure.
//----------------------------------------------------------------------------
typedef struct
{
  BYTE   bLength;
  BYTE   bDescriptorType;
  BYTE   bEndpointAddress;
  BYTE   bmAttributes;
  UINT16 wMaxPacketSize;	  
  BYTE   bInterval;
}USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;	

//----------------------------------------------------------------------------
//  USB String Descriptor Structure.
//----------------------------------------------------------------------------
typedef struct
{
  BYTE  bLength;
  BYTE  bDesciptorType;
  PBYTE bString;	
}USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;

typedef enum {USE_EEPROM, USE_SM, USE_DEFAULT} DESC_INFO_SOURCE;

extern xdata UINT16 CtrlXferLen;

extern code BYTE DeviceDesc[];
extern code BYTE ConfigDesc[];
extern code BYTE Str0Desc[];
extern code BYTE Str1Desc[];
extern code BYTE Str2Desc[];
extern code BYTE Str3Desc[];
extern code PBYTE StrDescPtr[4];
extern code BYTE  StrDescLen[4];
extern code BYTE DeviceQualifierDesc[];
extern code BYTE OtherSpeedConfigDesc[];
extern code BYTE DeviceDescLen;
extern code BYTE ConfigDescLen;
extern code BYTE DeviceQualifierDescLen;  

BYTE SeekDescFrmEeprom(BYTE Type, BYTE *Offset);
void GetDiskInfoFrmEeprom(BYTE InfoIndex, PBYTE Buffer, BYTE StartOffset, BYTE Length);
void GetDiskInfoFrmStrDesc();
void CtrlReqGetDescriptor();
void DescInfoSrcDetect();

#endif

⌨️ 快捷键说明

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