Atmel Software Framework

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
USB Protocol Definitions

This module defines constants and data structures provided by the USB 2.0 specification.

Modules

 USB Personal Healthcare Device Class (PHDC)
 protocol definitions
 
 USB Android Open Accessory
 
 Communication Device Class Definitions
 
 USB Human Interface Device (HID)
 protocol definitions
 
 USB Mass Storage Class (MSC) protocol definitions
 
 USB Device Firmware Upgrade (DFU)
 protocol definitions
 
 USB Vendor Class definitions
 

Data Structures

struct  usb_association_desc_t
 Standard USB Interface Association Descriptor structure. More...
 
struct  usb_conf_desc_t
 Standard USB configuration descriptor structure. More...
 
struct  usb_dev_bos_desc_t
 USB Device BOS descriptor structure. More...
 
struct  usb_dev_capa_ext_desc_t
 USB Device Capabilities - USB 2.0 Extension Descriptor structure. More...
 
struct  usb_dev_desc_t
 Standard USB device descriptor structure. More...
 
struct  usb_dev_lpm_desc_t
 USB Device LPM Descriptor structure. More...
 
struct  usb_dev_qual_desc_t
 Standard USB device qualifier descriptor structure. More...
 
struct  usb_ep_desc_t
 Standard USB endpoint descriptor structure. More...
 
struct  usb_iad_desc_t
 Standard USB association descriptor structure. More...
 
struct  usb_iface_desc_t
 Standard USB interface descriptor structure. More...
 
struct  usb_setup_req_t
 A USB Device SETUP request. More...
 
struct  usb_str_desc_t
 A standard USB string descriptor structure. More...
 
struct  usb_str_lgid_desc_t
 

Macros

#define BESL_10000_US   15
 
#define BESL_1000_US   6
 
#define BESL_125_US   0
 
#define BESL_150_US   1
 
#define BESL_2000_US   7
 
#define BESL_200_US   2
 
#define BESL_3000_US   8
 
#define BESL_300_US   3
 
#define BESL_4000_US   9
 
#define BESL_400_US   4
 
#define BESL_5000_US   10
 
#define BESL_500_US   5
 
#define BESL_6000_US   11
 
#define BESL_7000_US   12
 
#define BESL_8000_US   13
 
#define BESL_9000_US   14
 
#define USB_CONFIG_ATTR_BUS_POWERED   (0 << 6)
 Bus-powered. More...
 
#define USB_CONFIG_ATTR_MUST_SET   (1 << 7)
 Must always be set. More...
 
#define USB_CONFIG_ATTR_REMOTE_WAKEUP   (1 << 5)
 remote wakeup supported More...
 
#define USB_CONFIG_ATTR_SELF_POWERED   (1 << 6)
 Self-powered. More...
 
#define USB_CONFIG_MAX_POWER(ma)   (((ma) + 1) / 2)
 Max power in mA. More...
 
#define USB_DC_EXT_BESL_BASELINE(besl)   ((besl & 0xF) << USB_DC_EXT_BESL_BASELINE_OFFSET)
 
#define USB_DC_EXT_BESL_BASELINE_OFFSET   12
 
#define USB_DC_EXT_BESL_DEEP(besl)   ((besl & 0xF) << USB_DC_EXT_BESL_DEEP_OFFSET)
 
#define USB_DC_EXT_BESL_DEEP_OFFSET   8
 
#define USB_EP_ADDR_MASK   0x0f
 Mask selecting the index part of an endpoint address. More...
 
#define USB_EP_DIR_IN   0x80
 Endpoint transfer direction is IN. More...
 
#define USB_EP_DIR_OUT   0x00
 Endpoint transfer direction is OUT. More...
 
#define USB_LPM_ATTRIBUT_BESL(value)   ((value & 0xF) << 4)
 
#define USB_LPM_ATTRIBUT_BESL_MASK   (0xF << 4)
 
#define USB_LPM_ATTRIBUT_BLINKSTATE(value)   ((value & 0xF) << 0)
 
#define USB_LPM_ATTRIBUT_BLINKSTATE_L1   USB_LPM_ATTRIBUT_BLINKSTATE(1)
 
#define USB_LPM_ATTRIBUT_BLINKSTATE_MASK   (0xF << 0)
 Fields definition from a LPM TOKEN. More...
 
#define USB_LPM_ATTRIBUT_REMOTEWAKE(value)   ((value & 1) << 8)
 
#define USB_LPM_ATTRIBUT_REMOTEWAKE_MASK   (1 << 8)
 
#define USB_MAX_DESC_LEN   255
 Maximum length in bytes of a USB descriptor. More...
 
