Getting started with USBX

1. Common USBX core

Architecture overview

Common services

  • USB protocol core

  • State machines

  • Transfer scheduling

  • Memory services

  • Tracing and error handling

  • RTOS/bare-metal integration hooks

Core system APIs

System initialization

Function

Purpose

ux_system_initialize(memory_ptr, memory_size, byte_pool)

Initialize USBX core, memory pool and internal objects.

ux_system_uninitialize()

De-initialize USBX core.

ux_system_usb_device_initialize()

Initialize USBX device stack internals.

ux_system_host_initialize(host_class_array)

Initialize USBX host stack and register host classes.

Utility, memory and error handling

Function

Purpose

ux_utility_memory_allocate(cache_flag, size)

Allocate memory from USBX pool (cache-safe or not).

ux_utility_memory_free(ptr)

Free memory previously allocated by USBX.

ux_utility_delay_ms(ms)

Millisecond delay via the underlying RTOS.

ux_utility_error_handler(level, context, error_code)

Application hook to handle/log USBX errors.

Low-level transfer and endpoint APIs

Function

Purpose

ux_transfer_request(&transfer)

Generic transfer submission (host or device).

ux_endpoint_reset(endpoint)

Reset endpoint and clear toggles / error state.

ux_endpoint_transfer_abort(endpoint)

Abort an ongoing transfer on the endpoint.

ux_endpoint_stall(endpoint)

Stall (halt) an endpoint.

ux_endpoint_clear(endpoint)

Clear endpoint stall condition.

Common core configuration flags

Flag

Description

UX_THREAD_STACK_SIZE

USBX main thread stack size.

UX_PERIODIC_RATE

Ticks per second for the platform.

UX_ALIGN_MIN

Minimal memory alignment (bytes).

UX_DEBUG_LOG_SIZE

Debug log pool size.

UX_HOST_SIDE_ONLY

Build host side only.

UX_DEVICE_SIDE_ONLY

Build device side only.

UX_STANDALONE

Enable standalone (bare-metal) mode.

2. USB Device side

Device stack APIs

Device core

Function

Purpose

ux_device_stack_initialize(class_array)

Initialize device stack and register device classes.

ux_device_stack_uninitialize()

De-initialize device stack.

ux_device_stack_set_configuration(configuration_value)

Set active configuration (e.g. after SET_CONFIGURATION).

ux_device_stack_disconnect()

Force logical device disconnect (re-enumeration, error handling).

Device descriptors

Function

Purpose

ux_device_stack_descriptor_send(&transfer)

Send a descriptor over control endpoint (EP0).

ux_device_stack_descriptor_get(type, index, &desc_ptr, &len)

Get pointer and length for a descriptor (device, cfg, string, etc.).

Device transfers

Function

Purpose

ux_device_stack_transfer_request(&transfer)

Start a transfer on a non-control endpoint.

ux_device_stack_control_request_process(&transfer)

Process standard control request (EP0 SETUP stage).

Device callbacks and events

The device stack calls user code for:

  • Device reset

  • Configuration set / cleared

  • Suspend / resume

  • Class-specific events (CDC line coding change, HID reports, etc.)

Device-side core configuration flags

Flag

Description

UX_MAX_SLAVE_CLASS_DRIVER

Max number of device classes in the stack.

UX_MAX_SLAVE_INTERFACES

Max interfaces in the device framework.

UX_MAX_SLAVE_LUN

Max SCSI logical units in device MSC.

UX_SLAVE_REQUEST_CONTROL_MAX_LENGTH

Max bytes received on control endpoint (EP0).

UX_DEVICE_ENDPOINT_BUFFER_OWNER

Select endpoint buffer owner.

UX_DEVICE_CLASS_CDC_ACM_ZERO_COPY

Enable zero-copy for CDC-ACM device.

UX_DEVICE_CLASS_HID_ZERO_COPY

Enable zero-copy and flexible queues for HID device.

UX_DEVICE_CLASS_PRINTER_ZERO_COPY

Enable zero-copy for Printer device.

UX_SLAVE_REQUEST_DATA_MAX_LENGTH

Max bytes for non-control endpoint transfers.

