VSF Documented
Data Structures | Macros | Typedefs | Enumerations
usb_common.h File Reference
#include "utilities/vsf_utilities.h"

Go to the source code of this file.

Data Structures

struct  usb_ctrlrequest_t
 
struct  usb_descriptor_header_t
 
struct  usb_class_interface_desc_t
 
struct  usb_device_desc_t
 
struct  usb_config_desc_t
 
struct  usb_interface_desc_t
 
struct  usb_endpoint_desc_t
 
struct  usb_interface_assoc_desc_t
 

Macros

#define DeviceRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)
 
#define DeviceOutRequest   ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)
 
#define InterfaceRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
 
#define EndpointRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
 
#define EndpointOutRequest   ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
 
#define ClearHubFeature   (0x2000 | USB_REQ_CLEAR_FEATURE)
 
#define ClearPortFeature   (0x2300 | USB_REQ_CLEAR_FEATURE)
 
#define GetHubDescriptor   (0xa000 | USB_REQ_GET_DESCRIPTOR)
 
#define GetHubStatus   (0xa000 | USB_REQ_GET_STATUS)
 
#define GetPortStatus   (0xa300 | USB_REQ_GET_STATUS)
 
#define SetHubFeature   (0x2000 | USB_REQ_SET_FEATURE)
 
#define SetPortFeature   (0x2300 | USB_REQ_SET_FEATURE)
 
#define USB_ENDPOINT_HALT   0 /* IN/OUT will STALL */
 
#define USB_DT_DEVICE_SIZE   18
 
#define USB_DT_CONFIG_SIZE   9
 
#define USB_DT_INTERFACE_SIZE   9
 
#define USB_DT_ENDPOINT_SIZE   7
 
#define USB_DT_ENDPOINT_AUDIO_SIZE   9
 
#define USB_DT_DEVICE_QUALIFIER_SIZE   10
 
#define USB_DT_INTERFACE_ASSOCIATION_SIZE   8
 
#define USB_DT_BOS_SIZE   5
 

Typedefs

typedef enum usb_pid_t usb_pid_t
 
typedef struct usb_ctrlrequest_t usb_ctrlrequest_t
 
typedef struct usb_descriptor_header_t usb_descriptor_header_t
 
typedef struct usb_class_interface_desc_t usb_class_interface_desc_t
 
typedef struct usb_device_desc_t usb_device_desc_t
 
typedef struct usb_config_desc_t usb_config_desc_t
 
typedef struct usb_interface_desc_t usb_interface_desc_t
 
typedef struct usb_endpoint_desc_t usb_endpoint_desc_t
 
typedef struct usb_interface_assoc_desc_t usb_interface_assoc_desc_t
 
typedef enum usb_device_speed_t usb_device_speed_t
 

Enumerations

enum  usb_pid_t {
  USB_PID_EXT = 0xf0 ,
  USB_PID_OUT = 0xe1 ,
  USB_PID_ACK = 0xd2 ,
  USB_PID_DATA0 = 0xc3 ,
  USB_PID_PING = 0xb4 ,
  USB_PID_SOF = 0xa5 ,
  USB_PID_NYET = 0x96 ,
  USB_PID_DATA2 = 0x87 ,
  USB_PID_SPLIT = 0x78 ,
  USB_PID_IN = 0x69 ,
  USB_PID_NAK = 0x5a ,
  USB_PID_DATA1 = 0x4b ,
  USB_PID_PREAMBLE = 0x3c ,
  USB_PID_ERR = 0x3c ,
  USB_PID_SETUP = 0x2d ,
  USB_PID_STALL = 0x1e ,
  USB_PID_MDATA = 0x0f
}
 
enum  usb_dir_t {
  USB_DIR_MASK = 0x80 ,
  USB_DIR_OUT = 0x00 ,
  USB_DIR_IN = 0x80
}
 
enum  usb_req_t {
  USB_REQ_GET_STATUS = 0x00 ,
  USB_REQ_CLEAR_FEATURE = 0x01 ,
  USB_REQ_SET_FEATURE = 0x03 ,
  USB_REQ_SET_ADDRESS = 0x05 ,
  USB_REQ_GET_DESCRIPTOR = 0x06 ,
  USB_REQ_SET_DESCRIPTOR = 0x07 ,
  USB_REQ_GET_CONFIGURATION = 0x08 ,
  USB_REQ_SET_CONFIGURATION = 0x09 ,
  USB_REQ_GET_INTERFACE = 0x0A ,
  USB_REQ_SET_INTERFACE = 0x0B ,
  USB_REQ_SYNCH_FRAME = 0x0C
}
 