#define USB_REQ_DIR_IN   (1<<7)
 Device to host. More...
 
#define USB_REQ_DIR_MASK   (1<<7)
 Mask. More...
 
#define USB_REQ_DIR_OUT   (0<<7)
 USB request data transfer direction (bmRequestType) More...
 
#define USB_REQ_RECIP_DEVICE   (0<<0)
 USB recipient codes (bmRequestType) More...
 
#define USB_REQ_RECIP_ENDPOINT   (2<<0)
 Recipient endpoint. More...
 
#define USB_REQ_RECIP_INTERFACE   (1<<0)
 Recipient interface. More...
 
#define USB_REQ_RECIP_MASK   (0x1F)
 Mask. More...
 
#define USB_REQ_RECIP_OTHER   (3<<0)
 Recipient other. More...
 
#define USB_REQ_TYPE_CLASS   (1<<5)
 Class-specific request. More...
 
#define USB_REQ_TYPE_MASK   (3<<5)
 Mask. More...
 
#define USB_REQ_TYPE_STANDARD   (0<<5)
 USB request types (bmRequestType) More...
 
#define USB_REQ_TYPE_VENDOR   (2<<5)
 Vendor-specific request. More...
 
#define USB_V2_0   0x0200
 Value for field bcdUSB. More...
 
#define USB_V2_1   0x0201
 USB Specification version 2.01. More...
 

Typedefs

typedef uint8_t usb_add_t
 USB address identifier. More...
 
typedef uint8_t usb_ep_t
 Endpoint identifier. More...
 

Enumerations

enum  usb_capability_extension_attr {
  USB_DC_EXT_LPM = 0x00000002,
  USB_DC_EXT_BESL = 0x00000004,
  USB_DC_EXT_BESL_BASELINE_VALID = 0x00000008,
  USB_DC_EXT_BESL_DEEP_VALID = 0x00000010
}
 USB Device Capability - USB 2.0 Extension To fill bmAttributes field of usb_capa_ext_desc_t structure. More...
 
enum  usb_capability_type { USB_DC_USB20_EXTENSION = 0x02 }
 USB Device Capability types. More...
 
enum  usb_descriptor_type {
  USB_DT_DEVICE = 1,
  USB_DT_CONFIGURATION = 2,
  USB_DT_STRING = 3,
  USB_DT_INTERFACE = 4,
  USB_DT_ENDPOINT = 5,
  USB_DT_DEVICE_QUALIFIER = 6,
  USB_DT_OTHER_SPEED_CONFIGURATION = 7,
  USB_DT_INTERFACE_POWER = 8,
  USB_DT_OTG = 9,
  USB_DT_IAD = 0x0B,
  USB_DT_BOS = 0x0F,
  USB_DT_DEVICE_CAPABILITY = 0x10
}
 Standard USB descriptor types. More...
 
enum  usb_device_feature {
  USB_DEV_FEATURE_REMOTE_WAKEUP = 1,
  USB_DEV_FEATURE_TEST_MODE = 2,
  USB_DEV_FEATURE_OTG_B_HNP_ENABLE = 3,
  USB_DEV_FEATURE_OTG_A_HNP_SUPPORT = 4,
  USB_DEV_FEATURE_OTG_A_ALT_HNP_SUPPORT = 5
}
 Standard USB device feature flags. More...
 
enum  usb_device_hs_test_mode {
  USB_DEV_TEST_MODE_J = 1,
  USB_DEV_TEST_MODE_K = 2,
  USB_DEV_TEST_MODE_SE0_NAK = 3,
  USB_DEV_TEST_MODE_PACKET = 4,
  USB_DEV_TEST_MODE_FORCE_ENABLE = 5
}
 Test Mode possible on HS USB device. More...
 
enum  usb_device_status {
  USB_DEV_STATUS_BUS_POWERED = 0,
  USB_DEV_STATUS_SELF_POWERED = 1,
  USB_DEV_STATUS_REMOTEWAKEUP = 2
}
 Standard USB device status flags. More...
 
enum  usb_endpoint_feature { USB_EP_FEATURE_HALT = 0 }
 Standard USB endpoint feature/status flags. More...
 
enum  usb_endpoint_status { USB_EP_STATUS_HALTED = 1 }
 Standard USB endpoint status flags. More...
 
enum  usb_ep_type {
  USB_EP_TYPE_CONTROL = 0x00,
  USB_EP_TYPE_ISOCHRONOUS = 0x01,
  USB_EP_TYPE_BULK = 0x02,
  USB_EP_TYPE_INTERRUPT = 0x03,
  USB_EP_TYPE_MASK = 0x03
}
 Standard USB endpoint transfer types. More...
 
