Microchip® Advanced Software Framework

usb_protocol.h File Reference

USB protocol definitions.

This file contains the USB definitions and data structures provided by the USB 2.0 specification.

Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries.

#include "usb_atmel.h"

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 HIRD_1025_US   13
 
#define HIRD_1100_US   14
 
#define HIRD_1175_US   15
 
#define HIRD_125_US   1
 
#define HIRD_200_US   2
 
#define HIRD_275_US   3
 
#define HIRD_350_US   4
 
#define HIRD_425_US   5
 
#define HIRD_500_US   6
 
#define HIRD_50_US   0
 
#define HIRD_575_US   7
 
#define HIRD_650_US   8
 
#define HIRD_725_US   9
 
#define HIRD_800_US   10
 
#define HIRD_875_US   11
 
#define HIRD_950_US   12
 
#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_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_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_FIRD(value)   ((value & 0xF) << 4)
 
#define USB_LPM_ATTRIBUT_FIRD_MASK   (0xF << 4)
 
#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...
 
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
 

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 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...