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

📄 obj_usbdesc.h

📁 at91rm9200的一级bootloader
💻 H
📖 第 1 页 / 共 2 页
字号:
//*----------------------------------------------------------------------------

//*         ATMEL Microcontroller Software Support  -  ROUSSET  -

//*----------------------------------------------------------------------------

//* The software is delivered "AS IS" without warranty or condition of any

//* kind, either express, implied or statutory. This includes without

//* limitation any warranty or condition with respect to merchantability or

//* fitness for any particular purpose, or against the infringements of

//* intellectual property rights of others.

//*----------------------------------------------------------------------------

//* File Name           : obj_udpdesc.h

//* Object              : USB peripheral library.

//*

//* 1.0 Sept 3rd 01 ODi : Creation

//*----------------------------------------------------------------------------

#ifndef obj_usbdesc_h

#define obj_usbdesc_h



#include 	"periph/udp/lib_udp.h"



/* *********************************************************************** */

/* Following definitions corresponds to the USB specification Rev. 1.1     */

/* They are used during the USB enumeration                                */

/* *********************************************************************** */



/* USB standard request code */

#define USB_GET_STATUS           0

#define USB_CLEAR_FEATURE        1

#define USB_SET_FEATURE          3

#define USB_SET_ADDRESS          5

#define USB_GET_DESCRIPTOR       6

#define USB_SET_DESCRIPTOR       7

#define USB_GET_CONFIGURATION    8

#define USB_SET_CONFIGURATION    9

#define USB_GET_INTERFACE       10

#define USB_SET_INTERFACE       11

#define USB_SYNCH_FRAME         12



/* USB descriptor types */

#define USB_DEVICE               1

#define USB_CONFIGURATION        2

#define USB_STRING               3

#define USB_INTERFACE            4

#define USB_ENDPOINT             5



/* USB standard feature selectors */

#define USB_DEVICE_REMOTE_WAKEUP 1

#define USB_ENDPOINT_HALT        0

/*---------------------------*/

/* USB Setup Data            */

/*---------------------------*/

typedef struct _AT91S_UsbSetup {

	char  bmRequestType;      /* Characteristics of request */

	char  bRequest;           /* Specific request */

	short wValue;             /* Word-sized field */

	short wIndex;             /* Word-sized field; used to pass an index or an offset */

	short wLength;            /* Number of bytes to transfert */

} AT91S_UsbSetup, *AT91PS_UsbSetup;



/*-------------------------------------------*/

/* USB Standard device descriptor            */

/*-------------------------------------------*/

typedef __packed struct _AT91S_UsbDevice {

	char  bLength;            /* Size of this descriptor */

	char  bDescriptorType;    /* DEVICE descriptor type */

	short bcdUSB;             /* USB Specification release Number */

	char  bDeviceClass;       /* Class code (assigned by the USB) */

	char  bDeviceSubClass;    /* Subclass code (assigned by the USB) */

	char  bDeviceProtocol;    /* Protool code (assigned by the USB) */

	char  bMaxPacketSize0;    /* Maximum packet size for endpoint 0 */

	short idVendor;           /* Vendor ID */

	short idProduct;          /* Product ID */

	short bcdDevice;          /* Device release number */

	char  iManufacturer;      /* Index of string descriptor describing manufacturer*/

	char  iProduct;           /* Index of string descriptor describing the product */

	char  iSerialNumber;      /* Index of string descriptor describing the device's serial number */

	char  bNumConfigurations; /* Number of possible configurations */

} AT91S_UsbDevice, *AT91PS_UsbDevice;





/*-------------------------------------------*/

/* USB Standard configuration descriptor     */

/*-------------------------------------------*/