enum  usb_interface_status { USB_IFACE_STATUS_RESERVED = 0 }
 Standard USB Interface status flags. More...
 
enum  usb_langid { USB_LANGID_EN_US = 0x0409 }
 Standard USB language IDs for string descriptors. More...
 
enum  usb_reqid {
  USB_REQ_GET_STATUS = 0,
  USB_REQ_CLEAR_FEATURE = 1,
  USB_REQ_SET_FEATURE = 3,
  USB_REQ_SET_ADDRESS = 5,
  USB_REQ_GET_DESCRIPTOR = 6,
  USB_REQ_SET_DESCRIPTOR = 7,
  USB_REQ_GET_CONFIGURATION = 8,
  USB_REQ_SET_CONFIGURATION = 9,
  USB_REQ_GET_INTERFACE = 10,
  USB_REQ_SET_INTERFACE = 11,
  USB_REQ_SYNCH_FRAME = 12
}
 Standard USB requests (bRequest) More...
 
enum  usb_test_mode_selector {
  USB_TEST_J = 0x01,
  USB_TEST_K = 0x02,
  USB_TEST_SE0_NAK = 0x03,
  USB_TEST_PACKET = 0x04,
  USB_TEST_FORCE_ENABLE = 0x05
}
 Standard USB Test Mode Selectors. More...
 

Generic definitions (Class, subclass and protocol)

#define NO_CLASS   0x00
 
#define CLASS_VENDOR_SPECIFIC   0xFF
 
#define NO_SUBCLASS   0x00
 
#define NO_PROTOCOL   0x00
 

IAD (Interface Association Descriptor) constants

#define CLASS_IAD   0xEF
 
#define SUB_CLASS_IAD   0x02
 
#define PROTOCOL_IAD   0x01
 

#define BESL_10000_US   15
#define BESL_1000_US   6
#define BESL_125_US   0
#define BESL_150_US   1
#define BESL_2000_US   7
#define BESL_200_US   2
#define BESL_3000_US   8
#define BESL_300_US   3
#define BESL_4000_US   9
#define BESL_400_US   4
#define BESL_5000_US   10
#define BESL_500_US   5
#define BESL_6000_US   11
#define BESL_7000_US   12
#define BESL_8000_US   13
#define BESL_9000_US   14
#define CLASS_IAD   0xEF
#define CLASS_VENDOR_SPECIFIC   0xFF

Referenced by uhi_aoa_install().

#define NO_CLASS   0x00
#define NO_PROTOCOL   0x00
#define NO_SUBCLASS   0x00
#define PROTOCOL_IAD   0x01
#define SUB_CLASS_IAD   0x02
#define USB_CONFIG_ATTR_BUS_POWERED   (0 << 6)

Bus-powered.

#define USB_CONFIG_ATTR_MUST_SET   (1 << 7)

Must always be set.

#define USB_CONFIG_ATTR_REMOTE_WAKEUP   (1 << 5)

remote wakeup supported

Referenced by uhc_remotewakeup().

#define USB_CONFIG_ATTR_SELF_POWERED   (1 << 6)

Self-powered.

Referenced by uhc_enumeration_step13().

#define USB_CONFIG_MAX_POWER (   ma)    (((ma) + 1) / 2)

Max power in mA.

#define USB_DC_EXT_BESL_BASELINE (   besl)    ((besl & 0xF) << USB_DC_EXT_BESL_BASELINE_OFFSET)
#define USB_DC_EXT_BESL_BASELINE_OFFSET   12
#define USB_DC_EXT_BESL_DEEP (   besl)    ((besl & 0xF) << USB_DC_EXT_BESL_DEEP_OFFSET)
#define USB_DC_EXT_BESL_DEEP_OFFSET   8
#define USB_EP_ADDR_MASK   0x0f

Mask selecting the index part of an endpoint address.

Referenced by udi_phdc_metadata_ack(), udi_phdc_preamplemsg_ack(), udi_phdc_send_metadata(), udi_phdc_send_preamplemsg(), and uhd_ep_alloc().

#define USB_EP_DIR_IN   0x80

Endpoint transfer direction is IN.

Referenced by uhd_ep_alloc(), uhi_aoa_install(), uhi_cdc_install(), uhi_hid_mouse_install(), and uhi_vendor_install().

#define USB_EP_DIR_OUT   0x00

Endpoint transfer direction is OUT.

#define USB_LPM_ATTRIBUT_BESL (   value)    ((value & 0xF) << 4)
#define USB_LPM_ATTRIBUT_BESL_MASK   (0xF << 4)
#define USB_LPM_ATTRIBUT_BLINKSTATE (   value)    ((value & 0xF) << 0)
#define USB_LPM_ATTRIBUT_BLINKSTATE_L1   USB_LPM_ATTRIBUT_BLINKSTATE(1)
#define USB_LPM_ATTRIBUT_BLINKSTATE_MASK   (0xF << 0)