enum  usb_req_type_t {
  USB_TYPE_MASK = (0x03 << 5) ,
  USB_TYPE_STANDARD = (0x00 << 5) ,
  USB_TYPE_CLASS = (0x01 << 5) ,
  USB_TYPE_VENDOR = (0x02 << 5) ,
  USB_TYPE_RESERVED = (0x03 << 5)
}
 
enum  usb_req_recip_t {
  USB_RECIP_MASK = 0x1F ,
  USB_RECIP_DEVICE = 0x00 ,
  USB_RECIP_INTERFACE = 0x01 ,
  USB_RECIP_ENDPOINT = 0x02 ,
  USB_RECIP_OTHER = 0x03 ,
  USB_RECIP_PORT = 0x04 ,
  USB_RECIP_RPIPE = 0x05
}
 
enum  usb_class_t {
  USB_CLASS_PER_INTERFACE = 0 ,
  USB_CLASS_AUDIO = 1 ,
  USB_CLASS_COMM = 2 ,
  USB_CLASS_HID = 3 ,
  USB_CLASS_PHYSICAL = 5 ,
  USB_CLASS_STILL_IMAGE = 6 ,
  USB_CLASS_PRINTER = 7 ,
  USB_CLASS_MASS_STORAGE = 8 ,
  USB_CLASS_HUB = 9 ,
  USB_CLASS_CDC_DATA = 0x0a ,
  USB_CLASS_CSCID = 0x0b ,
  USB_CLASS_CONTENT_SEC = 0x0d ,
  USB_CLASS_VIDEO = 0x0e ,
  USB_CLASS_WIRELESS_CONTROLLER = 0xe0 ,
  USB_CLASS_MISC = 0xef ,
  USB_CLASS_APP_SPEC = 0xfe ,
  USB_CLASS_VENDOR_SPEC = 0xff ,
  USB_SUBCLASS_VENDOR_SPEC = 0xff
}
 
enum  usb_desc_type_t {
  USB_DT_DEVICE = 0x01 ,
  USB_DT_CONFIG = 0x02 ,
  USB_DT_STRING = 0x03 ,
  USB_DT_INTERFACE = 0x04 ,
  USB_DT_ENDPOINT = 0x05 ,
  USB_DT_DEVICE_QUALIFIER = 0x06 ,
  USB_DT_OTHER_SPEED_CONFIG = 0x07 ,
  USB_DT_INTERFACE_POWER = 0x08 ,
  USB_DT_INTERFACE_ASSOCIATION = 0x0b ,
  USB_DT_BOS = 0x0f ,
  USB_DT_DEVICE_CAPABILITY = 0x10 ,
  USB_DT_SS_ENDPOINT_COMP = 0x30 ,
  USB_DT_CS_DEVICE = (USB_TYPE_CLASS | USB_DT_DEVICE) ,
  USB_DT_CS_CONFIG = (USB_TYPE_CLASS | USB_DT_CONFIG) ,
  USB_DT_CS_STRING = (USB_TYPE_CLASS | USB_DT_STRING) ,
  USB_DT_CS_INTERFACE = (USB_TYPE_CLASS | USB_DT_INTERFACE) ,
  USB_DT_CS_ENDPOINT = (USB_TYPE_CLASS | USB_DT_ENDPOINT) ,
  USB_DT_HID = (USB_TYPE_CLASS | 0x01) ,
  USB_DT_REPORT = (USB_TYPE_CLASS | 0x02) ,
  USB_DT_PHYSICAL = (USB_TYPE_CLASS | 0x03) ,
  USB_DT_HUB = (USB_TYPE_CLASS | 0x09)
}
 
enum  usb_config_desc_att_t {
  USB_CONFIG_ATT_ONE = (1 << 7) ,
  USB_CONFIG_ATT_SELFPOWER = (1 << 6) ,
  USB_CONFIG_ATT_WAKEUP = (1 << 5) ,
  USB_CONFIG_ATT_BATTERY = (1 << 4)
}
 
enum  usb_feature_t {
  USB_DEVICE_SELF_POWERED = 0 ,
  USB_DEVICE_REMOTE_WAKEUP = 1
}
 
