Loading...
Searching...
No Matches
descriptor.h File Reference

Definitions for USB protocol messages. More...

Detailed Description

Definitions for USB protocol messages.

Author
Koen Zandberg koen@.nosp@m.berg.nosp@m.zand..nosp@m.net

Definition in file descriptor.h.

#include <stdint.h>
#include <stdbool.h>
+ Include dependency graph for descriptor.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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
 

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 standard feature selectors

#define USB_FEATURE_ENDPOINT_HALT   0x00
 Endpoint halt

 
#define USB_FEATURE_DEVICE_REMOTE_WAKEUP   0x01
 Device remote wakeup.
 
#define USB_FEATURE_TEST_MODE   0x02
 Test mode feature

 

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