typedef __packed struct _AT91S_UsbConfiguration {

	char  bLength;            /* Size of this descriptor */

	char  bDescriptorType;    /* CONFIGURATION descriptor type */

	short wTotalLength;       /* Total length of data returned for this configuration */

	char bNumInterfaces;      /* Number of interfaces supported by this configuration */

	char bConfigurationValue; /* Value to use as an argument to the set configuration() request */

	char iConfiguration;      /* Index of string descriptor describing this configuration */

	char bmAttributes;        /* Configuration characteristics */

	char MaxPower;            /* Maximum Power consumption */

} AT91S_UsbConfiguration, *AT91PS_UsbConfiguration;



__inline u_short wTotalLength(char const *pCfg) { return ((pCfg[3] << 8) | pCfg[2]); }



/*---------------------------------------*/

/* USB Standard interface descriptor     */

/*---------------------------------------*/

typedef __packed struct _AT91S_UsbInterface {

	char  bLength;            /* Size of this descriptor */

	char  bDescriptorType;    /* INTERFACE descriptor type */

	char  bInterfaceNumber;   /* Number of interface */

	char  bAlternateSetting;  /* Number of interfaces supported by this configuration */

	char  bNumEndpoints;      /* Number of endpoints used by this interface */

	char  bInterfaceClass;    /* Class code */

	char  bInterfaceSubClass; /* Subclass code */

	char  bInterfaceProtocol; /* Protocol code */

	char  iInterface;         /* Index of string descriptor describing this interface */

} AT91S_UsbInterface, *AT91PS_UsbInterface;



/*--------------------------------------*/

/* USB Standard endpoint descriptor     */

/*--------------------------------------*/

typedef __packed struct _AT91S_UsbEndpoint {

	char  bLength;            /* Size of this descriptor */

	char  bDescriptorType;    /* ENDP諭NT descriptor type */

	char  bEndpointAddress;   /* Address of the endpoint on the USB device described by this descriptor */

	char  bmAttributes;       /* Bitmap */

	short wMaxPacketSize;     /* Maximum packet size this endpoint is capable of sending or receiving */

	char  bInterval;          /* Interval for polling endpoint for data transfers */

} AT91S_UsbEndpoint, *AT91PS_UsbEndpoint;



__inline char           bEndpointAddress(char const *pEp)  { return (pEp[2] & 0x0F); }

__inline unsigned short wMaxPacketSize  (char const *pEp)  { return ((pEp[5] << 8) | pEp[4]); }



/*------------------------------------------*/

/* USB Standard UNICODE string descriptor  */

/*-----------------------------------------*/

typedef __packed struct _AT91S_UsbString {

	char  bLength;            /* Size of this descriptor */

	char  bDescriptorType;    /* STRING descriptor type */

	char  *bString;           /* UNICODE encoded string */

} AT91S_UsbString, *AT91PS_UsbString;









/* *********************************************************************** */

/* Following structure must be defined by the application                  */

/* Each pointer to function corresponds to standard request from the host  */

/* defined by the USB spec. Rev. 1.1                                       */

/*                                                                         */

/* If the request is not supported, the field must be set to 0. A STALL    */

/* handshake will be initialized with the host.                            */

/* *********************************************************************** */



typedef struct _AT91S_UsbDesc {



/* Following function is the entry point for the application */

	void (*DispatchRequest)    (

		struct _AT91S_UsbDesc *pUsbDesc, /* Pointer to this structure */

		AT91PS_UsbSetup  pSetup);           /* Descriptor type */

/* ======================================================================= */

/* Following functions are called by usbDispatchRequest() if a class or a  */

/* vendor request has been detected                                        */

/* ======================================================================= */

	void (*DispatchClassRequest)    (

		AT91PS_UsbSetup  pSetup,      /* Descriptor type */

		void *pPrivateClassData);  /* Pointer to private datas */

	void (*DispatchVendorRequest) (

		AT91PS_UsbSetup  pSetup,      /* Descriptor type */

		void *pPrivateVendorData); /* Pointer to private datas */



/* ======================================================================= */

/* Following functions are called after the request has been checked       */

/* according to the USB macro status                                       */

/* ======================================================================= */

	void (*ClearFeature) (

⌨️ 快捷键说明

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