enum  usb_device_speed_t {
  USB_SPEED_UNKNOWN = 0 ,
  USB_SPEED_LOW ,
  USB_SPEED_FULL ,
  USB_SPEED_HIGH ,
  USB_SPEED_WIRELESS ,
  USB_SPEED_SUPER ,
  USB_SPEED_SUPER_PLUS
}
 
enum  usb_endpoint_sync_t {
  USB_ENDPOINT_SYNCTYPE = 0x0c ,
  USB_ENDPOINT_SYNC_NONE = (0 << 2) ,
  USB_ENDPOINT_SYNC_ASYNC = (1 << 2) ,
  USB_ENDPOINT_SYNC_ADAPTIVE = (2 << 2) ,
  USB_ENDPOINT_SYNC_SYNC = (3 << 2)
}
 
enum  usb_endpoint_xfer_t {
  USB_ENDPOINT_XFERTYPE_MASK = 0x03 ,
  USB_ENDPOINT_XFER_CONTROL = 0 ,
  USB_ENDPOINT_XFER_ISOC = 1 ,
  USB_ENDPOINT_XFER_BULK = 2 ,
  USB_ENDPOINT_XFER_INT = 3 ,
  USB_ENDPOINT_MAX_ADJUSTABLE = 0x80
}
 

Macro Definition Documentation

◆ DeviceRequest

#define DeviceRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)

◆ DeviceOutRequest

#define DeviceOutRequest   ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)

◆ InterfaceRequest

#define InterfaceRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)

◆ EndpointRequest

#define EndpointRequest   ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)

◆ EndpointOutRequest

#define EndpointOutRequest   ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)

◆ ClearHubFeature

#define ClearHubFeature   (0x2000 | USB_REQ_CLEAR_FEATURE)

◆ ClearPortFeature

#define ClearPortFeature   (0x2300 | USB_REQ_CLEAR_FEATURE)

◆ GetHubDescriptor

#define GetHubDescriptor   (0xa000 | USB_REQ_GET_DESCRIPTOR)

◆ GetHubStatus

#define GetHubStatus   (0xa000 | USB_REQ_GET_STATUS)

◆ GetPortStatus

#define GetPortStatus   (0xa300 | USB_REQ_GET_STATUS)

◆ SetHubFeature

#define SetHubFeature   (0x2000 | USB_REQ_SET_FEATURE)

◆ SetPortFeature

#define SetPortFeature   (0x2300 | USB_REQ_SET_FEATURE)

◆ USB_ENDPOINT_HALT

#define USB_ENDPOINT_HALT   0 /* IN/OUT will STALL */

◆ USB_DT_DEVICE_SIZE

#define USB_DT_DEVICE_SIZE   18

◆ USB_DT_CONFIG_SIZE

#define USB_DT_CONFIG_SIZE   9

◆ USB_DT_INTERFACE_SIZE

#define USB_DT_INTERFACE_SIZE   9

◆ USB_DT_ENDPOINT_SIZE

#define USB_DT_ENDPOINT_SIZE   7

◆ USB_DT_ENDPOINT_AUDIO_SIZE

#define USB_DT_ENDPOINT_AUDIO_SIZE   9

◆ USB_DT_DEVICE_QUALIFIER_SIZE

#define USB_DT_DEVICE_QUALIFIER_SIZE   10

◆ USB_DT_INTERFACE_ASSOCIATION_SIZE

#define USB_DT_INTERFACE_ASSOCIATION_SIZE   8

◆ USB_DT_BOS_SIZE

#define USB_DT_BOS_SIZE   5

Typedef Documentation

◆ usb_pid_t

typedef enum usb_pid_t usb_pid_t

◆ usb_ctrlrequest_t

◆ usb_descriptor_header_t

◆ usb_class_interface_desc_t

◆ usb_device_desc_t

◆ usb_config_desc_t

◆ usb_interface_desc_t

◆ usb_endpoint_desc_t

◆ usb_interface_assoc_desc_t

◆ usb_device_speed_t

Enumeration Type Documentation

◆ usb_pid_t

enum usb_pid_t
Enumerator
USB_PID_EXT 
USB_PID_OUT 
USB_PID_ACK 
USB_PID_DATA0 
USB_PID_PING 
USB_PID_SOF 
USB_PID_NYET 
USB_PID_DATA2 
USB_PID_SPLIT 
USB_PID_IN 
USB_PID_NAK 
USB_PID_DATA1 
USB_PID_PREAMBLE 
USB_PID_ERR 
USB_PID_SETUP 
USB_PID_STALL 
USB_PID_MDATA 