UX_DEVICE_ENABLE_GET_STRING_WITH_ZERO_LANGUAGE_ID

Enable Get String Descriptor with zero language ID.

UX_DEVICE_CLASS_CDC_ACM_TRANSMISSION_DISABLE

Disable non-blocking transmission in CDC-ACM.

UX_DEVICE_CLASS_HID_INTERRUPT_OUT_SUPPORT

Enable HID interrupt OUT support.

UX_DEVICE_CLASS_AUDIO_FEEDBACK_SUPPORT

Enable audio feedback endpoint for audio device.

UX_DEVICE_CLASS_AUDIO_INTERRUPT_SUPPORT

Enable audio interrupt endpoint for audio device.

UX_DEVICE_BIDIRECTIONAL_ENDPOINT_SUPPORT

Enable bi-directional endpoints.

UX_DEVICE_ALTERNATE_SETTING_SUPPORT_DISABLE

Disable interface alternate setting support.

UX_DEVICE_INITIALIZE_FRAMEWORK_SCAN_DISABLE

Disable framework scanning (optimize memory).

UX_MAX_DEVICE_ENDPOINTS

Max simultaneously active endpoints.

UX_MAX_DEVICE_INTERFACES

Max simultaneously active interfaces.

UX_DEVICE_CLASS_DFU_UPLOAD_DISABLE

Disable DFU_UPLOAD support.

UX_DEVICE_CLASS_DFU_ERROR_GET_ENABLE

Enable DFU_GETSTATUS/GETSTATE in ERROR state.

UX_DEVICE_CLASS_DFU_STATUS_MODE

Select DFU status mode.

UX_DEVICE_CLASS_DFU_STATUS_POLLTIMEOUT

Default DFU bwPollTimeout.

UX_DEVICE_CLASS_DFU_CUSTOM_REQUEST_ENABLE

Enable DFU custom request callback.

UX_DEVICE_CLASS_CDC_ACM_WRITE_AUTO_ZLP

Auto ZLP on CDC-ACM write.

UX_DEVICE_CLASS_PRINTER_WRITE_AUTO_ZLP

Auto ZLP on Printer write.

UX_PIMA_WITH_MTP_SUPPORT

Enable PIMA MTP support (device + host).

Device framework configuration (USBD_*)

Flag Name

Description

Default Value

USBD_DEVICE_FRAMEWORK_BUILDER_ENABLED

Enable USB Device Framework Builder.

0

USBD_MAX_POWER

Max device power (mA).

100

USBD_COMPOSITE_USE_IAD

Use IAD for composite devices.

1

USBD_VID

Vendor ID.

0x0483

USBD_PID

Product ID.

0x0001

USBD_LANGID_STRING

Language ID string.

0x0409

USBD_MANUFACTURER_STRING

Manufacturer string.

STMicroelectronics

USBD_PRODUCT_STRING

Product string.

STM32 Device

USBD_SERIAL_NUMBER

Serial number string.

001

USBD_FRAMEWORK_DESC_MAX_SIZE

Max total descriptor size (bytes).

256

Device-side class APIs and configuration

HID (Device)

Function

Purpose

ux_device_class_hid_entry(command)

HID device class entry (registered with device stack).

ux_device_class_hid_report_set(hid, &transfer)

Handle SET_REPORT from host.

ux_device_class_hid_report_get(hid, &transfer)

Handle GET_REPORT from host.

ux_device_class_hid_event_set(hid, &event)

Send HID input report (mouse/keyboard/custom IN).

Flag Name

Description

Default Value

USBD_HID_MOUSE_EPIN_ADDR

HID mouse IN endpoint address.

0x81

USBD_HID_MOUSE_EPIN_FS_MPS

HID mouse IN FS Max Packet Size.

4

USBD_HID_MOUSE_EPIN_HS_MPS

HID mouse IN HS Max Packet Size.

4

USBD_HID_MOUSE_EPIN_FS_BINTERVAL

HID mouse IN FS polling interval (BInterval).

10

USBD_HID_MOUSE_EPIN_HS_BINTERVAL

HID mouse IN HS polling interval (BInterval).

5

