USB descriptors

Provides USB protocol descriptors and defines for USB frameworks. More...

Detailed Description

Provides USB protocol descriptors and defines for USB frameworks.

Files

file  descriptor.h
 Definitions for USB protocol messages.
 

Data Structures

struct  usb_descriptor_device_t
 USB device descriptor (USB 2.0 spec table 9-8) More...
 
struct  usb_descriptor_configuration_t
 USB configuration descriptor (USB 2.0 spec table 9-10) More...
 
struct  usb_descriptor_interface_t
 USB interface descriptor (USB 2.0 spec table 9-12) More...
 
struct  usb_descriptor_endpoint_t
 USB endpoint descriptor (USB 2.0 spec table 9-13) More...
 
struct  usb_descriptor_string_t
 USB string descriptor (USB 2.0 spec table 9-16) More...
 
struct  usb_descriptor_interface_association_t
 USB interface association descriptor (Interface Association Descriptors table 9-Z) More...
 
struct  usb_setup_t
 USB setup packet (USB 2.0 spec table 9-2) More...
 

Macros

#define USB_ENDPOINT_DESCRIPTOR_INTERVAL_ISOCHRONOUS   1
 USB isochronous endpoint interval.
 

Functions

static bool usb_setup_is_read (usb_setup_t *pkt)
 getter for setup packet direction More...
 

USB standard device request codes (USB 2.0 spec table 9-4)

#define USB_SETUP_REQ_GET_STATUS   0x00
 Status request.
 
#define USB_SETUP_REQ_CLEAR_FEATURE   0x01
 Clear feature.
 
#define USB_SETUP_REQ_SET_FEATURE   0x03
 Set feature.
 
#define USB_SETUP_REQ_SET_ADDRESS   0x05
 Set address.
 
#define USB_SETUP_REQ_GET_DESCRIPTOR   0x06
 Get descriptor.
 
#define USB_SETUP_REQ_SET_DESCRIPTOR   0x07
 Set descriptor.
 
#define USB_SETUP_REQ_GET_CONFIGURATION   0x08
 Get configuration.
 
#define USB_SETUP_REQ_SET_CONFIGURATION   0x09
 Set configuration.
 
#define USB_SETUP_REQ_GET_INTERFACE   0x0a
 Get interface.
 
#define USB_SETUP_REQ_SET_INTERFACE   0x0b
 Set interface.
 
#define USB_SETUP_REQ_SYNCH_FRAME   0x0c
 Synch frame.
 

USB descriptor types (USB 2.0 spec table 9-5)

#define USB_TYPE_DESCRIPTOR_DEVICE   0x01
 Device descriptor.
 
#define USB_TYPE_DESCRIPTOR_CONFIGURATION   0x02
 Configuration Descriptor.
 
#define USB_TYPE_DESCRIPTOR_STRING   0x03
 String descriptor.
 
#define USB_TYPE_DESCRIPTOR_INTERFACE   0x04
 Interface descriptor.
 
#define USB_TYPE_DESCRIPTOR_ENDPOINT   0x05
 Endpoint descriptor.
 
#define USB_TYPE_DESCRIPTOR_DEV_QUALIFIER   0x06
 Device qualifier.
 
#define USB_TYPE_DESCRIPTOR_SPEED_CONFIG   0x07
 Other speed configuration.
 
#define USB_TYPE_DESCRIPTOR_IFACE_POWER   0x08
 Interface power.
 
#define USB_TYPE_DESCRIPTOR_INTERFACE_ASSOC   0x0b
 Interface association.
 

USB configuration attributes

#define USB_CONF_ATTR_RESERVED   0x80
 Reserved bit (always 1)
 
#define USB_CONF_ATTR_SELF_POWERED   0x40
 Self powered device flag.
 
#define USB_CONF_ATTR_REM_WAKEUP   0x20
 Remote wake-up flag.
 

USB setup packet requests types

#define USB_SETUP_REQUEST_DEVICE2HOST   0x80
 Request direction From device to host if the bit is set.
 
#define USB_SETUP_REQUEST_RECIPIENT_MASK   0x1f
 Recipient mask.
 
#define USB_SETUP_REQUEST_RECIPIENT_DEVICE   0x00
 Device request.
 
#define USB_SETUP_REQUEST_RECIPIENT_INTERFACE   0x01
 Interface request.
 
#define USB_SETUP_REQUEST_RECIPIENT_ENDPOINT   0x02
 Endpoint request.
 
#define USB_SETUP_REQUEST_RECIPIENT_OTHER   0x03
 Other type request.
 
#define USB_SETUP_REQUEST_TYPE_MASK   0x60
 Mask to select the type.
 
#define USB_SETUP_REQUEST_TYPE_STANDARD   0x00
 Standard request.
 
#define USB_SETUP_REQUEST_TYPE_CLASS   0x20
 Class request.
 
#define USB_SETUP_REQUEST_TYPE_VENDOR   0x40
 Vendor specific request.
 

USB device class numbers

#define USB_CLASS_AUDIO   0x01
 Audio device.
 
#define USB_CLASS_CDC_CONTROL   0x02
 CDC control interface.
 
#define USB_CLASS_HID   0x03
 Human Interface device.
 
#define USB_CLASS_PHYSICAL   0x05
 Physical device class.
 
#define USB_CLASS_IMAGE   0x06
 Image device class.
 
#define USB_CLASS_PRINTER   0x07
 Printer device class.
 
#define USB_CLASS_MASS_STORAGE   0x08
 Mass storage device class.
 
#define USB_CLASS_CDC_DATA   0x0a
 CDC data specification.
 
#define USB_CLASS_VENDOR   0xff
 Vendor specific class.
 

Function Documentation

◆ usb_setup_is_read()

static bool usb_setup_is_read ( usb_setup_t pkt)
inlinestatic

getter for setup packet direction

Parameters
[in]pktsetup packet
Returns
nonzero if it is a read request
zero if it is a write request

Definition at line 216 of file descriptor.h.