◆ usb_dir_t

enum usb_dir_t
Enumerator
USB_DIR_MASK 
USB_DIR_OUT 
USB_DIR_IN 

◆ usb_req_t

enum usb_req_t
Enumerator
USB_REQ_GET_STATUS 
USB_REQ_CLEAR_FEATURE 
USB_REQ_SET_FEATURE 
USB_REQ_SET_ADDRESS 
USB_REQ_GET_DESCRIPTOR 
USB_REQ_SET_DESCRIPTOR 
USB_REQ_GET_CONFIGURATION 
USB_REQ_SET_CONFIGURATION 
USB_REQ_GET_INTERFACE 
USB_REQ_SET_INTERFACE 
USB_REQ_SYNCH_FRAME 

◆ usb_req_type_t

Enumerator
USB_TYPE_MASK 
USB_TYPE_STANDARD 
USB_TYPE_CLASS 
USB_TYPE_VENDOR 
USB_TYPE_RESERVED 

◆ usb_req_recip_t

Enumerator
USB_RECIP_MASK 
USB_RECIP_DEVICE 
USB_RECIP_INTERFACE 
USB_RECIP_ENDPOINT 
USB_RECIP_OTHER 
USB_RECIP_PORT 
USB_RECIP_RPIPE 

◆ usb_class_t

Enumerator
USB_CLASS_PER_INTERFACE 
USB_CLASS_AUDIO 
USB_CLASS_COMM 
USB_CLASS_HID 
USB_CLASS_PHYSICAL 
USB_CLASS_STILL_IMAGE 
USB_CLASS_PRINTER 
USB_CLASS_MASS_STORAGE 
USB_CLASS_HUB 
USB_CLASS_CDC_DATA 
USB_CLASS_CSCID 
USB_CLASS_CONTENT_SEC 
USB_CLASS_VIDEO 
USB_CLASS_WIRELESS_CONTROLLER 
USB_CLASS_MISC 
USB_CLASS_APP_SPEC 
USB_CLASS_VENDOR_SPEC 
USB_SUBCLASS_VENDOR_SPEC 

◆ usb_desc_type_t

Enumerator
USB_DT_DEVICE 
USB_DT_CONFIG 
USB_DT_STRING 
USB_DT_INTERFACE 
USB_DT_ENDPOINT 
USB_DT_DEVICE_QUALIFIER 
USB_DT_OTHER_SPEED_CONFIG 
USB_DT_INTERFACE_POWER 
USB_DT_INTERFACE_ASSOCIATION 
USB_DT_BOS 
USB_DT_DEVICE_CAPABILITY 
USB_DT_SS_ENDPOINT_COMP 
USB_DT_CS_DEVICE 
USB_DT_CS_CONFIG 
USB_DT_CS_STRING 
USB_DT_CS_INTERFACE 
USB_DT_CS_ENDPOINT 
USB_DT_HID 
USB_DT_REPORT 
USB_DT_PHYSICAL 
USB_DT_HUB 

◆ usb_config_desc_att_t

Enumerator
USB_CONFIG_ATT_ONE 
USB_CONFIG_ATT_SELFPOWER 
USB_CONFIG_ATT_WAKEUP 
USB_CONFIG_ATT_BATTERY 

◆ usb_feature_t

Enumerator
USB_DEVICE_SELF_POWERED 
USB_DEVICE_REMOTE_WAKEUP 

◆ usb_device_speed_t

Enumerator
USB_SPEED_UNKNOWN 
USB_SPEED_LOW 
USB_SPEED_FULL 
USB_SPEED_HIGH 
USB_SPEED_WIRELESS 
USB_SPEED_SUPER 
USB_SPEED_SUPER_PLUS 

◆ usb_endpoint_sync_t

Enumerator
USB_ENDPOINT_SYNCTYPE 
USB_ENDPOINT_SYNC_NONE 
USB_ENDPOINT_SYNC_ASYNC 
USB_ENDPOINT_SYNC_ADAPTIVE 
USB_ENDPOINT_SYNC_SYNC 

◆ usb_endpoint_xfer_t

Enumerator
USB_ENDPOINT_XFERTYPE_MASK 
USB_ENDPOINT_XFER_CONTROL 
USB_ENDPOINT_XFER_ISOC 
USB_ENDPOINT_XFER_BULK 
USB_ENDPOINT_XFER_INT 
USB_ENDPOINT_MAX_ADJUSTABLE