Flag Name

Description

Default Value

USBD_HID_KEYBOARD_EPIN_ADDR

HID keyboard IN endpoint address.

0x81

USBD_HID_KEYBOARD_EPIN_FS_MPS

HID keyboard IN FS Max Packet Size.

8

USBD_HID_KEYBOARD_EPIN_HS_MPS

HID keyboard IN HS Max Packet Size.

8

USBD_HID_KEYBOARD_EPIN_FS_BINTERVAL

HID keyboard IN FS polling interval.

10

USBD_HID_KEYBOARD_EPIN_HS_BINTERVAL

HID keyboard IN HS polling interval.

10

Flag Name

Description

Default Value

USBD_HID_CUSTOM_EPIN_ADDR

Custom HID IN endpoint address.

0x81

USBD_HID_CUSTOM_EPOUT_ADDR

Custom HID OUT endpoint address.

0x01

USBD_HID_CUSTOM_EPIN_FS_MPS

Custom HID IN FS Max Packet Size.

64

USBD_HID_CUSTOM_EPIN_HS_MPS

Custom HID IN HS Max Packet Size.

512

USBD_HID_CUSTOM_EPOUT_FS_MPS

Custom HID OUT FS Max Packet Size.

64

USBD_HID_CUSTOM_EPOUT_HS_MPS

Custom HID OUT HS Max Packet Size.

512

USBD_HID_CUSTOM_EPIN_FS_BINTERVAL

Custom HID IN FS polling interval.

10

USBD_HID_CUSTOM_EPIN_HS_BINTERVAL

Custom HID IN HS polling interval.

5

USBD_HID_CUSTOM_EPOUT_FS_BINTERVAL

Custom HID OUT FS polling interval.

10

USBD_HID_CUSTOM_EPOUT_HS_BINTERVAL

Custom HID OUT HS polling interval.

5

MSC (Device)

Function

Purpose

ux_device_class_storage_entry(command)

MSC device class entry.

ux_device_class_storage_read(instance, lba, buf, n_blocks)

Read blocks from underlying media (user callback).

ux_device_class_storage_write(instance, lba, buf, n_blocks)

Write blocks to underlying media (user callback).

ux_device_class_storage_status(instance, media_id, &status)

Get media status (user callback).

Flag Name

Description

Default Value

USBD_MSC_EPOUT_ADDR

MSC OUT endpoint address.

0x01

USBD_MSC_EPIN_ADDR

MSC IN endpoint address.

0x81

USBD_MSC_EPIN_FS_MPS

MSC IN FS Max Packet Size.

64

USBD_MSC_EPIN_HS_MPS

MSC IN HS Max Packet Size.

512

USBD_MSC_EPOUT_FS_MPS

MSC OUT FS Max Packet Size.

64

USBD_MSC_EPOUT_HS_MPS

MSC OUT HS Max Packet Size.

512

CDC-ACM (Device)

Function

Purpose

ux_device_class_cdc_acm_entry(command)

CDC-ACM device class entry.

ux_device_class_cdc_acm_write(cdc, buf, len, &act_len)

Send data to host (IN endpoint).

ux_device_class_cdc_acm_read(cdc, buf, len, &act_len)

Receive data from host (OUT endpoint).

ux_device_class_cdc_acm_ioctl(cdc, ioctl_fn, param)

Handle line coding, control signals, etc.

Flag Name

Description

Default Value

USBD_CDCACM_EPOUT_ADDR

CDC-ACM OUT data endpoint address.

0x01

USBD_CDCACM_EPIN_ADDR

CDC-ACM IN data endpoint address.

0x81

USBD_CDCACM_EPINCMD_ADDR

CDC-ACM command IN endpoint address.

0x82

USBD_CDCACM_EPINCMD_FS_MPS

CMD IN FS Max Packet Size.

8

USBD_CDCACM_EPINCMD_HS_MPS

CMD IN HS Max Packet Size.

8

USBD_CDCACM_EPIN_FS_MPS

Data IN FS Max Packet Size.

64

USBD_CDCACM_EPOUT_FS_MPS

Data OUT FS Max Packet Size.

64

