| USBD ROM Stack 1.0 ROM based USB device stack

Data Fields
USB_DEVICE_DESCRIPTOR Struct Reference
USB Core Layer

`#include <mw_usbd/mw_usbd.h>`

## Data Fields
uint8_t | bLength
uint8_t | bDescriptorType
uint16_t | bcdUSB
uint8_t | bDeviceClass
uint8_t | bDeviceSubClass
uint8_t | bDeviceProtocol
uint8_t | bMaxPacketSize0
uint16_t | idVendor
uint16_t | idProduct
uint16_t | bcdDevice
uint8_t | iManufacturer
uint8_t | iProduct
uint8_t | iSerialNumber
uint8_t | bNumConfigurations

## Detailed Description

USB Standard Device Descriptor

## Field Documentation

## ◆ bLength

uint8_t USB_DEVICE_DESCRIPTOR::bLength

Size of this descriptor in bytes.

## ◆ bDescriptorType

uint8_t USB_DEVICE_DESCRIPTOR::bDescriptorType

DEVICE Descriptor Type.

## ◆ bcdUSB

uint16_t USB_DEVICE_DESCRIPTOR::bcdUSB

BUSB Specification Release Number in Binary-Coded Decimal (i.e., 2.10 is 210H). This field identifies the release of the USB Specification with which the device and its descriptors are compliant.

## ◆ bDeviceClass

uint8_t USB_DEVICE_DESCRIPTOR::bDeviceClass

Class code (assigned by the USB-IF). If this field is reset to zero, each interface within a configuration specifies its own class information and the various interfaces operate independently.
If this field is set to a value between 1 and FEH, the device supports different class specifications on different interfaces and the interfaces may not operate independently. This value identifies the class definition used for the aggregate interfaces.
If this field is set to FFH, the device class is vendor-specific.

## ◆ bDeviceSubClass

uint8_t USB_DEVICE_DESCRIPTOR::bDeviceSubClass

Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field.
If the bDeviceClass field is reset to zero, this field must also be reset to zero.
If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF.

## ◆ bDeviceProtocol

uint8_t USB_DEVICE_DESCRIPTOR::bDeviceProtocol

Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class.
If this field is reset to zero, the device does not use class-specific protocols on a device basis. However, it may use classspecific protocols on an interface basis.
If this field is set to FFH, the device uses a vendor-specific protocol on a device basis.

## ◆ bMaxPacketSize0

uint8_t USB_DEVICE_DESCRIPTOR::bMaxPacketSize0

Maximum packet size for endpoint zero (only 8, 16, 32, or 64 are valid). For HS devices is fixed to 64.

## ◆ idVendor

uint16_t USB_DEVICE_DESCRIPTOR::idVendor

Vendor ID (assigned by the USB-IF).

## ◆ idProduct

uint16_t USB_DEVICE_DESCRIPTOR::idProduct

Product ID (assigned by the manufacturer).

## ◆ bcdDevice

uint16_t USB_DEVICE_DESCRIPTOR::bcdDevice

Device release number in binary-coded decimal.

## ◆ iManufacturer

uint8_t USB_DEVICE_DESCRIPTOR::iManufacturer

Index of string descriptor describing manufacturer.

## ◆ iProduct

uint8_t USB_DEVICE_DESCRIPTOR::iProduct

Index of string descriptor describing product.

## ◆ iSerialNumber

uint8_t USB_DEVICE_DESCRIPTOR::iSerialNumber

Index of string descriptor describing the device’s serial number.

## ◆ bNumConfigurations

uint8_t USB_DEVICE_DESCRIPTOR::bNumConfigurations

Number of possible configurations.

The documentation for this struct was generated from the following file:

- mw_usbd/mw_usbd.h