Fields definition from a LPM TOKEN.

#define USB_LPM_ATTRIBUT_REMOTEWAKE (   value)    ((value & 1) << 8)
#define USB_LPM_ATTRIBUT_REMOTEWAKE_MASK   (1 << 8)
#define USB_MAX_DESC_LEN   255

Maximum length in bytes of a USB descriptor.

The maximum length of a USB descriptor is limited by the 8-bit bLength field.

#define USB_REQ_DIR_MASK   (1<<7)

Mask.

Referenced by uhd_ctrl_interrupt().

#define USB_REQ_DIR_OUT   (0<<7)
#define USB_REQ_RECIP_ENDPOINT   (2<<0)

Recipient endpoint.

Referenced by udc_process_setup(), udc_reqstd(), and uhi_msc_reset_endpoint().

#define USB_REQ_RECIP_MASK   (0x1F)

Mask.

#define USB_REQ_RECIP_OTHER   (3<<0)

Recipient other.

#define USB_REQ_TYPE_MASK   (3<<5)

Mask.

#define USB_V2_0   0x0200

Value for field bcdUSB.

USB Specification version 2.00

#define USB_V2_1   0x0201

USB Specification version 2.01.

Referenced by uhc_enumeration_step15().

typedef uint8_t usb_add_t

USB address identifier.

typedef uint8_t usb_ep_t

Endpoint identifier.

USB Device Capability - USB 2.0 Extension To fill bmAttributes field of usb_capa_ext_desc_t structure.

Enumerator
USB_DC_EXT_LPM 
USB_DC_EXT_BESL 
USB_DC_EXT_BESL_BASELINE_VALID 
USB_DC_EXT_BESL_DEEP_VALID 

USB Device Capability types.

Enumerator
USB_DC_USB20_EXTENSION 

Standard USB descriptor types.

Enumerator
USB_DT_DEVICE 
USB_DT_CONFIGURATION 
USB_DT_STRING 
USB_DT_INTERFACE 
USB_DT_ENDPOINT 
USB_DT_DEVICE_QUALIFIER 
USB_DT_OTHER_SPEED_CONFIGURATION 
USB_DT_INTERFACE_POWER 
USB_DT_OTG 
USB_DT_IAD 
USB_DT_BOS 
USB_DT_DEVICE_CAPABILITY 

Standard USB device feature flags.

Note
valid for SetFeature request.
Enumerator
USB_DEV_FEATURE_REMOTE_WAKEUP 

Remote wakeup enabled.

USB_DEV_FEATURE_TEST_MODE 

USB test mode.

USB_DEV_FEATURE_OTG_B_HNP_ENABLE 
USB_DEV_FEATURE_OTG_A_HNP_SUPPORT 
USB_DEV_FEATURE_OTG_A_ALT_HNP_SUPPORT 

Test Mode possible on HS USB device.

Note
valid for USB_DEV_FEATURE_TEST_MODE request.
Enumerator
USB_DEV_TEST_MODE_J 
USB_DEV_TEST_MODE_K 
USB_DEV_TEST_MODE_SE0_NAK 
USB_DEV_TEST_MODE_PACKET 
USB_DEV_TEST_MODE_FORCE_ENABLE 

Standard USB device status flags.

Enumerator
USB_DEV_STATUS_BUS_POWERED 
USB_DEV_STATUS_SELF_POWERED 
USB_DEV_STATUS_REMOTEWAKEUP 

Standard USB endpoint feature/status flags.

Enumerator
USB_EP_FEATURE_HALT 

Standard USB endpoint status flags.

Enumerator
USB_EP_STATUS_HALTED 

Standard USB endpoint transfer types.

Enumerator
USB_EP_TYPE_CONTROL 
USB_EP_TYPE_ISOCHRONOUS 
USB_EP_TYPE_BULK 
USB_EP_TYPE_INTERRUPT 
USB_EP_TYPE_MASK 

Standard USB Interface status flags.

Enumerator
USB_IFACE_STATUS_RESERVED 
enum usb_langid

Standard USB language IDs for string descriptors.

Enumerator
USB_LANGID_EN_US 

English (United States)

enum usb_reqid

Standard USB requests (bRequest)

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 

Standard USB Test Mode Selectors.

Enumerator
USB_TEST_J 
USB_TEST_K 
USB_TEST_SE0_NAK 
USB_TEST_PACKET 
USB_TEST_FORCE_ENABLE