USBD_CDCACM_EPIN_HS_MPS

Data IN HS Max Packet Size.

512

USBD_CDCACM_EPOUT_HS_MPS

Data OUT HS Max Packet Size.

512

USBD_CDCACM_EPINCMD_FS_BINTERVAL

CMD IN FS polling interval.

16

USBD_CDCACM_EPINCMD_HS_BINTERVAL

CMD IN HS polling interval.

16

DFU (Device)

Flag Name

Description

Default Value

USBD_DFU_BM_ATTRIBUTES

DFU bmAttributes.

11

USBD_DFU_MEDIA_ERASE_TIME

Erase time (ms).

50

USBD_DFU_MEDIA_PROGRAM_TIME

Program time (ms).

50

USBD_DFU_DetachTimeout

Detach timeout (ms).

255

USBD_DFU_XFER_SIZE

Transfer size (bytes).

1024

USBD_DFU_MEDIA

DFU media string descriptor.

(string)

Audio (Device)

Flag Name

Description

Default Value

USBD_AUDIO_EPOUT_ADDR

audio OUT endpoint address.

0x01

USBD_AUDIO_EPIN_ADDR

audio IN endpoint address.

0x81

USBD_AUDIO_EPOUT_Feedback_ADDR

audio feedback endpoint address.

0x82

USBD_AUDIO_EPOUT_FS_MPS

audio OUT FS Max Packet Size.

see class doc

USBD_AUDIO_EPOUT_HS_MPS

audio OUT HS Max Packet Size.

see class doc

USBD_AUDIO_EPIN_FS_MPS

audio IN FS Max Packet Size.

see class doc

USBD_AUDIO_EPIN_HS_MPS

audio IN HS Max Packet Size.

see class doc

USBD_AUDIO_EP_FEEDBACK_FS_MPS

audio feedback FS Max Packet Size.

4

USBD_AUDIO_EP_FEEDBACK_HS_MPS

audio feedback HS Max Packet Size.

4

USBD_AUDIO_PLAYBACK_SUPPORT

Enable playback support.

FALSE

USBD_AUDIO_RECORD_SUPPORT

Enable record support.

FALSE

USBD_AUDIO_PLAYBACK_CHANNELS

Number of playback channels.

2

USBD_AUDIO_RECORD_CHANNELS

Number of record channels.

2

USBD_AUDIO_PLAYBACK_CHANNELS_MAP

Playback channel map.

see note

USBD_AUDIO_RECORD_CHANNELS_MAP

Record channel map.

see note

USBD_AUDIO_FREQ

audio stream frequency.

48 kHz

USBD_AUDIO_RES

audio resolution.

16 bits

USBD_AUDIO_EPIN_FS_BINTERVAL

audio IN FS polling interval.

1

USBD_AUDIO_EPIN_HS_BINTERVAL

audio IN HS polling interval.

1

USBD_AUDIO_EPOUT_FS_BINTERVAL

audio OUT FS polling interval.

1

USBD_AUDIO_EPOUT_HS_BINTERVAL

audio OUT HS polling interval.

1

USBD_AUDIO_EPIN_FEEDBACK_FS_BINTERVAL

Feedback IN FS polling interval.

1

USBD_AUDIO_EPIN_FEEDBACK_HS_BINTERVAL

Feedback IN HS polling interval.

1

USBD_AUDIO_EPOUT_FEEDBACK_FS_BINTERVAL

Feedback OUT FS polling interval.

1

USBD_AUDIO_EPOUT_FEEDBACK_HS_BINTERVAL

Feedback OUT HS polling interval.

1

Printer (Device)

Flag Name

Description

Default Value

USBD_PRINTER_EPOUT_ADDR

Printer OUT endpoint address.

0x01

USBD_PRINTER_EPIN_ADDR

Printer IN endpoint address.

0x81

USBD_PRINTER_EPOUT_FS_MPS

Printer OUT FS Max Packet Size.

64

USBD_PRINTER_EPOUT_HS_MPS

Printer OUT HS Max Packet Size.

512

USBD_PRINTER_EPIN_FS_MPS

Printer IN FS Max Packet Size.

64

USBD_PRINTER_EPIN_HS_MPS

Printer IN HS Max Packet Size.

512

USBD_PRINTER_IF_PROTOCOL

Printer interface protocol.

2

Video / UVC (Device)

Function

Purpose

ux_device_class_video_entry(command)

Video/UVC device class entry.

ux_device_class_video_streaming_start(video)

Start streaming.

ux_device_class_video_streaming_stop(video)

Stop streaming.

ux_device_class_video_frame_send(video, frame, frame_size)

Send video frame (or chunk) to host.

Flag Name

Description

Default Value

USBD_VIDEO_EPIN_ADDR

video IN endpoint address.

0x81

USBD_VIDEO_EPIN_FS_MPS

video IN FS Max Packet Size.

256

USBD_VIDEO_EPIN_HS_MPS

video IN HS Max Packet Size.

512

USBD_VIDEO_EPIN_FS_BINTERVAL

video IN FS polling interval.

1

USBD_VIDEO_EPIN_HS_BINTERVAL

video IN HS polling interval.

1

USBD_VIDEO_STREAMING_FORMAT_SUBTYPE

video payload format.

UNCOMPRESSED

UVC_UNCOMPRESSED_GUID

UVC uncompressed GUID.

UVC_GUID_YUY2

UVC_BITS_PER_PIXEL

Bits per pixel.

12

UVC_COLOR_PRIMARIE

Color primaries.

1

UVC_TFR_CHARACTERISTICS

Transfer characteristics.

1

UVC_MATRIX_COEFFICIENTS

Matrix coefficients.

4

UVC_FRAME_WIDTH

Frame width (pixels).

400

UVC_FRAME_HEIGHT

Frame height (pixels).

240

UVC_CAM_FPS_FS

Full-Speed frame rate.

5

UVC_CAM_FPS_HS

High-Speed frame rate.

5

PIMA / MTP (Device)

Function

Purpose

ux_device_class_mtp_entry(command)

MTP device class entry.

ux_device_class_mtp_object_add(mtp, &object)

Notify host of new object (file).

ux_device_class_mtp_object_delete(mtp, object_handle)

Notify host object removed.

ux_device_class_mtp_event_send(mtp, &event)

Send MTP event to host.

Function

Purpose

ux_device_class_pima_entry(command)

PIMA / MTP device class entry.

ux_device_class_pima_object_info_send(...)

Send object metadata to host.

ux_device_class_pima_object_data_send(...)

Send object data to host.

ux_device_class_pima_event_send(...)

Send MTP event (e.g. capture complete) to host.

Flag Name

Description

Default Value

USBD_PIMA_EP_IN_CMD_ADDR

CMD IN endpoint address.

0x82

USBD_PIMA_EP_IN_CMD_FS_MPS

CMD IN FS Max Packet Size.

64

USBD_PIMA_EP_IN_CMD_HS_MPS

CMD IN HS Max Packet Size.

512

USBD_PIMA_EP_OUT_ADDR

Data OUT endpoint address.

0x01

USBD_PIMA_EP_IN_ADDR

Data IN endpoint address.

0x81

USBD_PIMA_EP_IN_FS_MPS

IN FS Max Packet Size.

64

USBD_PIMA_EP_IN_HS_MPS

IN HS Max Packet Size.

512

USBD_PIMA_EP_OUT_FS_MPS

OUT FS Max Packet Size.

64

USBD_PIMA_EP_OUT_HS_MPS

OUT HS Max Packet Size.

512

USBD_PIMA_EP_IN_CMD_FS_BINTERVAL

CMD IN FS polling interval.

10

USBD_PIMA_EP_IN_CMD_HS_BINTERVAL

CMD IN HS polling interval.

5

CCID (Device)

Flag Name

Description

Default Value

USBD_CCID_EPOUT_ADDR

CCID OUT endpoint address.

0x01

USBD_CCID_EPIN_ADDR

CCID IN endpoint address.

0x81

USBD_CCID_EPIN_CMD_ADDR

CCID CMD IN endpoint address.

0x82

USBD_CCID_EPOUT_FS_MPS

OUT FS Max Packet Size.

64

USBD_CCID_EPOUT_HS_MPS

OUT HS Max Packet Size.

512

USBD_CCID_EPIN_FS_MPS

IN FS Max Packet Size.

64

USBD_CCID_EPIN_HS_MPS

IN HS Max Packet Size.

512

USBD_MAX_SLOT_INDEX

Max slot index.

0

USBD_MAX_BUSY_SLOTS

Max busy slots.

1

USBD_CCID_NUMBER_OF_SUPPORTED_CLOCK

Supported clock count.

1

USBD_CCID_NUMBER_OF_SUPPORTED_DATA_RATES

Supported data rate count.

1

USBD_CCID_HEADER_MAX_BLOCK_SIZE

Header max block size.

271

USBD_CCID_DEFAULT_DATA_RATE

Default data rate.

10752

USBD_CCID_MAX_DATA_RATE

Max data rate.

10752

USBD_CCID_DEFAULT_CLOCK_FREQ

Default clock frequency.

4800

USBD_CCID_MAX_CLOCK_FREQ

Max clock frequency.

4800

USBD_CCID_PROTOCOL

Protocol.

3

USBD_CCID_VOLTAGE_SUPPLY

Voltage supply.

7

USBD_CCID_EPIN_CMD_FS_BINTERVAL

CMD IN FS polling interval.

10

USBD_CCID_EPIN_CMD_HS_BINTERVAL

CMD IN HS polling interval.

5

3. USB Host side

Host stack APIs

Host core

Function

Purpose

ux_host_stack_initialize(host_class_array, hcd_array)

Initialize host stack, register host classes and HCDs.

ux_host_stack_hcd_register(name, hcd_init, param, hcd)

Register a Host Controller Driver (HCD).

ux_host_stack_hcd_unregister(name, hcd_uninit)

Unregister an HCD.

ux_host_stack_class_register(class_name, class_entry)

Register a host class (CDC, MSC, HID, etc.).

ux_host_stack_device_insert(device)

Inform stack of device insertion (called by HCD).

ux_host_stack_device_remove(device)

Inform stack of device removal (called by HCD).

ux_host_stack_tasks_run()

Run periodic host tasks (for non-threaded ports, if implemented).

Host device access and control

Function

Purpose

ux_host_stack_device_get(index, &device)

Get a device handle by index.

ux_host_stack_device_address_get(device, &address)

Get USB address of a device.

ux_host_stack_device_configuration_get(device, &configuration)

Get current device configuration.

ux_host_stack_device_interface_get(cfg, if_index, &interface)

Get interface by index from configuration.

ux_host_stack_device_string_get(device, str_index, buf, length)

Read string descriptor from device.

ux_host_stack_transfer_request(&transfer)

Submit host transfer (control/bulk/interrupt/isochronous).

ux_host_stack_endpoint_reset(endpoint)

Reset host endpoint (clear toggle / recover errors).

Host Plug & Play notifications

Function

Purpose

ux_host_stack_register_change_function(cb)

Register callback for plug-and-play events.

Host HCD interfaces

Function

Purpose

ux_hcd_xxx_initialize(hcd)

Initialize specific HCD (OHCI / EHCI / DWC2 / …).

ux_hcd_xxx_entry(hcd, &command)

HCD command dispatcher (port reset, transfer, etc.).

Host-side configuration flags

Flag

Description

UX_HOST_ENUM_THREAD_STACK_SIZE

Stack size for host enumeration thread.

UX_HOST_HCD_THREAD_STACK_SIZE

Stack size for host HCD thread.

UX_MAX_CLASSES

Max number of host classes.

UX_MAX_HCD

Max number of host controllers.

UX_MAX_DEVICES

Max attached devices.

UX_MAX_HOST_LUN

Max SCSI logical units in host MSC.

UX_HOST_CLASS_STORAGE_MEMORY_BUFFER_SIZE

Max storage payload buffer size.

UX_MAX_ED

Max endpoint descriptors.

UX_MAX_TD

Max transfer descriptors.

UX_MAX_ISO_TD

Max isochronous transfer descriptors.

UX_HOST_CLASS_HID_DECOMPRESSION_BUFFER

Max HID decompressed buffer size.

UX_HOST_CLASS_HID_USAGES

Max HID usages per device.

UX_HOST_CLASS_HID_KEYBOARD_EVENTS_KEY_CHANGES_MODE

Enable HID keyboard key change events.

UX_HOST_CLASS_HID_KEYBOARD_EVENTS_KEY_CHANGES_MODE_REPORT _KEY_DOWN_ONLY / _LOCK_KEYS / _MODIFIER_KEYS

Report only key down events, lock key changes or modifier key changes (depending on variant).

UX_HOST_CLASS_STORAGE_MAX_MEDIA

Max number of media for host MSC.

UX_HOST_CLASS_STORAGE_INCLUDE_LEGACY_PROTOCOL_SUPPORT

Include CB/CBI legacy storage protocols.

UX_ENFORCE_SAFE_ALIGNMENT

Enforce alignment via UX_SAFE_ALIGN.

UX_HOST_CLASS_HID_REPORT_TRANSFER_TIMEOUT

HID report transfer timeout.

UX_HOST_CLASS_AUDIO_2_SUPPORT

Enable audio UAC 2.0 host support.

UX_HOST_CLASS_AUDIO_FEEDBACK_SUPPORT

Enable host audio feedback endpoint.

UX_HOST_CLASS_AUDIO_INTERRUPT_SUPPORT

Enable host audio interrupt endpoint.

UX_HOST_STACK_CONFIGURATION_INSTANCE_CREATE_CONTROL

Control when configuration instances are created.

UX_NAME_REFERENCED_BY_POINTER

Store names as pointers (not copies).

UX_HOST_CLASS_STORAGE_NO_FILEX

Remove FileX dependency from host MSC.

UX_HOST_CLASS_STORAGE_MAX_TRANSFER_SIZE

Max size of single SCSI data transfer.

UX_HOST_DEVICE_CLASS_CODE_VALIDATION_ENABLE

Enable validation of device class codes.

UX_HOST_CLASS_HID_INTERRUPT_OUT_SUPPORT

Enable HID interrupt OUT support on host.

Host-side class APIs

HID (Host)

Function

Purpose

ux_host_class_hid_entry(class, command)

HID host class entry (registered with host stack).

ux_host_class_hid_client_register(name, client_entry)

Register HID client (mouse, keyboard, custom).

ux_host_class_hid_client_unregister(name, client_entry)

Unregister HID client.

ux_host_class_hid_report_descriptor_get(hid, &desc, &len)

Get HID report descriptor.

ux_host_class_hid_report_get(hid, report_id, buf, len)

GET_REPORT from device.

ux_host_class_hid_report_set(hid, report_id, buf, len)

SET_REPORT to device.

MSC (Host)

Function

Purpose

ux_host_class_storage_entry(class, command)

MSC host class entry.

ux_host_class_storage_media_read(storage, media, block, n_blocks, buf)

Read blocks from USB storage.

ux_host_class_storage_media_write(storage, media, block, n_blocks, buf)

Write blocks to USB storage.

ux_host_class_storage_media_eject(storage)

Eject / safely remove media.

CDC-ACM (Host)

Function

Purpose

ux_host_class_cdc_acm_entry(class, command)

CDC-ACM host class entry.

ux_host_class_cdc_acm_read(cdc, buf, req_len, &act_len)

Read data from CDC-ACM device.

ux_host_class_cdc_acm_write(cdc, buf, req_len, &act_len)

Write data to CDC-ACM device.

ux_host_class_cdc_acm_ioctl(cdc, ioctl_fn, param)

Configure line coding, baud rate, control signals, etc.

Bare-metal support matrices

Device bare-metal support

Class

Bare-metal support

HID

Yes

CDC-ACM

Yes

MSC (Mass Storage)

Yes

DFU

Yes

audio

Yes

video

Yes

Printer

Yes

MTP

No

CCID

Yes

Host bare-metal support

Class

Bare-metal support

HID

Yes

CDC-ACM

Yes

MSC

Yes

audio

No

video

No

Printer

Yes

MTP

No

HUB

Yes

Gser

No

Prolific

No

Swar

No