Browse Source

Deploying to gh-pages from master @ d3584be431 🚀

gh-pages
drashna 2 years ago
parent
commit
d2f615ba62
26 changed files with 147 additions and 2784 deletions
  1. +42
    -42
      internals_SERIAL_USB.md
  2. +0
    -25
      internals_asfdoc_sam0_usb_group.md
  3. +24
    -24
      internals_defines.md
  4. +0
    -571
      internals_group_sam0_utils.md
  5. +0
    -92
      internals_group_sam0_utils_status_codes.md
  6. +16
    -16
      internals_input_callback_reg.md
  7. +29
    -29
      internals_midi_device.md
  8. +3
    -3
      internals_midi_device_setup_process.md
  9. +5
    -5
      internals_midi_util.md
  10. +22
    -22
      internals_send_functions.md
  11. +5
    -5
      internals_sysex_tools.md
  12. +0
    -56
      internals_udc_desc_group.md
  13. +0
    -148
      internals_udc_group.md
  14. +0
    -267
      internals_udc_group_interne.md
  15. +0
    -146
      internals_udd_group.md
  16. +0
    -25
      internals_udi_group.md
  17. +0
    -28
      internals_udi_hid_group.md
  18. +0
    -34
      internals_udi_hid_group_internal.md
  19. +0
    -11
      internals_udi_hid_keyboard_group_single_desc.md
  20. +0
    -9
      internals_usb_atmel_ids_group.md
  21. +0
    -27
      internals_usb_device_group.md
  22. +0
    -325
      internals_usb_device_udd_group.md
  23. +0
    -9
      internals_usb_group.md
  24. +0
    -58
      internals_usb_hid_protocol.md
  25. +0
    -806
      internals_usb_protocol_group.md
  26. +1
    -1
      newbs_building_firmware.md

+ 42
- 42
internals_SERIAL_USB.md View File

@ -1,4 +1,4 @@
# group `SERIAL_USB` {#group___s_e_r_i_a_l___u_s_b}
# group `SERIAL_USB`
## Summary
@ -36,15 +36,15 @@
## Members
#### `define `[`_qmk_usb_driver_data`](#group___s_e_r_i_a_l___u_s_b_1ga623f2c1e20bb296cf3cbdc88d153b6c9) {#group___s_e_r_i_a_l___u_s_b_1ga623f2c1e20bb296cf3cbdc88d153b6c9}
#### `define `[`_qmk_usb_driver_data`](#group___s_e_r_i_a_l___u_s_b_1ga623f2c1e20bb296cf3cbdc88d153b6c9)
`SerialDriver` specific data.
#### `define `[`_qmk_usb_driver_methods`](#group___s_e_r_i_a_l___u_s_b_1ga798bce936d06cb5332a1c0e545b84dbb) {#group___s_e_r_i_a_l___u_s_b_1ga798bce936d06cb5332a1c0e545b84dbb}
#### `define `[`_qmk_usb_driver_methods`](#group___s_e_r_i_a_l___u_s_b_1ga798bce936d06cb5332a1c0e545b84dbb)
`SerialUSBDriver` specific methods.
#### `enum `[`qmkusbstate_t`](#group___s_e_r_i_a_l___u_s_b_1ga534e1c5933a7c4785f5882ad21674302) {#group___s_e_r_i_a_l___u_s_b_1ga534e1c5933a7c4785f5882ad21674302}
#### `enum `[`qmkusbstate_t`](#group___s_e_r_i_a_l___u_s_b_1ga534e1c5933a7c4785f5882ad21674302)
Values | Descriptions
--------------------------------|---------------------------------------------
@ -54,39 +54,39 @@ QMKUSB_READY | Ready.
Driver state machine possible states.
#### `public static bool `[`qmkusb_start_receive`](#group___s_e_r_i_a_l___u_s_b_1ga4a2db2450b14c2a07c681b5d9429d76e)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1ga4a2db2450b14c2a07c681b5d9429d76e}
#### `public static bool `[`qmkusb_start_receive`](#group___s_e_r_i_a_l___u_s_b_1ga4a2db2450b14c2a07c681b5d9429d76e)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
#### `public static size_t `[`_write`](#group___s_e_r_i_a_l___u_s_b_1ga5e8117f4f91892c3d46076b0853b9116)`(void * ip,const uint8_t * bp,size_t n)` {#group___s_e_r_i_a_l___u_s_b_1ga5e8117f4f91892c3d46076b0853b9116}
#### `public static size_t `[`_write`](#group___s_e_r_i_a_l___u_s_b_1ga5e8117f4f91892c3d46076b0853b9116)`(void * ip,const uint8_t * bp,size_t n)`
#### `public static size_t `[`_read`](#group___s_e_r_i_a_l___u_s_b_1gac07ed241c806363b6d298d7b4e2c3dad)`(void * ip,uint8_t * bp,size_t n)` {#group___s_e_r_i_a_l___u_s_b_1gac07ed241c806363b6d298d7b4e2c3dad}
#### `public static size_t `[`_read`](#group___s_e_r_i_a_l___u_s_b_1gac07ed241c806363b6d298d7b4e2c3dad)`(void * ip,uint8_t * bp,size_t n)`
#### `public static msg_t `[`_put`](#group___s_e_r_i_a_l___u_s_b_1ga240a53ff8cbb972b8e9ccdd4cdbcaedd)`(void * ip,uint8_t b)` {#group___s_e_r_i_a_l___u_s_b_1ga240a53ff8cbb972b8e9ccdd4cdbcaedd}
#### `public static msg_t `[`_put`](#group___s_e_r_i_a_l___u_s_b_1ga240a53ff8cbb972b8e9ccdd4cdbcaedd)`(void * ip,uint8_t b)`
#### `public static msg_t `[`_get`](#group___s_e_r_i_a_l___u_s_b_1ga0ef118239efc83deca980513e7330658)`(void * ip)` {#group___s_e_r_i_a_l___u_s_b_1ga0ef118239efc83deca980513e7330658}
#### `public static msg_t `[`_get`](#group___s_e_r_i_a_l___u_s_b_1ga0ef118239efc83deca980513e7330658)`(void * ip)`
#### `public static msg_t `[`_putt`](#group___s_e_r_i_a_l___u_s_b_1ga63abfd1c739742e5ae219f15824e47ca)`(void * ip,uint8_t b,sysinterval_t timeout)` {#group___s_e_r_i_a_l___u_s_b_1ga63abfd1c739742e5ae219f15824e47ca}
#### `public static msg_t `[`_putt`](#group___s_e_r_i_a_l___u_s_b_1ga63abfd1c739742e5ae219f15824e47ca)`(void * ip,uint8_t b,sysinterval_t timeout)`
#### `public static msg_t `[`_gett`](#group___s_e_r_i_a_l___u_s_b_1ga122f8c98aa183cf27022ea53a7cac4d5)`(void * ip,sysinterval_t timeout)` {#group___s_e_r_i_a_l___u_s_b_1ga122f8c98aa183cf27022ea53a7cac4d5}
#### `public static msg_t `[`_gett`](#group___s_e_r_i_a_l___u_s_b_1ga122f8c98aa183cf27022ea53a7cac4d5)`(void * ip,sysinterval_t timeout)`
#### `public static size_t `[`_writet`](#group___s_e_r_i_a_l___u_s_b_1ga015a4300ed5207dec4541348a9a04671)`(void * ip,const uint8_t * bp,size_t n,sysinterval_t timeout)` {#group___s_e_r_i_a_l___u_s_b_1ga015a4300ed5207dec4541348a9a04671}
#### `public static size_t `[`_writet`](#group___s_e_r_i_a_l___u_s_b_1ga015a4300ed5207dec4541348a9a04671)`(void * ip,const uint8_t * bp,size_t n,sysinterval_t timeout)`
#### `public static size_t `[`_readt`](#group___s_e_r_i_a_l___u_s_b_1ga87af5dde7865331b7634b63a3b004914)`(void * ip,uint8_t * bp,size_t n,sysinterval_t timeout)` {#group___s_e_r_i_a_l___u_s_b_1ga87af5dde7865331b7634b63a3b004914}
#### `public static size_t `[`_readt`](#group___s_e_r_i_a_l___u_s_b_1ga87af5dde7865331b7634b63a3b004914)`(void * ip,uint8_t * bp,size_t n,sysinterval_t timeout)`
#### `public static void `[`ibnotify`](#group___s_e_r_i_a_l___u_s_b_1ga278a0b24aa52959889f37ab7e8041698)`(io_buffers_queue_t * bqp)` {#group___s_e_r_i_a_l___u_s_b_1ga278a0b24aa52959889f37ab7e8041698}
#### `public static void `[`ibnotify`](#group___s_e_r_i_a_l___u_s_b_1ga278a0b24aa52959889f37ab7e8041698)`(io_buffers_queue_t * bqp)`
Notification of empty buffer released into the input buffers queue.
#### Parameters
* `bqp` the buffers queue pointer.
#### `public static void `[`obnotify`](#group___s_e_r_i_a_l___u_s_b_1gaf0e8ad9d01f2cbe14aa5a4e49f099547)`(io_buffers_queue_t * bqp)` {#group___s_e_r_i_a_l___u_s_b_1gaf0e8ad9d01f2cbe14aa5a4e49f099547}
#### `public static void `[`obnotify`](#group___s_e_r_i_a_l___u_s_b_1gaf0e8ad9d01f2cbe14aa5a4e49f099547)`(io_buffers_queue_t * bqp)`
Notification of filled buffer inserted into the output buffers queue.
#### Parameters
* `bqp` the buffers queue pointer.
#### `public void `[`qmkusbInit`](#group___s_e_r_i_a_l___u_s_b_1ga3853659326b42a6df413177ff65d7c15)`(void)` {#group___s_e_r_i_a_l___u_s_b_1ga3853659326b42a6df413177ff65d7c15}
#### `public void `[`qmkusbInit`](#group___s_e_r_i_a_l___u_s_b_1ga3853659326b42a6df413177ff65d7c15)`(void)`
Serial Driver initialization.
@ -94,7 +94,7 @@ This function is implicitly invoked by `halInit()`, there is no need to explicit
@init
#### `public void `[`qmkusbObjectInit`](#group___s_e_r_i_a_l___u_s_b_1gaf8ba926d88993cb4fab100f1ef427e0b)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp,const `[`QMKUSBConfig`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_config)` * config)` {#group___s_e_r_i_a_l___u_s_b_1gaf8ba926d88993cb4fab100f1ef427e0b}
#### `public void `[`qmkusbObjectInit`](#group___s_e_r_i_a_l___u_s_b_1gaf8ba926d88993cb4fab100f1ef427e0b)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp,const `[`QMKUSBConfig`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_config)` * config)`
Initializes a generic full duplex driver object.
@ -105,7 +105,7 @@ The HW dependent part of the initialization has to be performed outside, usually
@init
#### `public void `[`qmkusbStart`](#group___s_e_r_i_a_l___u_s_b_1ga82f3c032f7fb6832a60d6048f69c3e3d)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp,const `[`QMKUSBConfig`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_config)` * config)` {#group___s_e_r_i_a_l___u_s_b_1ga82f3c032f7fb6832a60d6048f69c3e3d}
#### `public void `[`qmkusbStart`](#group___s_e_r_i_a_l___u_s_b_1ga82f3c032f7fb6832a60d6048f69c3e3d)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp,const `[`QMKUSBConfig`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_config)` * config)`
Configures and starts the driver.
@ -116,7 +116,7 @@ Configures and starts the driver.
@api
#### `public void `[`qmkusbStop`](#group___s_e_r_i_a_l___u_s_b_1gaa032aca2a467800dc0dc0e205b4757d5)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1gaa032aca2a467800dc0dc0e205b4757d5}
#### `public void `[`qmkusbStop`](#group___s_e_r_i_a_l___u_s_b_1gaa032aca2a467800dc0dc0e205b4757d5)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
Stops the driver.
@ -127,7 +127,7 @@ Any thread waiting on the driver's queues will be awakened with the message `MSG
@api
#### `public void `[`qmkusbSuspendHookI`](#group___s_e_r_i_a_l___u_s_b_1gad59935eea3dab7a0584fd759c884e814)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1gad59935eea3dab7a0584fd759c884e814}
#### `public void `[`qmkusbSuspendHookI`](#group___s_e_r_i_a_l___u_s_b_1gad59935eea3dab7a0584fd759c884e814)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
USB device suspend handler.
@ -138,7 +138,7 @@ Generates a `CHN_DISCONNECT` event and puts queues in non-blocking mode, this wa
@iclass
#### `public void `[`qmkusbWakeupHookI`](#group___s_e_r_i_a_l___u_s_b_1ga9bc8dd88462d0e3b39f7fdfec2c3ee55)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1ga9bc8dd88462d0e3b39f7fdfec2c3ee55}
#### `public void `[`qmkusbWakeupHookI`](#group___s_e_r_i_a_l___u_s_b_1ga9bc8dd88462d0e3b39f7fdfec2c3ee55)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
USB device wakeup handler.
@ -151,7 +151,7 @@ If this function is not called from an ISR then an explicit call to `osalOsResch
@iclass
#### `public void `[`qmkusbConfigureHookI`](#group___s_e_r_i_a_l___u_s_b_1ga920acd9f8890b819614515b73923b72f)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1ga920acd9f8890b819614515b73923b72f}
#### `public void `[`qmkusbConfigureHookI`](#group___s_e_r_i_a_l___u_s_b_1ga920acd9f8890b819614515b73923b72f)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
USB device configured handler.
@ -160,7 +160,7 @@ USB device configured handler.
@iclass
#### `public bool `[`qmkusbRequestsHook`](#group___s_e_r_i_a_l___u_s_b_1gabae5bdec8abeac31be61c976301c37ba)`(USBDriver * usbp)` {#group___s_e_r_i_a_l___u_s_b_1gabae5bdec8abeac31be61c976301c37ba}
#### `public bool `[`qmkusbRequestsHook`](#group___s_e_r_i_a_l___u_s_b_1gabae5bdec8abeac31be61c976301c37ba)`(USBDriver * usbp)`
Default requests hook.
@ -183,7 +183,7 @@ The hook status.
* `false` Message not handled.
#### `public void `[`qmkusbSOFHookI`](#group___s_e_r_i_a_l___u_s_b_1ga6db1c065c87835f96ffa248b80dbf381)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)` {#group___s_e_r_i_a_l___u_s_b_1ga6db1c065c87835f96ffa248b80dbf381}
#### `public void `[`qmkusbSOFHookI`](#group___s_e_r_i_a_l___u_s_b_1ga6db1c065c87835f96ffa248b80dbf381)`(`[`QMKUSBDriver`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver)` * qmkusbp)`
SOF handler.
@ -194,7 +194,7 @@ The SOF interrupt is used for automatic flushing of incomplete buffers pending i
@iclass
#### `public void `[`qmkusbDataTransmitted`](#group___s_e_r_i_a_l___u_s_b_1ga2baecc9d4f4ec49c7e26b5dd0740c7cd)`(USBDriver * usbp,usbep_t ep)` {#group___s_e_r_i_a_l___u_s_b_1ga2baecc9d4f4ec49c7e26b5dd0740c7cd}
#### `public void `[`qmkusbDataTransmitted`](#group___s_e_r_i_a_l___u_s_b_1ga2baecc9d4f4ec49c7e26b5dd0740c7cd)`(USBDriver * usbp,usbep_t ep)`
Default data transmitted callback.
@ -205,7 +205,7 @@ The application must use this function as callback for the IN data endpoint.
* `ep` IN endpoint number
#### `public void `[`qmkusbDataReceived`](#group___s_e_r_i_a_l___u_s_b_1gafb6e37d8a2dd4fe37aabf86d18275546)`(USBDriver * usbp,usbep_t ep)` {#group___s_e_r_i_a_l___u_s_b_1gafb6e37d8a2dd4fe37aabf86d18275546}
#### `public void `[`qmkusbDataReceived`](#group___s_e_r_i_a_l___u_s_b_1gafb6e37d8a2dd4fe37aabf86d18275546)`(USBDriver * usbp,usbep_t ep)`
Default data received callback.
@ -216,7 +216,7 @@ The application must use this function as callback for the OUT data endpoint.
* `ep` OUT endpoint number
#### `public void `[`qmkusbInterruptTransmitted`](#group___s_e_r_i_a_l___u_s_b_1ga67ee1fd2c4129831dc15194d5284cf52)`(USBDriver * usbp,usbep_t ep)` {#group___s_e_r_i_a_l___u_s_b_1ga67ee1fd2c4129831dc15194d5284cf52}
#### `public void `[`qmkusbInterruptTransmitted`](#group___s_e_r_i_a_l___u_s_b_1ga67ee1fd2c4129831dc15194d5284cf52)`(USBDriver * usbp,usbep_t ep)`
Default data received callback.
@ -227,7 +227,7 @@ The application must use this function as callback for the IN interrupt endpoint
* `ep` endpoint number
# struct `QMKUSBConfig` {#struct_q_m_k_u_s_b_config}
# struct `QMKUSBConfig`
Serial over USB Driver configuration structure.
@ -251,45 +251,45 @@ An instance of this structure must be passed to `sduStart()` in order to configu
## Members
#### `public USBDriver * `[`usbp`](#struct_q_m_k_u_s_b_config_1ada1ea0b2aba306995949dbaa24fdf71d) {#struct_q_m_k_u_s_b_config_1ada1ea0b2aba306995949dbaa24fdf71d}
#### `public USBDriver * `[`usbp`](#struct_q_m_k_u_s_b_config_1ada1ea0b2aba306995949dbaa24fdf71d)
USB driver to use.
#### `public usbep_t `[`bulk_in`](#struct_q_m_k_u_s_b_config_1afa43b7b434054546af9f4ec651c5f97e) {#struct_q_m_k_u_s_b_config_1afa43b7b434054546af9f4ec651c5f97e}
#### `public usbep_t `[`bulk_in`](#struct_q_m_k_u_s_b_config_1afa43b7b434054546af9f4ec651c5f97e)
Bulk IN endpoint used for outgoing data transfer.
#### `public usbep_t `[`bulk_out`](#struct_q_m_k_u_s_b_config_1a88cf95319b2e27fb5bcdb6d3bb116ba5) {#struct_q_m_k_u_s_b_config_1a88cf95319b2e27fb5bcdb6d3bb116ba5}
#### `public usbep_t `[`bulk_out`](#struct_q_m_k_u_s_b_config_1a88cf95319b2e27fb5bcdb6d3bb116ba5)
Bulk OUT endpoint used for incoming data transfer.
#### `public usbep_t `[`int_in`](#struct_q_m_k_u_s_b_config_1a475ce337f1cac40f24657c2030a2f268) {#struct_q_m_k_u_s_b_config_1a475ce337f1cac40f24657c2030a2f268}
#### `public usbep_t `[`int_in`](#struct_q_m_k_u_s_b_config_1a475ce337f1cac40f24657c2030a2f268)
Interrupt IN endpoint used for notifications.
If set to zero then the INT endpoint is assumed to be not present, USB descriptors must be changed accordingly.
#### `public size_t `[`in_buffers`](#struct_q_m_k_u_s_b_config_1a983983e0ca22143fd32e8dc3383c174e) {#struct_q_m_k_u_s_b_config_1a983983e0ca22143fd32e8dc3383c174e}
#### `public size_t `[`in_buffers`](#struct_q_m_k_u_s_b_config_1a983983e0ca22143fd32e8dc3383c174e)
The number of buffers in the queues.
#### `public size_t `[`out_buffers`](#struct_q_m_k_u_s_b_config_1a481eeab48689523b99a95e1666b2cb96) {#struct_q_m_k_u_s_b_config_1a481eeab48689523b99a95e1666b2cb96}
#### `public size_t `[`out_buffers`](#struct_q_m_k_u_s_b_config_1a481eeab48689523b99a95e1666b2cb96)
#### `public size_t `[`in_size`](#struct_q_m_k_u_s_b_config_1a600c0d75ca3fa7bafc2e38ce9bb0bf6e) {#struct_q_m_k_u_s_b_config_1a600c0d75ca3fa7bafc2e38ce9bb0bf6e}
#### `public size_t `[`in_size`](#struct_q_m_k_u_s_b_config_1a600c0d75ca3fa7bafc2e38ce9bb0bf6e)
The size of each buffer in the queue, typically the same as the endpoint size.
#### `public size_t `[`out_size`](#struct_q_m_k_u_s_b_config_1ac5e66af2f4fed2cf04fcbd77f1114bfb) {#struct_q_m_k_u_s_b_config_1ac5e66af2f4fed2cf04fcbd77f1114bfb}
#### `public size_t `[`out_size`](#struct_q_m_k_u_s_b_config_1ac5e66af2f4fed2cf04fcbd77f1114bfb)
#### `public bool `[`fixed_size`](#struct_q_m_k_u_s_b_config_1ad90e1bf1d310f5fbf5e8ce49b596f94b) {#struct_q_m_k_u_s_b_config_1ad90e1bf1d310f5fbf5e8ce49b596f94b}
#### `public bool `[`fixed_size`](#struct_q_m_k_u_s_b_config_1ad90e1bf1d310f5fbf5e8ce49b596f94b)
Always send full buffers in_size (the rest is filled with zeroes)
#### `public uint8_t * `[`ib`](#struct_q_m_k_u_s_b_config_1ae3be5d8a14227ab7003a9523994cae54) {#struct_q_m_k_u_s_b_config_1ae3be5d8a14227ab7003a9523994cae54}
#### `public uint8_t * `[`ib`](#struct_q_m_k_u_s_b_config_1ae3be5d8a14227ab7003a9523994cae54)
#### `public uint8_t * `[`ob`](#struct_q_m_k_u_s_b_config_1a66f479912494377c5a80dc78ac2702cc) {#struct_q_m_k_u_s_b_config_1a66f479912494377c5a80dc78ac2702cc}
#### `public uint8_t * `[`ob`](#struct_q_m_k_u_s_b_config_1a66f479912494377c5a80dc78ac2702cc)
# struct `QMKUSBDriverVMT` {#struct_q_m_k_u_s_b_driver_v_m_t}
# struct `QMKUSBDriverVMT`
```
struct QMKUSBDriverVMT
@ -305,7 +305,7 @@ struct QMKUSBDriverVMT
## Members
# struct `QMKUSBDriver` {#struct_q_m_k_u_s_b_driver}
# struct `QMKUSBDriver`
```
struct QMKUSBDriver
@ -324,7 +324,7 @@ This class extends `BaseAsynchronousChannel` by adding physical I/O queues.
## Members
#### `public const struct `[`QMKUSBDriverVMT`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver_v_m_t)` * `[`vmt`](#struct_q_m_k_u_s_b_driver_1aa84464b0edad252f9f93af83c669501e) {#struct_q_m_k_u_s_b_driver_1aa84464b0edad252f9f93af83c669501e}
#### `public const struct `[`QMKUSBDriverVMT`](.build/docs/internals_SERIAL_USB.md#struct_q_m_k_u_s_b_driver_v_m_t)` * `[`vmt`](#struct_q_m_k_u_s_b_driver_1aa84464b0edad252f9f93af83c669501e)
Virtual Methods Table.

+ 0
- 25
internals_asfdoc_sam0_usb_group.md View File

@ -1,25 +0,0 @@
# group `asfdoc_sam0_usb_group` {#group__asfdoc__sam0__usb__group}
The Universal Serial Bus (USB) module complies with the USB 2.1 specification.
The following peripherals are used by this module:
* USB (Universal Serial Bus)
The following devices can use this module:
* Atmel | SMART SAM D51
The USB module covers following mode:
The USB module covers following speed:
* USB Full Speed (12Mbit/s)
USB support needs whole set of enumeration process, to make the device recognizable and usable. The USB driver is designed to interface to the USB Stack in Atmel Software Framework (ASF).
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------

+ 24
- 24
internals_defines.md View File

@ -1,4 +1,4 @@
# group `defines` {#group__defines}
# group `defines`
## Summary
@ -30,49 +30,49 @@
## Members
#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79) {#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79}
#### `define `[`SYSEX_BEGIN`](#group__defines_1ga1a3c39bb790dda8a368c4247caabcf79)
#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed) {#group__defines_1ga753706d1d28e6f96d7caf1973e80feed}
#### `define `[`SYSEX_END`](#group__defines_1ga753706d1d28e6f96d7caf1973e80feed)
#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69) {#group__defines_1gab78a1c818a5f5dab7a8946543f126c69}
#### `define `[`MIDI_STATUSMASK`](#group__defines_1gab78a1c818a5f5dab7a8946543f126c69)
#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909) {#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909}
#### `define `[`MIDI_CHANMASK`](#group__defines_1ga239edc0a6f8405d3a8f2804f1590b909)
#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215) {#group__defines_1ga45f116a1daab76b3c930c2cecfaef215}
#### `define `[`MIDI_CC`](#group__defines_1ga45f116a1daab76b3c930c2cecfaef215)
#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7) {#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7}
#### `define `[`MIDI_NOTEON`](#group__defines_1gafd416f27bf3590868c0c1f55c30be4c7)
#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc) {#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc}
#### `define `[`MIDI_NOTEOFF`](#group__defines_1gabed24bea2d989fd655e2ef2ad0765adc)
#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f) {#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f}
#### `define `[`MIDI_AFTERTOUCH`](#group__defines_1ga3a322d8cfd53576a2e167c1840551b0f)
#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4) {#group__defines_1gabcc799504e8064679bca03f232223af4}
#### `define `[`MIDI_PITCHBEND`](#group__defines_1gabcc799504e8064679bca03f232223af4)
#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42) {#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42}
#### `define `[`MIDI_PROGCHANGE`](#group__defines_1gaefb3f1595ffbb9db66b46c2c919a3d42)
#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe) {#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe}
#### `define `[`MIDI_CHANPRESSURE`](#group__defines_1gaeb3281cc7fcd0daade8ed3d2dfc33dbe)
#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89) {#group__defines_1gafa5e4e295aafd15ab7893344599b3b89}
#### `define `[`MIDI_CLOCK`](#group__defines_1gafa5e4e295aafd15ab7893344599b3b89)
#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7) {#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7}
#### `define `[`MIDI_TICK`](#group__defines_1ga3b99408ff864613765d4c3c2ceb52aa7)
#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4) {#group__defines_1ga8233631c85823aa546f932ad8975caa4}
#### `define `[`MIDI_START`](#group__defines_1ga8233631c85823aa546f932ad8975caa4)
#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c) {#group__defines_1gab24430f0081e27215b0da84dd0ee745c}
#### `define `[`MIDI_CONTINUE`](#group__defines_1gab24430f0081e27215b0da84dd0ee745c)
#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62) {#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62}
#### `define `[`MIDI_STOP`](#group__defines_1ga3af9271d4b1f0d22904a0b055f48cf62)
#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677) {#group__defines_1gacd88ed42dba52bb4b2052c5656362677}
#### `define `[`MIDI_ACTIVESENSE`](#group__defines_1gacd88ed42dba52bb4b2052c5656362677)
#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b) {#group__defines_1ga02947f30ca62dc332fdeb10c5868323b}
#### `define `[`MIDI_RESET`](#group__defines_1ga02947f30ca62dc332fdeb10c5868323b)
#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31) {#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31}
#### `define `[`MIDI_TC_QUARTERFRAME`](#group__defines_1gaaa072f33590e236d1bfd8f28e833ae31)
#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705) {#group__defines_1ga412f6ed33a2150051374bee334ee1705}
#### `define `[`MIDI_SONGPOSITION`](#group__defines_1ga412f6ed33a2150051374bee334ee1705)
#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e) {#group__defines_1gafcab254838b028365ae0259729e72c4e}
#### `define `[`MIDI_SONGSELECT`](#group__defines_1gafcab254838b028365ae0259729e72c4e)
#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795) {#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795}
#### `define `[`MIDI_TUNEREQUEST`](#group__defines_1ga8100b907b8c0a84e58b1c53dcd9bd795)
#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f) {#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f}
#### `define `[`SYSEX_EDUMANUFID`](#group__defines_1ga5ef855ed955b00a2239ca16afbeb164f)

+ 0
- 571
internals_group_sam0_utils.md View File

@ -1,571 +0,0 @@
# group `group_sam0_utils` {#group__group__sam0__utils}
Compiler abstraction layer and code utilities for Cortex-M0+ based Atmel SAM devices. This module provides various abstraction layers and utilities to make code compatible between different compilers.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`UNUSED`](#group__group__sam0__utils_1gada67c62b1c57e07efa04431bc40b9238) | Marking *v* as a unused parameter or value.
`define `[`barrier`](#group__group__sam0__utils_1ga53290ac2df2384738b8769c76622f803) | Memory barrier.
`define `[`COMPILER_PRAGMA`](#group__group__sam0__utils_1ga85a3ab5701281268521f109ed0078668) | Emit the compiler pragma *arg*.
`define `[`COMPILER_PACK_SET`](#group__group__sam0__utils_1gae2c02ff865ca6538b4b1bddbf2a6876c) | Set maximum alignment for subsequent struct and union definitions to *alignment*.
`define `[`COMPILER_PACK_RESET`](#group__group__sam0__utils_1ga38d28b622a4bc7b0f3fb2be2ef1e0086) | Set default alignment for subsequent struct and union definitions.
`define `[`Assert`](#group__group__sam0__utils_1gaab1e54dcc40192f9704e8b252635450f) | This macro is used to test fatal errors.
`define `[`Long_call`](#group__group__sam0__utils_1ga5b759626f343cc1af9159cc02b763837) | Calls the routine at address *addr*.
`define `[`div_ceil`](#group__group__sam0__utils_1ga6d4ebd841bc96041a7f3a61e227c1fb2) | Calculate $ \left\lceil \frac{a}{b} \right\rceil $ using integer arithmetic.
`define `[`FUNC_PTR`](#group__group__sam0__utils_1gacce64924b686dd08a83042b35d0d1480) |
`define `[`unused`](#group__group__sam0__utils_1ga417dba7f63dde98dbebd6336d8af9d91) | Marking *v* as a unused parameter or value.
`define `[`MSB`](#group__group__sam0__utils_1gabee1b74eceef5a0cf26efbf3ff87ccbf) | Most significant byte of *u16*.
`define `[`LSB`](#group__group__sam0__utils_1gabd2fa7b756342ae251e3a7a66670c2fe) | Least significant byte of *u16*.
`define `[`MSH`](#group__group__sam0__utils_1ga2e9046f49816ad27148660f5ba993696) | Most significant half-word of *u32*.
`define `[`LSH`](#group__group__sam0__utils_1gae79954742b5a668ce83ab79ac9d9804b) | Least significant half-word of *u32*.
`define `[`MSB0W`](#group__group__sam0__utils_1ga25110f05bdb5b5ea3fcb2854a1a07d7a) | Most significant byte of 1st rank of *u32*.
`define `[`MSB1W`](#group__group__sam0__utils_1ga0f90ecd0b0f0e15608a95b8367b77ece) | Most significant byte of 2nd rank of *u32*.
`define `[`MSB2W`](#group__group__sam0__utils_1ga0207e10a3c4bcca172463cd5e3ebd865) | Most significant byte of 3rd rank of *u32*.
`define `[`MSB3W`](#group__group__sam0__utils_1gad6ab5ac6e3e95525d56d757c9718e352) | Most significant byte of 4th rank of *u32*.
`define `[`LSB3W`](#group__group__sam0__utils_1ga04e75e548b33b9cc22699b4249ff6c64) | Least significant byte of 4th rank of *u32*.
`define `[`LSB2W`](#group__group__sam0__utils_1gad8fda97f8caa00fcfa84f712ee7627d6) | Least significant byte of 3rd rank of *u32*.
`define `[`LSB1W`](#group__group__sam0__utils_1ga84cbbcad1971cdb2987418e6ae6cb4ff) | Least significant byte of 2nd rank of *u32*.
`define `[`LSB0W`](#group__group__sam0__utils_1ga2ca8582260a8ada6cdd457cf37ba37a7) | Least significant byte of 1st rank of *u32*.
`define `[`MSW`](#group__group__sam0__utils_1gad71e5e84d2cec4387415a55f5c62b01b) | Most significant word of *u64*.
`define `[`LSW`](#group__group__sam0__utils_1ga0633993fb1f2d96a56385f09beed7bc7) | Least significant word of *u64*.
`define `[`MSH0`](#group__group__sam0__utils_1ga280d6a94884872f6a5be80c873e8adc1) | Most significant half-word of 1st rank of *u64*.
`define `[`MSH1`](#group__group__sam0__utils_1ga43de4fac62f938ff4eb448a87522ec0e) | Most significant half-word of 2nd rank of *u64*.
`define `[`MSH2`](#group__group__sam0__utils_1ga5d32ec744212194c8106c51b89a5dfe9) | Most significant half-word of 3rd rank of *u64*.
`define `[`MSH3`](#group__group__sam0__utils_1gabb233f238b63c12d2ff361d9ddb3114b) | Most significant half-word of 4th rank of *u64*.
`define `[`LSH3`](#group__group__sam0__utils_1ga1ec33d340ef17c91cb0530d00ccb0ea8) | Least significant half-word of 4th rank of *u64*.
`define `[`LSH2`](#group__group__sam0__utils_1ga2efccfe683ebf7d89a972fbbdea2c26d) | Least significant half-word of 3rd rank of *u64*.
`define `[`LSH1`](#group__group__sam0__utils_1gac593b0be4555d883b4297b45cffc4168) | Least significant half-word of 2nd rank of *u64*.
`define `[`LSH0`](#group__group__sam0__utils_1ga3026b9288b45a9794fd3eb585cbe10bc) | Least significant half-word of 1st rank of *u64*.
`define `[`MSB0D`](#group__group__sam0__utils_1ga5f24ecf381776ee415991a545a05e4c7) | Most significant byte of 1st rank of *u64*.
`define `[`MSB1D`](#group__group__sam0__utils_1ga97a0ab6790df95cb4d8021d8850487f8) | Most significant byte of 2nd rank of *u64*.
`define `[`MSB2D`](#group__group__sam0__utils_1gad4ceacba543e7b8617ca4bd075abb146) | Most significant byte of 3rd rank of *u64*.
`define `[`MSB3D`](#group__group__sam0__utils_1gaf7972d3282ec9ecb97afa34e848ede2c) | Most significant byte of 4th rank of *u64*.
`define `[`MSB4D`](#group__group__sam0__utils_1ga1c891624c33b13808633af8dbcaafa5f) | Most significant byte of 5th rank of *u64*.
`define `[`MSB5D`](#group__group__sam0__utils_1ga5e61db58aaf5cbb3051240cdcb1b5147) | Most significant byte of 6th rank of *u64*.
`define `[`MSB6D`](#group__group__sam0__utils_1gacb8062d046ca06f5c28c9a015997494b) | Most significant byte of 7th rank of *u64*.
`define `[`MSB7D`](#group__group__sam0__utils_1ga0cbce69964fa2dd7bf05911d0b99b014) | Most significant byte of 8th rank of *u64*.
`define `[`LSB7D`](#group__group__sam0__utils_1ga79fb849e13082fdd4adb02debbad7f1a) | Least significant byte of 8th rank of *u64*.
`define `[`LSB6D`](#group__group__sam0__utils_1gab90afefaf3b5cb2507ab3c496d8f643c) | Least significant byte of 7th rank of *u64*.
`define `[`LSB5D`](#group__group__sam0__utils_1gac379acb246797736332fa1b8ae481b34) | Least significant byte of 6th rank of *u64*.
`define `[`LSB4D`](#group__group__sam0__utils_1gaab745f30b9b841f9ccd9ace0a5a1a9e5) | Least significant byte of 5th rank of *u64*.
`define `[`LSB3D`](#group__group__sam0__utils_1ga99213c01b979c347950eba4277f0499a) | Least significant byte of 4th rank of *u64*.
`define `[`LSB2D`](#group__group__sam0__utils_1gaba3bea07dcc4a37039b7effd4da03b9e) | Least significant byte of 3rd rank of *u64*.
`define `[`LSB1D`](#group__group__sam0__utils_1ga42179f159b798116eb615102a549aa85) | Least significant byte of 2nd rank of *u64*.
`define `[`LSB0D`](#group__group__sam0__utils_1ga2e20f5ef87ccf0ad44c1d49d6ffd80a3) | Least significant byte of 1st rank of *u64*.
`define `[`LSB0`](#group__group__sam0__utils_1ga844ec34df36feb927dc92007af14674a) | Least significant byte of 1st rank of *u32*.
`define `[`LSB1`](#group__group__sam0__utils_1ga2d1e45154b07481f0579ecc725e4edff) | Least significant byte of 2nd rank of *u32*.
`define `[`LSB2`](#group__group__sam0__utils_1ga8967f5ae0174b01ce44c502ebd14035a) | Least significant byte of 3rd rank of *u32*.
`define `[`LSB3`](#group__group__sam0__utils_1ga5d9ff393e7c8764112a1167db19b16b1) | Least significant byte of 4th rank of *u32*.
`define `[`MSB3`](#group__group__sam0__utils_1gaeeb8918fc580ce01d45f71863eebff90) | Most significant byte of 4th rank of *u32*.
`define `[`MSB2`](#group__group__sam0__utils_1ga8683254be29bcfe3cf2fa646890d3942) | Most significant byte of 3rd rank of *u32*.
`define `[`MSB1`](#group__group__sam0__utils_1ga3facab9f8ebf70ad6e16038465e2bedc) | Most significant byte of 2nd rank of *u32*.
`define `[`MSB0`](#group__group__sam0__utils_1gafb81783b8186acd7182a971048b0c6b3) | Most significant byte of 1st rank of *u32*.
`define `[`FLASH_DECLARE`](#group__group__sam0__utils_1ga9b84ecc6b34a71f797ceb8b8f7b8d384) |
`define `[`FLASH_EXTERN`](#group__group__sam0__utils_1gaaef0fd990bb5bd9cdf11334f7c689fd7) |
`define `[`PGM_READ_BYTE`](#group__group__sam0__utils_1gafe9b83c73d4840986478ec67d3eb7718) |
`define `[`PGM_READ_WORD`](#group__group__sam0__utils_1ga92576bffe51090dcb6d5c67e07b9eec7) |
`define `[`MEMCPY_ENDIAN`](#group__group__sam0__utils_1ga85a7d71a016789b1766f9b27d0530347) |
`define `[`PGM_READ_BLOCK`](#group__group__sam0__utils_1ga8900e4615b7d7143a6c38e2a39087538) |
`define `[`CMD_ID_OCTET`](#group__group__sam0__utils_1gabf2b95fa77301377cdcf79eb615551db) |
`define `[`CPU_ENDIAN_TO_LE16`](#group__group__sam0__utils_1ga7c15ca0f3159182efc4b80a00768c2c0) |
`define `[`CPU_ENDIAN_TO_LE32`](#group__group__sam0__utils_1gaa2fd4bfb7af44220ce4205e2aa371017) |
`define `[`CPU_ENDIAN_TO_LE64`](#group__group__sam0__utils_1ga6f1e86f452c8f327f9ca96cbf6a65c81) |
`define `[`LE16_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gaceb02fdef243c22d2559e260185fb579) |
`define `[`LE32_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga2df63369ef525ba98832132ce5a43346) |
`define `[`LE64_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gab675071ce5a4644b205cdbc858417ccd) |
`define `[`CLE16_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga4ac6e032d1ce0ae6d2e460da93ce8732) |
`define `[`CLE32_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga3ff07a7496222efe8bc7d7b7b0342b0d) |
`define `[`CLE64_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gacbbba93256e2d892c748d56a42f00f9b) |
`define `[`CCPU_ENDIAN_TO_LE16`](#group__group__sam0__utils_1ga5fd2d3ed2fc9234277b659b67d33bc64) |
`define `[`CCPU_ENDIAN_TO_LE32`](#group__group__sam0__utils_1ga1e3290451e5c7b98175911c9219b5123) |
`define `[`CCPU_ENDIAN_TO_LE64`](#group__group__sam0__utils_1ga00483bf27ea1e8a2143c6baf22b31f16) |
`define `[`ADDR_COPY_DST_SRC_16`](#group__group__sam0__utils_1gac4609178e5c825e815f44fa123dcaaf7) |
`define `[`ADDR_COPY_DST_SRC_64`](#group__group__sam0__utils_1ga0454afa80924c2183c8c672c043440cc) |
`public inline static void `[`convert_64_bit_to_byte_array`](#group__group__sam0__utils_1gadca7cebb159c7ed180d3d07cccb74245)`(uint64_t value,uint8_t * data)` | Converts a 64-Bit value into a 8 Byte array.
`public inline static void `[`convert_16_bit_to_byte_array`](#group__group__sam0__utils_1ga2de8d131d6afca8b368486f56c911e75)`(uint16_t value,uint8_t * data)` | Converts a 16-Bit value into a 2 Byte array.
`public inline static void `[`convert_spec_16_bit_to_byte_array`](#group__group__sam0__utils_1gaa9724d81bfe44a06b0372d144cd98e36)`(uint16_t value,uint8_t * data)` |
`public inline static void `[`convert_16_bit_to_byte_address`](#group__group__sam0__utils_1ga9634f2d7292e1209fe3b83254a66c450)`(uint16_t value,uint8_t * data)` |
`public inline static uint16_t `[`convert_byte_array_to_16_bit`](#group__group__sam0__utils_1gad3726f56d0820acc7bae83993bd8897c)`(uint8_t * data)` |
`public inline static uint32_t `[`convert_byte_array_to_32_bit`](#group__group__sam0__utils_1ga6e01ed4a4718b439d295b5124ede09e3)`(uint8_t * data)` |
`public inline static uint64_t `[`convert_byte_array_to_64_bit`](#group__group__sam0__utils_1ga45ffdbdc2d7a6d1dbf91b2fe8d880347)`(uint8_t * data)` | Converts a 8 Byte array into a 64-Bit value.
`struct `[`StructPtr`](#struct_struct_ptr) | Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
`struct `[`StructVPtr`](#struct_struct_v_ptr) | Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
`struct `[`StructCPtr`](#struct_struct_c_ptr) | Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
`struct `[`StructCVPtr`](#struct_struct_c_v_ptr) | Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
`union `[`Union16`](#union_union16) | 16-bit union.
`union `[`Union32`](#union_union32) | 32-bit union.
`union `[`Union64`](#union_union64) | 64-bit union.
`union `[`UnionPtr`](#union_union_ptr) | Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
`union `[`UnionVPtr`](#union_union_v_ptr) | Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
`union `[`UnionCPtr`](#union_union_c_ptr) | Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
`union `[`UnionCVPtr`](#union_union_c_v_ptr) | Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
## Members
#### `define `[`UNUSED`](#group__group__sam0__utils_1gada67c62b1c57e07efa04431bc40b9238) {#group__group__sam0__utils_1gada67c62b1c57e07efa04431bc40b9238}
Marking *v* as a unused parameter or value.
#### `define `[`barrier`](#group__group__sam0__utils_1ga53290ac2df2384738b8769c76622f803) {#group__group__sam0__utils_1ga53290ac2df2384738b8769c76622f803}
Memory barrier.
#### `define `[`COMPILER_PRAGMA`](#group__group__sam0__utils_1ga85a3ab5701281268521f109ed0078668) {#group__group__sam0__utils_1ga85a3ab5701281268521f109ed0078668}
Emit the compiler pragma *arg*.
#### Parameters
* `arg` The pragma directive as it would appear after *#pragma* (i.e. not stringified).
#### `define `[`COMPILER_PACK_SET`](#group__group__sam0__utils_1gae2c02ff865ca6538b4b1bddbf2a6876c) {#group__group__sam0__utils_1gae2c02ff865ca6538b4b1bddbf2a6876c}
Set maximum alignment for subsequent struct and union definitions to *alignment*.
#### `define `[`COMPILER_PACK_RESET`](#group__group__sam0__utils_1ga38d28b622a4bc7b0f3fb2be2ef1e0086) {#group__group__sam0__utils_1ga38d28b622a4bc7b0f3fb2be2ef1e0086}
Set default alignment for subsequent struct and union definitions.
#### `define `[`Assert`](#group__group__sam0__utils_1gaab1e54dcc40192f9704e8b252635450f) {#group__group__sam0__utils_1gaab1e54dcc40192f9704e8b252635450f}
This macro is used to test fatal errors.
The macro tests if the expression is false. If it is, a fatal error is detected and the application hangs up. If `TEST_SUITE_DEFINE_ASSERT_MACRO` is defined, a unit test version of the macro is used, to allow execution of further tests after a false expression.
#### Parameters
* `expr` Expression to evaluate and supposed to be nonzero.
#### `define `[`Long_call`](#group__group__sam0__utils_1ga5b759626f343cc1af9159cc02b763837) {#group__group__sam0__utils_1ga5b759626f343cc1af9159cc02b763837}
Calls the routine at address *addr*.
It generates a long call opcode.
For example, [Long_call(0x80000000)](.build/docs/internals_undefined.md#group__group__sam0__utils_1ga5b759626f343cc1af9159cc02b763837) generates a software reset on a UC3 if it is invoked from the CPU supervisor mode.
#### Parameters
* `addr` Address of the routine to call.
It may be used as a long jump opcode in some special cases.
#### `define `[`div_ceil`](#group__group__sam0__utils_1ga6d4ebd841bc96041a7f3a61e227c1fb2) {#group__group__sam0__utils_1ga6d4ebd841bc96041a7f3a61e227c1fb2}
Calculate $ \left\lceil \frac{a}{b} \right\rceil $ using integer arithmetic.
#### Parameters
* `a` An integer
* `b` Another integer
#### Returns
(*a* / *b*) rounded up to the nearest integer.
#### `define `[`FUNC_PTR`](#group__group__sam0__utils_1gacce64924b686dd08a83042b35d0d1480) {#group__group__sam0__utils_1gacce64924b686dd08a83042b35d0d1480}
#### `define `[`unused`](#group__group__sam0__utils_1ga417dba7f63dde98dbebd6336d8af9d91) {#group__group__sam0__utils_1ga417dba7f63dde98dbebd6336d8af9d91}
Marking *v* as a unused parameter or value.
#### `define `[`MSB`](#group__group__sam0__utils_1gabee1b74eceef5a0cf26efbf3ff87ccbf) {#group__group__sam0__utils_1gabee1b74eceef5a0cf26efbf3ff87ccbf}
Most significant byte of *u16*.
#### `define `[`LSB`](#group__group__sam0__utils_1gabd2fa7b756342ae251e3a7a66670c2fe) {#group__group__sam0__utils_1gabd2fa7b756342ae251e3a7a66670c2fe}
Least significant byte of *u16*.
#### `define `[`MSH`](#group__group__sam0__utils_1ga2e9046f49816ad27148660f5ba993696) {#group__group__sam0__utils_1ga2e9046f49816ad27148660f5ba993696}
Most significant half-word of *u32*.
#### `define `[`LSH`](#group__group__sam0__utils_1gae79954742b5a668ce83ab79ac9d9804b) {#group__group__sam0__utils_1gae79954742b5a668ce83ab79ac9d9804b}
Least significant half-word of *u32*.
#### `define `[`MSB0W`](#group__group__sam0__utils_1ga25110f05bdb5b5ea3fcb2854a1a07d7a) {#group__group__sam0__utils_1ga25110f05bdb5b5ea3fcb2854a1a07d7a}
Most significant byte of 1st rank of *u32*.
#### `define `[`MSB1W`](#group__group__sam0__utils_1ga0f90ecd0b0f0e15608a95b8367b77ece) {#group__group__sam0__utils_1ga0f90ecd0b0f0e15608a95b8367b77ece}
Most significant byte of 2nd rank of *u32*.
#### `define `[`MSB2W`](#group__group__sam0__utils_1ga0207e10a3c4bcca172463cd5e3ebd865) {#group__group__sam0__utils_1ga0207e10a3c4bcca172463cd5e3ebd865}
Most significant byte of 3rd rank of *u32*.
#### `define `[`MSB3W`](#group__group__sam0__utils_1gad6ab5ac6e3e95525d56d757c9718e352) {#group__group__sam0__utils_1gad6ab5ac6e3e95525d56d757c9718e352}
Most significant byte of 4th rank of *u32*.
#### `define `[`LSB3W`](#group__group__sam0__utils_1ga04e75e548b33b9cc22699b4249ff6c64) {#group__group__sam0__utils_1ga04e75e548b33b9cc22699b4249ff6c64}
Least significant byte of 4th rank of *u32*.
#### `define `[`LSB2W`](#group__group__sam0__utils_1gad8fda97f8caa00fcfa84f712ee7627d6) {#group__group__sam0__utils_1gad8fda97f8caa00fcfa84f712ee7627d6}
Least significant byte of 3rd rank of *u32*.
#### `define `[`LSB1W`](#group__group__sam0__utils_1ga84cbbcad1971cdb2987418e6ae6cb4ff) {#group__group__sam0__utils_1ga84cbbcad1971cdb2987418e6ae6cb4ff}
Least significant byte of 2nd rank of *u32*.
#### `define `[`LSB0W`](#group__group__sam0__utils_1ga2ca8582260a8ada6cdd457cf37ba37a7) {#group__group__sam0__utils_1ga2ca8582260a8ada6cdd457cf37ba37a7}
Least significant byte of 1st rank of *u32*.
#### `define `[`MSW`](#group__group__sam0__utils_1gad71e5e84d2cec4387415a55f5c62b01b) {#group__group__sam0__utils_1gad71e5e84d2cec4387415a55f5c62b01b}
Most significant word of *u64*.
#### `define `[`LSW`](#group__group__sam0__utils_1ga0633993fb1f2d96a56385f09beed7bc7) {#group__group__sam0__utils_1ga0633993fb1f2d96a56385f09beed7bc7}
Least significant word of *u64*.
#### `define `[`MSH0`](#group__group__sam0__utils_1ga280d6a94884872f6a5be80c873e8adc1) {#group__group__sam0__utils_1ga280d6a94884872f6a5be80c873e8adc1}
Most significant half-word of 1st rank of *u64*.
#### `define `[`MSH1`](#group__group__sam0__utils_1ga43de4fac62f938ff4eb448a87522ec0e) {#group__group__sam0__utils_1ga43de4fac62f938ff4eb448a87522ec0e}
Most significant half-word of 2nd rank of *u64*.
#### `define `[`MSH2`](#group__group__sam0__utils_1ga5d32ec744212194c8106c51b89a5dfe9) {#group__group__sam0__utils_1ga5d32ec744212194c8106c51b89a5dfe9}
Most significant half-word of 3rd rank of *u64*.
#### `define `[`MSH3`](#group__group__sam0__utils_1gabb233f238b63c12d2ff361d9ddb3114b) {#group__group__sam0__utils_1gabb233f238b63c12d2ff361d9ddb3114b}
Most significant half-word of 4th rank of *u64*.
#### `define `[`LSH3`](#group__group__sam0__utils_1ga1ec33d340ef17c91cb0530d00ccb0ea8) {#group__group__sam0__utils_1ga1ec33d340ef17c91cb0530d00ccb0ea8}
Least significant half-word of 4th rank of *u64*.
#### `define `[`LSH2`](#group__group__sam0__utils_1ga2efccfe683ebf7d89a972fbbdea2c26d) {#group__group__sam0__utils_1ga2efccfe683ebf7d89a972fbbdea2c26d}
Least significant half-word of 3rd rank of *u64*.
#### `define `[`LSH1`](#group__group__sam0__utils_1gac593b0be4555d883b4297b45cffc4168) {#group__group__sam0__utils_1gac593b0be4555d883b4297b45cffc4168}
Least significant half-word of 2nd rank of *u64*.
#### `define `[`LSH0`](#group__group__sam0__utils_1ga3026b9288b45a9794fd3eb585cbe10bc) {#group__group__sam0__utils_1ga3026b9288b45a9794fd3eb585cbe10bc}
Least significant half-word of 1st rank of *u64*.
#### `define `[`MSB0D`](#group__group__sam0__utils_1ga5f24ecf381776ee415991a545a05e4c7) {#group__group__sam0__utils_1ga5f24ecf381776ee415991a545a05e4c7}
Most significant byte of 1st rank of *u64*.
#### `define `[`MSB1D`](#group__group__sam0__utils_1ga97a0ab6790df95cb4d8021d8850487f8) {#group__group__sam0__utils_1ga97a0ab6790df95cb4d8021d8850487f8}
Most significant byte of 2nd rank of *u64*.
#### `define `[`MSB2D`](#group__group__sam0__utils_1gad4ceacba543e7b8617ca4bd075abb146) {#group__group__sam0__utils_1gad4ceacba543e7b8617ca4bd075abb146}
Most significant byte of 3rd rank of *u64*.
#### `define `[`MSB3D`](#group__group__sam0__utils_1gaf7972d3282ec9ecb97afa34e848ede2c) {#group__group__sam0__utils_1gaf7972d3282ec9ecb97afa34e848ede2c}
Most significant byte of 4th rank of *u64*.
#### `define `[`MSB4D`](#group__group__sam0__utils_1ga1c891624c33b13808633af8dbcaafa5f) {#group__group__sam0__utils_1ga1c891624c33b13808633af8dbcaafa5f}
Most significant byte of 5th rank of *u64*.
#### `define `[`MSB5D`](#group__group__sam0__utils_1ga5e61db58aaf5cbb3051240cdcb1b5147) {#group__group__sam0__utils_1ga5e61db58aaf5cbb3051240cdcb1b5147}
Most significant byte of 6th rank of *u64*.
#### `define `[`MSB6D`](#group__group__sam0__utils_1gacb8062d046ca06f5c28c9a015997494b) {#group__group__sam0__utils_1gacb8062d046ca06f5c28c9a015997494b}
Most significant byte of 7th rank of *u64*.
#### `define `[`MSB7D`](#group__group__sam0__utils_1ga0cbce69964fa2dd7bf05911d0b99b014) {#group__group__sam0__utils_1ga0cbce69964fa2dd7bf05911d0b99b014}
Most significant byte of 8th rank of *u64*.
#### `define `[`LSB7D`](#group__group__sam0__utils_1ga79fb849e13082fdd4adb02debbad7f1a) {#group__group__sam0__utils_1ga79fb849e13082fdd4adb02debbad7f1a}
Least significant byte of 8th rank of *u64*.
#### `define `[`LSB6D`](#group__group__sam0__utils_1gab90afefaf3b5cb2507ab3c496d8f643c) {#group__group__sam0__utils_1gab90afefaf3b5cb2507ab3c496d8f643c}
Least significant byte of 7th rank of *u64*.
#### `define `[`LSB5D`](#group__group__sam0__utils_1gac379acb246797736332fa1b8ae481b34) {#group__group__sam0__utils_1gac379acb246797736332fa1b8ae481b34}
Least significant byte of 6th rank of *u64*.
#### `define `[`LSB4D`](#group__group__sam0__utils_1gaab745f30b9b841f9ccd9ace0a5a1a9e5) {#group__group__sam0__utils_1gaab745f30b9b841f9ccd9ace0a5a1a9e5}
Least significant byte of 5th rank of *u64*.
#### `define `[`LSB3D`](#group__group__sam0__utils_1ga99213c01b979c347950eba4277f0499a) {#group__group__sam0__utils_1ga99213c01b979c347950eba4277f0499a}
Least significant byte of 4th rank of *u64*.
#### `define `[`LSB2D`](#group__group__sam0__utils_1gaba3bea07dcc4a37039b7effd4da03b9e) {#group__group__sam0__utils_1gaba3bea07dcc4a37039b7effd4da03b9e}
Least significant byte of 3rd rank of *u64*.
#### `define `[`LSB1D`](#group__group__sam0__utils_1ga42179f159b798116eb615102a549aa85) {#group__group__sam0__utils_1ga42179f159b798116eb615102a549aa85}
Least significant byte of 2nd rank of *u64*.
#### `define `[`LSB0D`](#group__group__sam0__utils_1ga2e20f5ef87ccf0ad44c1d49d6ffd80a3) {#group__group__sam0__utils_1ga2e20f5ef87ccf0ad44c1d49d6ffd80a3}
Least significant byte of 1st rank of *u64*.
#### `define `[`LSB0`](#group__group__sam0__utils_1ga844ec34df36feb927dc92007af14674a) {#group__group__sam0__utils_1ga844ec34df36feb927dc92007af14674a}
Least significant byte of 1st rank of *u32*.
#### `define `[`LSB1`](#group__group__sam0__utils_1ga2d1e45154b07481f0579ecc725e4edff) {#group__group__sam0__utils_1ga2d1e45154b07481f0579ecc725e4edff}
Least significant byte of 2nd rank of *u32*.
#### `define `[`LSB2`](#group__group__sam0__utils_1ga8967f5ae0174b01ce44c502ebd14035a) {#group__group__sam0__utils_1ga8967f5ae0174b01ce44c502ebd14035a}
Least significant byte of 3rd rank of *u32*.
#### `define `[`LSB3`](#group__group__sam0__utils_1ga5d9ff393e7c8764112a1167db19b16b1) {#group__group__sam0__utils_1ga5d9ff393e7c8764112a1167db19b16b1}
Least significant byte of 4th rank of *u32*.
#### `define `[`MSB3`](#group__group__sam0__utils_1gaeeb8918fc580ce01d45f71863eebff90) {#group__group__sam0__utils_1gaeeb8918fc580ce01d45f71863eebff90}
Most significant byte of 4th rank of *u32*.
#### `define `[`MSB2`](#group__group__sam0__utils_1ga8683254be29bcfe3cf2fa646890d3942) {#group__group__sam0__utils_1ga8683254be29bcfe3cf2fa646890d3942}
Most significant byte of 3rd rank of *u32*.
#### `define `[`MSB1`](#group__group__sam0__utils_1ga3facab9f8ebf70ad6e16038465e2bedc) {#group__group__sam0__utils_1ga3facab9f8ebf70ad6e16038465e2bedc}
Most significant byte of 2nd rank of *u32*.
#### `define `[`MSB0`](#group__group__sam0__utils_1gafb81783b8186acd7182a971048b0c6b3) {#group__group__sam0__utils_1gafb81783b8186acd7182a971048b0c6b3}
Most significant byte of 1st rank of *u32*.
#### `define `[`FLASH_DECLARE`](#group__group__sam0__utils_1ga9b84ecc6b34a71f797ceb8b8f7b8d384) {#group__group__sam0__utils_1ga9b84ecc6b34a71f797ceb8b8f7b8d384}
#### `define `[`FLASH_EXTERN`](#group__group__sam0__utils_1gaaef0fd990bb5bd9cdf11334f7c689fd7) {#group__group__sam0__utils_1gaaef0fd990bb5bd9cdf11334f7c689fd7}
#### `define `[`PGM_READ_BYTE`](#group__group__sam0__utils_1gafe9b83c73d4840986478ec67d3eb7718) {#group__group__sam0__utils_1gafe9b83c73d4840986478ec67d3eb7718}
#### `define `[`PGM_READ_WORD`](#group__group__sam0__utils_1ga92576bffe51090dcb6d5c67e07b9eec7) {#group__group__sam0__utils_1ga92576bffe51090dcb6d5c67e07b9eec7}
#### `define `[`MEMCPY_ENDIAN`](#group__group__sam0__utils_1ga85a7d71a016789b1766f9b27d0530347) {#group__group__sam0__utils_1ga85a7d71a016789b1766f9b27d0530347}
#### `define `[`PGM_READ_BLOCK`](#group__group__sam0__utils_1ga8900e4615b7d7143a6c38e2a39087538) {#group__group__sam0__utils_1ga8900e4615b7d7143a6c38e2a39087538}
#### `define `[`CMD_ID_OCTET`](#group__group__sam0__utils_1gabf2b95fa77301377cdcf79eb615551db) {#group__group__sam0__utils_1gabf2b95fa77301377cdcf79eb615551db}
#### `define `[`CPU_ENDIAN_TO_LE16`](#group__group__sam0__utils_1ga7c15ca0f3159182efc4b80a00768c2c0) {#group__group__sam0__utils_1ga7c15ca0f3159182efc4b80a00768c2c0}
#### `define `[`CPU_ENDIAN_TO_LE32`](#group__group__sam0__utils_1gaa2fd4bfb7af44220ce4205e2aa371017) {#group__group__sam0__utils_1gaa2fd4bfb7af44220ce4205e2aa371017}
#### `define `[`CPU_ENDIAN_TO_LE64`](#group__group__sam0__utils_1ga6f1e86f452c8f327f9ca96cbf6a65c81) {#group__group__sam0__utils_1ga6f1e86f452c8f327f9ca96cbf6a65c81}
#### `define `[`LE16_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gaceb02fdef243c22d2559e260185fb579) {#group__group__sam0__utils_1gaceb02fdef243c22d2559e260185fb579}
#### `define `[`LE32_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga2df63369ef525ba98832132ce5a43346) {#group__group__sam0__utils_1ga2df63369ef525ba98832132ce5a43346}
#### `define `[`LE64_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gab675071ce5a4644b205cdbc858417ccd) {#group__group__sam0__utils_1gab675071ce5a4644b205cdbc858417ccd}
#### `define `[`CLE16_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga4ac6e032d1ce0ae6d2e460da93ce8732) {#group__group__sam0__utils_1ga4ac6e032d1ce0ae6d2e460da93ce8732}
#### `define `[`CLE32_TO_CPU_ENDIAN`](#group__group__sam0__utils_1ga3ff07a7496222efe8bc7d7b7b0342b0d) {#group__group__sam0__utils_1ga3ff07a7496222efe8bc7d7b7b0342b0d}
#### `define `[`CLE64_TO_CPU_ENDIAN`](#group__group__sam0__utils_1gacbbba93256e2d892c748d56a42f00f9b) {#group__group__sam0__utils_1gacbbba93256e2d892c748d56a42f00f9b}
#### `define `[`CCPU_ENDIAN_TO_LE16`](#group__group__sam0__utils_1ga5fd2d3ed2fc9234277b659b67d33bc64) {#group__group__sam0__utils_1ga5fd2d3ed2fc9234277b659b67d33bc64}
#### `define `[`CCPU_ENDIAN_TO_LE32`](#group__group__sam0__utils_1ga1e3290451e5c7b98175911c9219b5123) {#group__group__sam0__utils_1ga1e3290451e5c7b98175911c9219b5123}
#### `define `[`CCPU_ENDIAN_TO_LE64`](#group__group__sam0__utils_1ga00483bf27ea1e8a2143c6baf22b31f16) {#group__group__sam0__utils_1ga00483bf27ea1e8a2143c6baf22b31f16}
#### `define `[`ADDR_COPY_DST_SRC_16`](#group__group__sam0__utils_1gac4609178e5c825e815f44fa123dcaaf7) {#group__group__sam0__utils_1gac4609178e5c825e815f44fa123dcaaf7}
#### `define `[`ADDR_COPY_DST_SRC_64`](#group__group__sam0__utils_1ga0454afa80924c2183c8c672c043440cc) {#group__group__sam0__utils_1ga0454afa80924c2183c8c672c043440cc}
#### `public inline static void `[`convert_64_bit_to_byte_array`](#group__group__sam0__utils_1gadca7cebb159c7ed180d3d07cccb74245)`(uint64_t value,uint8_t * data)` {#group__group__sam0__utils_1gadca7cebb159c7ed180d3d07cccb74245}
Converts a 64-Bit value into a 8 Byte array.
#### Parameters
* `value` 64-Bit value
* `data` Pointer to the 8 Byte array to be updated with 64-Bit value
#### `public inline static void `[`convert_16_bit_to_byte_array`](#group__group__sam0__utils_1ga2de8d131d6afca8b368486f56c911e75)`(uint16_t value,uint8_t * data)` {#group__group__sam0__utils_1ga2de8d131d6afca8b368486f56c911e75}
Converts a 16-Bit value into a 2 Byte array.
#### Parameters
* `value` 16-Bit value
* `data` Pointer to the 2 Byte array to be updated with 16-Bit value
#### `public inline static void `[`convert_spec_16_bit_to_byte_array`](#group__group__sam0__utils_1gaa9724d81bfe44a06b0372d144cd98e36)`(uint16_t value,uint8_t * data)` {#group__group__sam0__utils_1gaa9724d81bfe44a06b0372d144cd98e36}
#### `public inline static void `[`convert_16_bit_to_byte_address`](#group__group__sam0__utils_1ga9634f2d7292e1209fe3b83254a66c450)`(uint16_t value,uint8_t * data)` {#group__group__sam0__utils_1ga9634f2d7292e1209fe3b83254a66c450}
#### `public inline static uint16_t `[`convert_byte_array_to_16_bit`](#group__group__sam0__utils_1gad3726f56d0820acc7bae83993bd8897c)`(uint8_t * data)` {#group__group__sam0__utils_1gad3726f56d0820acc7bae83993bd8897c}
#### `public inline static uint32_t `[`convert_byte_array_to_32_bit`](#group__group__sam0__utils_1ga6e01ed4a4718b439d295b5124ede09e3)`(uint8_t * data)` {#group__group__sam0__utils_1ga6e01ed4a4718b439d295b5124ede09e3}
#### `public inline static uint64_t `[`convert_byte_array_to_64_bit`](#group__group__sam0__utils_1ga45ffdbdc2d7a6d1dbf91b2fe8d880347)`(uint8_t * data)` {#group__group__sam0__utils_1ga45ffdbdc2d7a6d1dbf91b2fe8d880347}
Converts a 8 Byte array into a 64-Bit value.
#### Parameters
* `data` Specifies the pointer to the 8 Byte array
#### Returns
64-Bit value
# struct `StructPtr` {#struct_struct_ptr}
Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public int64_t * `[`s64ptr`](#struct_struct_ptr_1ab436f27258753b9cf149312d1e668d7e) |
`public uint64_t * `[`u64ptr`](#struct_struct_ptr_1a01a7db75ae97caa7457038b8ee801d1f) |
`public int32_t * `[`s32ptr`](#struct_struct_ptr_1a106ea0461fc89cf4c58cec908c448aef) |
`public uint32_t * `[`u32ptr`](#struct_struct_ptr_1a00500224ac165192ac888251a076606d) |
`public int16_t * `[`s16ptr`](#struct_struct_ptr_1a55c23b18ff2cf478679ca49da3927345) |
`public uint16_t * `[`u16ptr`](#struct_struct_ptr_1a15c8362aa58f36ae5de7f6180550d6b5) |
`public int8_t * `[`s8ptr`](#struct_struct_ptr_1a874b2108143ffd4d2a83baa5d8fa8cad) |
`public uint8_t * `[`u8ptr`](#struct_struct_ptr_1acc04e057a962c975bbdf62664c52ff2c) |
## Members
#### `public int64_t * `[`s64ptr`](#struct_struct_ptr_1ab436f27258753b9cf149312d1e668d7e) {#struct_struct_ptr_1ab436f27258753b9cf149312d1e668d7e}
#### `public uint64_t * `[`u64ptr`](#struct_struct_ptr_1a01a7db75ae97caa7457038b8ee801d1f) {#struct_struct_ptr_1a01a7db75ae97caa7457038b8ee801d1f}
#### `public int32_t * `[`s32ptr`](#struct_struct_ptr_1a106ea0461fc89cf4c58cec908c448aef) {#struct_struct_ptr_1a106ea0461fc89cf4c58cec908c448aef}
#### `public uint32_t * `[`u32ptr`](#struct_struct_ptr_1a00500224ac165192ac888251a076606d) {#struct_struct_ptr_1a00500224ac165192ac888251a076606d}
#### `public int16_t * `[`s16ptr`](#struct_struct_ptr_1a55c23b18ff2cf478679ca49da3927345) {#struct_struct_ptr_1a55c23b18ff2cf478679ca49da3927345}
#### `public uint16_t * `[`u16ptr`](#struct_struct_ptr_1a15c8362aa58f36ae5de7f6180550d6b5) {#struct_struct_ptr_1a15c8362aa58f36ae5de7f6180550d6b5}
#### `public int8_t * `[`s8ptr`](#struct_struct_ptr_1a874b2108143ffd4d2a83baa5d8fa8cad) {#struct_struct_ptr_1a874b2108143ffd4d2a83baa5d8fa8cad}
#### `public uint8_t * `[`u8ptr`](#struct_struct_ptr_1acc04e057a962c975bbdf62664c52ff2c) {#struct_struct_ptr_1acc04e057a962c975bbdf62664c52ff2c}
# struct `StructVPtr` {#struct_struct_v_ptr}
Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public int64_t * `[`s64ptr`](#struct_struct_v_ptr_1a2908c8cb1c7d816d7f9d3a30531818f8) |
`public uint64_t * `[`u64ptr`](#struct_struct_v_ptr_1a1acc0e7be6320444fc9a35fbd89f1f37) |
`public int32_t * `[`s32ptr`](#struct_struct_v_ptr_1ac419cbdd704de7024e989caaf9e19a98) |
`public uint32_t * `[`u32ptr`](#struct_struct_v_ptr_1abdec22b9984813fac831e57d45cae742) |
`public int16_t * `[`s16ptr`](#struct_struct_v_ptr_1aee6c3ba77b4b25f556abb8a41053caf4) |
`public uint16_t * `[`u16ptr`](#struct_struct_v_ptr_1ae008948f89e2a5ee3102016f82023b42) |
`public int8_t * `[`s8ptr`](#struct_struct_v_ptr_1ab07ceff1caf6f3bb01bd31296a36daf9) |
`public uint8_t * `[`u8ptr`](#struct_struct_v_ptr_1a4213589251839cd1f42c3343c6cb9be9) |
## Members
#### `public int64_t * `[`s64ptr`](#struct_struct_v_ptr_1a2908c8cb1c7d816d7f9d3a30531818f8) {#struct_struct_v_ptr_1a2908c8cb1c7d816d7f9d3a30531818f8}
#### `public uint64_t * `[`u64ptr`](#struct_struct_v_ptr_1a1acc0e7be6320444fc9a35fbd89f1f37) {#struct_struct_v_ptr_1a1acc0e7be6320444fc9a35fbd89f1f37}
#### `public int32_t * `[`s32ptr`](#struct_struct_v_ptr_1ac419cbdd704de7024e989caaf9e19a98) {#struct_struct_v_ptr_1ac419cbdd704de7024e989caaf9e19a98}
#### `public uint32_t * `[`u32ptr`](#struct_struct_v_ptr_1abdec22b9984813fac831e57d45cae742) {#struct_struct_v_ptr_1abdec22b9984813fac831e57d45cae742}
#### `public int16_t * `[`s16ptr`](#struct_struct_v_ptr_1aee6c3ba77b4b25f556abb8a41053caf4) {#struct_struct_v_ptr_1aee6c3ba77b4b25f556abb8a41053caf4}
#### `public uint16_t * `[`u16ptr`](#struct_struct_v_ptr_1ae008948f89e2a5ee3102016f82023b42) {#struct_struct_v_ptr_1ae008948f89e2a5ee3102016f82023b42}
#### `public int8_t * `[`s8ptr`](#struct_struct_v_ptr_1ab07ceff1caf6f3bb01bd31296a36daf9) {#struct_struct_v_ptr_1ab07ceff1caf6f3bb01bd31296a36daf9}
#### `public uint8_t * `[`u8ptr`](#struct_struct_v_ptr_1a4213589251839cd1f42c3343c6cb9be9) {#struct_struct_v_ptr_1a4213589251839cd1f42c3343c6cb9be9}
# struct `StructCPtr` {#struct_struct_c_ptr}
Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public const int64_t * `[`s64ptr`](#struct_struct_c_ptr_1ac9ea294aaa07e5a63204530ebf3dd3d2) |
`public const uint64_t * `[`u64ptr`](#struct_struct_c_ptr_1abbc67642e882a52be564515f1c8f12cb) |
`public const int32_t * `[`s32ptr`](#struct_struct_c_ptr_1af6182ebecd1280fa1714762f2d81d5d3) |
`public const uint32_t * `[`u32ptr`](#struct_struct_c_ptr_1a12f0da0bcf30aca9703630565d8be204) |
`public const int16_t * `[`s16ptr`](#struct_struct_c_ptr_1a153aa1a4a18fe39a05be056a372d19c9) |
`public const uint16_t * `[`u16ptr`](#struct_struct_c_ptr_1a4ff05b3b8a78949bf0036fe340b98b05) |
`public const int8_t * `[`s8ptr`](#struct_struct_c_ptr_1a2e21f1ae56dd4da3f534ccebfa234fcc) |
`public const uint8_t * `[`u8ptr`](#struct_struct_c_ptr_1acb08e5689c70ca4ef5e0d984f15f47ae) |
## Members
#### `public const int64_t * `[`s64ptr`](#struct_struct_c_ptr_1ac9ea294aaa07e5a63204530ebf3dd3d2) {#struct_struct_c_ptr_1ac9ea294aaa07e5a63204530ebf3dd3d2}
#### `public const uint64_t * `[`u64ptr`](#struct_struct_c_ptr_1abbc67642e882a52be564515f1c8f12cb) {#struct_struct_c_ptr_1abbc67642e882a52be564515f1c8f12cb}
#### `public const int32_t * `[`s32ptr`](#struct_struct_c_ptr_1af6182ebecd1280fa1714762f2d81d5d3) {#struct_struct_c_ptr_1af6182ebecd1280fa1714762f2d81d5d3}
#### `public const uint32_t * `[`u32ptr`](#struct_struct_c_ptr_1a12f0da0bcf30aca9703630565d8be204) {#struct_struct_c_ptr_1a12f0da0bcf30aca9703630565d8be204}
#### `public const int16_t * `[`s16ptr`](#struct_struct_c_ptr_1a153aa1a4a18fe39a05be056a372d19c9) {#struct_struct_c_ptr_1a153aa1a4a18fe39a05be056a372d19c9}
#### `public const uint16_t * `[`u16ptr`](#struct_struct_c_ptr_1a4ff05b3b8a78949bf0036fe340b98b05) {#struct_struct_c_ptr_1a4ff05b3b8a78949bf0036fe340b98b05}
#### `public const int8_t * `[`s8ptr`](#struct_struct_c_ptr_1a2e21f1ae56dd4da3f534ccebfa234fcc) {#struct_struct_c_ptr_1a2e21f1ae56dd4da3f534ccebfa234fcc}
#### `public const uint8_t * `[`u8ptr`](#struct_struct_c_ptr_1acb08e5689c70ca4ef5e0d984f15f47ae) {#struct_struct_c_ptr_1acb08e5689c70ca4ef5e0d984f15f47ae}
# struct `StructCVPtr` {#struct_struct_c_v_ptr}
Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public const volatile int64_t * `[`s64ptr`](#struct_struct_c_v_ptr_1aa79f3b96a6ad079e73cc0be13bd0e765) |
`public const volatile uint64_t * `[`u64ptr`](#struct_struct_c_v_ptr_1a24a2bedaf12d427819c62babba34e2ef) |
`public const volatile int32_t * `[`s32ptr`](#struct_struct_c_v_ptr_1a0aa7d6575057bad6b799c9b2909c077b) |
`public const volatile uint32_t * `[`u32ptr`](#struct_struct_c_v_ptr_1a0e4e80d3c57067ad85c71af39d0ea817) |
`public const volatile int16_t * `[`s16ptr`](#struct_struct_c_v_ptr_1a97b5d4643b545ecc9ac9c68fa35b74fe) |
`public const volatile uint16_t * `[`u16ptr`](#struct_struct_c_v_ptr_1a288ff13c7abb2360d62009e2711e7485) |
`public const volatile int8_t * `[`s8ptr`](#struct_struct_c_v_ptr_1afc839213e22402ccf98e7d143453b58d) |
`public const volatile uint8_t * `[`u8ptr`](#struct_struct_c_v_ptr_1ae6228fb5d646745079910ea045f314e3) |
## Members
#### `public const volatile int64_t * `[`s64ptr`](#struct_struct_c_v_ptr_1aa79f3b96a6ad079e73cc0be13bd0e765) {#struct_struct_c_v_ptr_1aa79f3b96a6ad079e73cc0be13bd0e765}
#### `public const volatile uint64_t * `[`u64ptr`](#struct_struct_c_v_ptr_1a24a2bedaf12d427819c62babba34e2ef) {#struct_struct_c_v_ptr_1a24a2bedaf12d427819c62babba34e2ef}
#### `public const volatile int32_t * `[`s32ptr`](#struct_struct_c_v_ptr_1a0aa7d6575057bad6b799c9b2909c077b) {#struct_struct_c_v_ptr_1a0aa7d6575057bad6b799c9b2909c077b}
#### `public const volatile uint32_t * `[`u32ptr`](#struct_struct_c_v_ptr_1a0e4e80d3c57067ad85c71af39d0ea817) {#struct_struct_c_v_ptr_1a0e4e80d3c57067ad85c71af39d0ea817}
#### `public const volatile int16_t * `[`s16ptr`](#struct_struct_c_v_ptr_1a97b5d4643b545ecc9ac9c68fa35b74fe) {#struct_struct_c_v_ptr_1a97b5d4643b545ecc9ac9c68fa35b74fe}
#### `public const volatile uint16_t * `[`u16ptr`](#struct_struct_c_v_ptr_1a288ff13c7abb2360d62009e2711e7485) {#struct_struct_c_v_ptr_1a288ff13c7abb2360d62009e2711e7485}
#### `public const volatile int8_t * `[`s8ptr`](#struct_struct_c_v_ptr_1afc839213e22402ccf98e7d143453b58d) {#struct_struct_c_v_ptr_1afc839213e22402ccf98e7d143453b58d}
#### `public const volatile uint8_t * `[`u8ptr`](#struct_struct_c_v_ptr_1ae6228fb5d646745079910ea045f314e3) {#struct_struct_c_v_ptr_1ae6228fb5d646745079910ea045f314e3}

+ 0
- 92
internals_group_sam0_utils_status_codes.md View File

@ -1,92 +0,0 @@
# group `group_sam0_utils_status_codes` {#group__group__sam0__utils__status__codes}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`STATUS_CATEGORY_MASK`](#group__group__sam0__utils__status__codes_1ga5bf938a904077896054cd093bf7d8fa8) | Mask to retrieve the error category of a status code.
`define `[`STATUS_ERROR_MASK`](#group__group__sam0__utils__status__codes_1ga4c46d8f176ca46ab775db0fe270d2f98) | Mask to retrieve the error code within the category of a status code.
`enum `[`status_categories`](#group__group__sam0__utils__status__codes_1ga477539e8a67b0cab096e8ecda6f5d7d6) | Status code error categories.
`enum `[`status_code`](#group__group__sam0__utils__status__codes_1ga751c892e5a46b8e7d282085a5a5bf151) | Status code that may be returned by shell commands and protocol implementations.
`enum `[`status_code_wireless`](#group__group__sam0__utils__status__codes_1ga29235ed38b6f02861f29daae665ac3a2) | Status codes used by MAC stack.
## Members
#### `define `[`STATUS_CATEGORY_MASK`](#group__group__sam0__utils__status__codes_1ga5bf938a904077896054cd093bf7d8fa8) {#group__group__sam0__utils__status__codes_1ga5bf938a904077896054cd093bf7d8fa8}
Mask to retrieve the error category of a status code.
#### `define `[`STATUS_ERROR_MASK`](#group__group__sam0__utils__status__codes_1ga4c46d8f176ca46ab775db0fe270d2f98) {#group__group__sam0__utils__status__codes_1ga4c46d8f176ca46ab775db0fe270d2f98}
Mask to retrieve the error code within the category of a status code.
#### `enum `[`status_categories`](#group__group__sam0__utils__status__codes_1ga477539e8a67b0cab096e8ecda6f5d7d6) {#group__group__sam0__utils__status__codes_1ga477539e8a67b0cab096e8ecda6f5d7d6}
Values | Descriptions
--------------------------------|---------------------------------------------
STATUS_CATEGORY_OK |
STATUS_CATEGORY_COMMON |
STATUS_CATEGORY_ANALOG |
STATUS_CATEGORY_COM |
STATUS_CATEGORY_IO |
Status code error categories.
#### `enum `[`status_code`](#group__group__sam0__utils__status__codes_1ga751c892e5a46b8e7d282085a5a5bf151) {#group__group__sam0__utils__status__codes_1ga751c892e5a46b8e7d282085a5a5bf151}
Values | Descriptions
--------------------------------|---------------------------------------------
STATUS_OK |
STATUS_VALID_DATA |
STATUS_NO_CHANGE |
STATUS_ABORTED |
STATUS_BUSY |
STATUS_SUSPEND |
STATUS_ERR_IO |
STATUS_ERR_REQ_FLUSHED |
STATUS_ERR_TIMEOUT |
STATUS_ERR_BAD_DATA |
STATUS_ERR_NOT_FOUND |
STATUS_ERR_UNSUPPORTED_DEV |
STATUS_ERR_NO_MEMORY |
STATUS_ERR_INVALID_ARG |
STATUS_ERR_BAD_ADDRESS |
STATUS_ERR_BAD_FORMAT |
STATUS_ERR_BAD_FRQ |
STATUS_ERR_DENIED |
STATUS_ERR_ALREADY_INITIALIZED |
STATUS_ERR_OVERFLOW |
STATUS_ERR_NOT_INITIALIZED |
STATUS_ERR_SAMPLERATE_UNAVAILABLE |
STATUS_ERR_RESOLUTION_UNAVAILABLE |
STATUS_ERR_BAUDRATE_UNAVAILABLE |
STATUS_ERR_PACKET_COLLISION |
STATUS_ERR_PROTOCOL |
STATUS_ERR_PIN_MUX_INVALID |
Status code that may be returned by shell commands and protocol implementations.
Any change to these status codes and the corresponding message strings is strictly forbidden. New codes can be added, however, but make sure that any message string tables are updated at the same time.
#### `enum `[`status_code_wireless`](#group__group__sam0__utils__status__codes_1ga29235ed38b6f02861f29daae665ac3a2) {#group__group__sam0__utils__status__codes_1ga29235ed38b6f02861f29daae665ac3a2}
Values | Descriptions
--------------------------------|---------------------------------------------
ERR_IO_ERROR | I/O error.
ERR_FLUSHED | Request flushed from queue.
ERR_TIMEOUT | Operation timed out.
ERR_BAD_DATA | Data integrity check failed.
ERR_PROTOCOL | Protocol error.
ERR_UNSUPPORTED_DEV | Unsupported device.
ERR_NO_MEMORY | Insufficient memory.
ERR_INVALID_ARG | Invalid argument.
ERR_BAD_ADDRESS | Bad address.
ERR_BUSY | Resource is busy.
ERR_BAD_FORMAT | Data format not recognized.
ERR_NO_TIMER | No timer available.
ERR_TIMER_ALREADY_RUNNING | Timer already running.
ERR_TIMER_NOT_RUNNING | Timer not running.
OPERATION_IN_PROGRESS | Operation in progress.
Status codes used by MAC stack.

+ 16
- 16
internals_input_callback_reg.md View File

@ -1,4 +1,4 @@
# group `input_callback_reg` {#group__input__callback__reg}
# group `input_callback_reg`
These are the functions you use to register your input callbacks.
@ -26,7 +26,7 @@ The functions are called when the appropriate midi message is matched on the ass
## Members
#### `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718}
#### `public void `[`midi_register_cc_callback`](#group__input__callback__reg_1ga64ab672abbbe393c9c4a83110c8df718)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register a control change message (cc) callback.
@ -35,7 +35,7 @@ Register a control change message (cc) callback.
* `func` the callback function to register
#### `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga3962f276c17618923f1152779552103e}
#### `public void `[`midi_register_noteon_callback`](#group__input__callback__reg_1ga3962f276c17618923f1152779552103e)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register a note on callback.
@ -44,7 +44,7 @@ Register a note on callback.
* `func` the callback function to register
#### `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d}
#### `public void `[`midi_register_noteoff_callback`](#group__input__callback__reg_1gac847b66051bd6d53b762958be0ec4c6d)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register a note off callback.
@ -53,7 +53,7 @@ Register a note off callback.
* `func` the callback function to register
#### `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f}
#### `public void `[`midi_register_aftertouch_callback`](#group__input__callback__reg_1gaa95bc901bd9edff956a667c9a69dd01f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register an after touch callback.
@ -62,7 +62,7 @@ Register an after touch callback.
* `func` the callback function to register
#### `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48}
#### `public void `[`midi_register_pitchbend_callback`](#group__input__callback__reg_1ga071a28f02ba14f53de219be70ebd9a48)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register a pitch bend callback.
@ -71,7 +71,7 @@ Register a pitch bend callback.
* `func` the callback function to register
#### `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)` {#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6}
#### `public void `[`midi_register_songposition_callback`](#group__input__callback__reg_1gaf2adfd79637f3553d8f26deb1ca22ed6)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_three_byte_func_t func)`
Register a song position callback.
@ -80,7 +80,7 @@ Register a song position callback.
* `func` the callback function to register
#### `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127}
#### `public void `[`midi_register_progchange_callback`](#group__input__callback__reg_1gae6ba1a35a4cde9bd15dd42f87401d127)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)`
Register a program change callback.
@ -89,7 +89,7 @@ Register a program change callback.
* `func` the callback function to register
#### `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5}
#### `public void `[`midi_register_chanpressure_callback`](#group__input__callback__reg_1ga39b31f1f4fb93917ce039b958f21b4f5)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)`
Register a channel pressure callback.
@ -98,7 +98,7 @@ Register a channel pressure callback.
* `func` the callback function to register
#### `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72}
#### `public void `[`midi_register_songselect_callback`](#group__input__callback__reg_1gaf9aafc76a2dc4b9fdbb4106cbda6ce72)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)`
Register a song select callback.
@ -107,7 +107,7 @@ Register a song select callback.
* `func` the callback function to register
#### `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)` {#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e}
#### `public void `[`midi_register_tc_quarterframe_callback`](#group__input__callback__reg_1ga0a119fada2becc628cb15d753b257e6e)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_two_byte_func_t func)`
Register a tc quarter frame callback.
@ -116,7 +116,7 @@ Register a tc quarter frame callback.
* `func` the callback function to register
#### `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a}
#### `public void `[`midi_register_realtime_callback`](#group__input__callback__reg_1ga764f440e857b89084b1a07f9da2ff93a)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_one_byte_func_t func)`
Register a realtime callback.
@ -127,7 +127,7 @@ The callback will be called for all of the real time message types.
* `func` the callback function to register
#### `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_one_byte_func_t func)` {#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1}
#### `public void `[`midi_register_tunerequest_callback`](#group__input__callback__reg_1gae40ff3ce20bda79fef87da24b8321cb1)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_one_byte_func_t func)`
Register a tune request callback.
@ -136,7 +136,7 @@ Register a tune request callback.
* `func` the callback function to register
#### `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_sysex_func_t func)` {#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48}
#### `public void `[`midi_register_sysex_callback`](#group__input__callback__reg_1ga63ce9631b025785c1848d0122d4c4c48)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_sysex_func_t func)`
Register a sysex callback.
@ -145,7 +145,7 @@ Register a sysex callback.
* `func` the callback function to register
#### `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94}
#### `public void `[`midi_register_fallthrough_callback`](#group__input__callback__reg_1ga7ed189164aa9682862b3181153afbd94)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t func)`
Register fall through callback.
@ -156,7 +156,7 @@ This is only called if a more specific callback is not matched and called. For i
* `func` the callback function to register
#### `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t func)` {#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99}
#### `public void `[`midi_register_catchall_callback`](#group__input__callback__reg_1ga9dbfed568d047a6cd05708f11fe39e99)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t func)`
Register a catch all callback.


+ 29
- 29
internals_midi_device.md View File

@ -1,4 +1,4 @@
# group `midi_device` {#group__midi__device}
# group `midi_device`
You use the functions when you are implementing your own midi device.
@ -21,9 +21,9 @@ You use the midi_device_set_pre_input_process_func if you want to have a functio
## Members
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8) {#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8}
#### `define `[`MIDI_INPUT_QUEUE_LENGTH`](#group__midi__device_1ga4aaa419caebdca2bbdfc1331e79781a8)
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621) {#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621}
#### `enum `[`input_state_t`](#group__midi__device_1gac203e877d3df4275ceb8e7180a61f621)
Values | Descriptions
--------------------------------|---------------------------------------------
@ -33,7 +33,7 @@ TWO_BYTE_MESSAGE |
THREE_BYTE_MESSAGE |
SYSEX_MESSAGE |
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)` {#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db}
#### `public void `[`midi_device_input`](#group__midi__device_1gad8d3db8eb35d9cfa51ef036a0a9d70db)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t cnt,uint8_t * input)`
Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.
@ -44,7 +44,7 @@ Process input bytes. This function parses bytes and calls the appropriate callba
* `input` the bytes to process
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t send_func)` {#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673}
#### `public void `[`midi_device_set_send_func`](#group__midi__device_1ga59f5a46bdd4452f186cc73d9e96d4673)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_var_byte_func_t send_func)`
Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.
@ -53,7 +53,7 @@ Set the callback function that will be used for sending output data bytes. This
* `send_func` the callback function that will do the sending
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)` {#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69}
#### `public void `[`midi_device_set_pre_input_process_func`](#group__midi__device_1ga4de0841b87c04fc23cb56b6451f33b69)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,midi_no_byte_func_t pre_process_func)`
Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.
@ -62,7 +62,7 @@ Set a callback which is called at the beginning of the midi_device_process call.
* `midi_no_byte_func_t` the actual callback function
# struct `_midi_device` {#struct__midi__device}
# struct `_midi_device`
This structure represents the input and output functions and processing data for a midi device.
@ -97,47 +97,47 @@ A device can represent an actual physical device [serial port, usb port] or some
## Members
#### `public midi_var_byte_func_t `[`send_func`](#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9) {#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9}
#### `public midi_var_byte_func_t `[`send_func`](#struct__midi__device_1a25d4c94b4bbccd5b98f1032b469f3ff9)
#### `public midi_three_byte_func_t `[`input_cc_callback`](#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1) {#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1}
#### `public midi_three_byte_func_t `[`input_cc_callback`](#struct__midi__device_1a6da5236c1bc73877728df92d213a78d1)
#### `public midi_three_byte_func_t `[`input_noteon_callback`](#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c) {#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c}
#### `public midi_three_byte_func_t `[`input_noteon_callback`](#struct__midi__device_1aa10b15cf1a7fb825a5df0d2abbe34a1c)
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84) {#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84}
#### `public midi_three_byte_func_t `[`input_noteoff_callback`](#struct__midi__device_1aaf290043078534d3a5a0ea4c840eba84)
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f) {#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f}
#### `public midi_three_byte_func_t `[`input_aftertouch_callback`](#struct__midi__device_1acb0b4901c545cec4b28b126f2d8c315f)
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18) {#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18}
#### `public midi_three_byte_func_t `[`input_pitchbend_callback`](#struct__midi__device_1a305fea672caeb996f2233bf8cd2bef18)
#### `public midi_three_byte_func_t `[`input_songposition_callback`](#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586) {#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586}
#### `public midi_three_byte_func_t `[`input_songposition_callback`](#struct__midi__device_1a5f3f13638b3fef3fc561ed1bf301d586)
#### `public midi_two_byte_func_t `[`input_progchange_callback`](#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da) {#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da}
#### `public midi_two_byte_func_t `[`input_progchange_callback`](#struct__midi__device_1adaf1da617c9a10a9dcad00ab1959d3da)
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7) {#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7}
#### `public midi_two_byte_func_t `[`input_chanpressure_callback`](#struct__midi__device_1ab7ca2925c539915d43974eff604d85f7)
#### `public midi_two_byte_func_t `[`input_songselect_callback`](#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f) {#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f}
#### `public midi_two_byte_func_t `[`input_songselect_callback`](#struct__midi__device_1a89bed8a5a55376120cfc0a62b42f057f)
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0) {#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0}
#### `public midi_two_byte_func_t `[`input_tc_quarterframe_callback`](#struct__midi__device_1ad9813e75d22e284f9f65a907d20600f0)
#### `public midi_one_byte_func_t `[`input_realtime_callback`](#struct__midi__device_1a9448eba4afb7e43650434748db3777be) {#struct__midi__device_1a9448eba4afb7e43650434748db3777be}
#### `public midi_one_byte_func_t `[`input_realtime_callback`](#struct__midi__device_1a9448eba4afb7e43650434748db3777be)
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d) {#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d}
#### `public midi_one_byte_func_t `[`input_tunerequest_callback`](#struct__midi__device_1a0cb8fd53e00cf1d4202d4fa04d038e8d)
#### `public midi_sysex_func_t `[`input_sysex_callback`](#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2) {#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2}
#### `public midi_sysex_func_t `[`input_sysex_callback`](#struct__midi__device_1afff9a0ce641762aaef24c1e6953ec9a2)
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](#struct__midi__device_1abb974ec6d734001b4a0e370f292be503) {#struct__midi__device_1abb974ec6d734001b4a0e370f292be503}
#### `public midi_var_byte_func_t `[`input_fallthrough_callback`](#struct__midi__device_1abb974ec6d734001b4a0e370f292be503)
#### `public midi_var_byte_func_t `[`input_catchall_callback`](#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8) {#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8}
#### `public midi_var_byte_func_t `[`input_catchall_callback`](#struct__midi__device_1aae0d535129d4fd650edc98eb3f7584f8)
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754) {#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754}
#### `public midi_no_byte_func_t `[`pre_input_process_callback`](#struct__midi__device_1aeb0bb8923d66c23d874e177dc4265754)
#### `public uint8_t `[`input_buffer`](#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a) {#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a}
#### `public uint8_t `[`input_buffer`](#struct__midi__device_1a7c5684857d6af4ebc4dc12da27bd6b2a)
#### `public input_state_t `[`input_state`](#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39) {#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39}
#### `public input_state_t `[`input_state`](#struct__midi__device_1a69a687d2d1c449ec15a11c07a5722e39)
#### `public uint16_t `[`input_count`](#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d) {#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d}
#### `public uint16_t `[`input_count`](#struct__midi__device_1a68dea8e7b6151e89c85c95caa612ee5d)
#### `public uint8_t `[`input_queue_data`](#struct__midi__device_1ada41de021135dc423abedcbb30f366ff) {#struct__midi__device_1ada41de021135dc423abedcbb30f366ff}
#### `public uint8_t `[`input_queue_data`](#struct__midi__device_1ada41de021135dc423abedcbb30f366ff)
#### `public `[`byteQueue_t`](.build/docs/internals_undefined.md#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f) {#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f}
#### `public `[`byteQueue_t`](.build/docs/internals_undefined.md#structbyte_queue__t)` `[`input_queue`](#struct__midi__device_1a49c8538a8a02193c58e28a56eb695d8f)

+ 3
- 3
internals_midi_device_setup_process.md View File

@ -1,4 +1,4 @@
# group `midi_device_setup_process` {#group__midi__device__setup__process}
# group `midi_device_setup_process`
These are method that you must use to initialize and run a device.
@ -11,7 +11,7 @@ These are method that you must use to initialize and run a device.
## Members
#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9}
#### `public void `[`midi_device_init`](#group__midi__device__setup__process_1gaf29deddc94ea98a59daa0bde1aefd9d9)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Initialize a device.
@ -20,7 +20,7 @@ You must call this before using the device in question.
#### Parameters
* `device` the device to initialize
#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b}
#### `public void `[`midi_device_process`](#group__midi__device__setup__process_1gaa3d5993d0e998a1b59bbf5ab9c7b492b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Process input data.


+ 5
- 5
internals_midi_util.md View File

@ -1,4 +1,4 @@
# group `midi_util` {#group__midi__util}
# group `midi_util`
## Summary
@ -11,7 +11,7 @@
## Members
#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e) {#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e}
#### `enum `[`midi_packet_length_t`](#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)
Values | Descriptions
--------------------------------|---------------------------------------------
@ -22,7 +22,7 @@ THREE |
An enumeration of the possible packet length values.
#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)` {#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5}
#### `public bool `[`midi_is_statusbyte`](#group__midi__util_1ga12e3b42ff9cbb4b4f2bc455fc8743ee5)`(uint8_t theByte)`
Test to see if the byte given is a status byte.
@ -32,7 +32,7 @@ Test to see if the byte given is a status byte.
#### Returns
true if the byte given is a midi status byte
#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)` {#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7}
#### `public bool `[`midi_is_realtime`](#group__midi__util_1gad2f52c363e34a8000d80c983c324e2d7)`(uint8_t theByte)`
Test to see if the byte given is a realtime message.
@ -42,7 +42,7 @@ Test to see if the byte given is a realtime message.
#### Returns
true if it is a realtime message, false otherwise
#### `public `[`midi_packet_length_t`](.build/docs/internals_undefined.md#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)` {#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175}
#### `public `[`midi_packet_length_t`](.build/docs/internals_undefined.md#group__midi__util_1gae29ff56aee2b430ffe53933b97e5e79e)` `[`midi_packet_length`](#group__midi__util_1gaa168b43af6ae9de0debce1625e4b8175)`(uint8_t status)`
Find the length of the packet associated with the status byte given.


+ 22
- 22
internals_send_functions.md View File

@ -1,4 +1,4 @@
# group `send_functions` {#group__send__functions}
# group `send_functions`
These are the functions you use to send midi data through a device.
@ -30,7 +30,7 @@ These are the functions you use to send midi data through a device.
## Members
#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)` {#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960}
#### `public void `[`midi_send_cc`](#group__send__functions_1gaaf884811c92df405ca8fe1a00082f960)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t val)`
Send a control change message (cc) via the given device.
@ -43,7 +43,7 @@ Send a control change message (cc) via the given device.
* `val` the value of that cc num
#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775}
#### `public void `[`midi_send_noteon`](#group__send__functions_1ga467bcf46dbf03ec269ce565b46bc2775)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)`
Send a note on message via the given device.
@ -56,7 +56,7 @@ Send a note on message via the given device.
* `vel` the note velocity
#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)` {#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49}
#### `public void `[`midi_send_noteoff`](#group__send__functions_1gaedb7d8805425eef5d47d57ddcb4c7a49)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num,uint8_t vel)`
Send a note off message via the given device.
@ -69,7 +69,7 @@ Send a note off message via the given device.
* `vel` the note velocity
#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)` {#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f}
#### `public void `[`midi_send_aftertouch`](#group__send__functions_1ga0014847571317a0e34b2ef46a6bc584f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t note_num,uint8_t amt)`
Send an after touch message via the given device.
@ -82,7 +82,7 @@ Send an after touch message via the given device.
* `amt` the after touch amount
#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,int16_t amt)` {#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491}
#### `public void `[`midi_send_pitchbend`](#group__send__functions_1gae5a4a1e71611e7534be80af9ce3d3491)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,int16_t amt)`
Send a pitch bend message via the given device.
@ -93,7 +93,7 @@ Send a pitch bend message via the given device.
* `amt` the bend amount range: -8192..8191, 0 means no bend
#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num)` {#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86}
#### `public void `[`midi_send_programchange`](#group__send__functions_1ga7b15588ef25e5e1ff09c2afc3151ce86)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t num)`
Send a program change message via the given device.
@ -104,7 +104,7 @@ Send a program change message via the given device.
* `num` the program to change to
#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t amt)` {#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b}
#### `public void `[`midi_send_channelpressure`](#group__send__functions_1gaf23e69fdf812e89c0036f51f88ab2e1b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t chan,uint8_t amt)`
Send a channel pressure message via the given device.
@ -115,56 +115,56 @@ Send a channel pressure message via the given device.
* `amt` the amount of channel pressure
#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa}
#### `public void `[`midi_send_clock`](#group__send__functions_1ga4e1b11a7cdb0875f6e03ce7c79c581aa)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a clock message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga2b43c7d433d940c5b907595aac947972}
#### `public void `[`midi_send_tick`](#group__send__functions_1ga2b43c7d433d940c5b907595aac947972)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a tick message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc}
#### `public void `[`midi_send_start`](#group__send__functions_1ga1569749a8d58ccc56789289d7c7245cc)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a start message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120}
#### `public void `[`midi_send_continue`](#group__send__functions_1gaed5dc29d754a27372e89ab8bc20ee120)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a continue message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988}
#### `public void `[`midi_send_stop`](#group__send__functions_1ga026e1a620276cb653ac501aa0d12a988)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a stop message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37}
#### `public void `[`midi_send_activesense`](#group__send__functions_1ga9b6e4c6ce4719d2604187b325620db37)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send an active sense message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b}
#### `public void `[`midi_send_reset`](#group__send__functions_1ga3671e39a6d93ca9568fc493001af1b1b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a reset message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t time)` {#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a}
#### `public void `[`midi_send_tcquarterframe`](#group__send__functions_1ga5b85639910eec280bb744c934d0fd45a)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t time)`
Send a tc quarter frame message via the given device.
@ -173,7 +173,7 @@ Send a tc quarter frame message via the given device.
* `time` the time of this quarter frame, range 0..16383
#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t pos)` {#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f}
#### `public void `[`midi_send_songposition`](#group__send__functions_1gab1c9eeef3b57a8cd2e6128d18e85eb7f)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t pos)`
Send a song position message via the given device.
@ -182,7 +182,7 @@ Send a song position message via the given device.
* `pos` the song position
#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t song)` {#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50}
#### `public void `[`midi_send_songselect`](#group__send__functions_1ga42de7838ba70d949af9a50f9facc3c50)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t song)`
Send a song select message via the given device.
@ -191,14 +191,14 @@ Send a song select message via the given device.
* `song` the song to select
#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)` {#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656}
#### `public void `[`midi_send_tunerequest`](#group__send__functions_1ga8db6c7e04d48e4d2266dd59118ca0656)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device)`
Send a tune request message via the given device.
#### Parameters
* `device` the device to use for sending
#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t b)` {#group__send__functions_1ga857e85eb90b288385642d4d991e09881}
#### `public void `[`midi_send_byte`](#group__send__functions_1ga857e85eb90b288385642d4d991e09881)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint8_t b)`
Send a byte via the given device.
@ -209,7 +209,7 @@ This is a generic method for sending data via the given midi device. This would
* `b` the byte to send
#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)` {#group__send__functions_1ga36e2f2e45369d911b76969361679054b}
#### `public void `[`midi_send_data`](#group__send__functions_1ga36e2f2e45369d911b76969361679054b)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t count,uint8_t byte0,uint8_t byte1,uint8_t byte2)`
Send up to 3 bytes of data.
@ -226,7 +226,7 @@ Send up to 3 bytes of data.
* `byte2` the third byte, ignored if cnt % 4 != 3
#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t count,uint8_t * array)` {#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead}
#### `public void `[`midi_send_array`](#group__send__functions_1ga245243cb1da18d2cea18d4b18d846ead)`(`[`MidiDevice`](.build/docs/internals_midi_device.md#struct__midi__device)` * device,uint16_t count,uint8_t * array)`
Send an array of formatted midi data.


+ 5
- 5
internals_sysex_tools.md View File

@ -1,4 +1,4 @@
# group `sysex_tools` {#group__sysex__tools}
# group `sysex_tools`
## Summary
@ -11,7 +11,7 @@
## Members
#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)` {#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a}
#### `public uint16_t `[`sysex_encoded_length`](#group__sysex__tools_1ga061e5607030412d6e62e2390d8013f0a)`(uint16_t decoded_length)`
Compute the length of a message after it is encoded.
@ -21,7 +21,7 @@ Compute the length of a message after it is encoded.
#### Returns
The length, in bytes, of the message after encodeing.
#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)` {#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0}
#### `public uint16_t `[`sysex_decoded_length`](#group__sysex__tools_1ga121fc227d3acc1c0ea08c9a5c26fa3b0)`(uint16_t encoded_length)`
Compute the length of a message after it is decoded.
@ -31,7 +31,7 @@ Compute the length of a message after it is decoded.
#### Returns
The length, in bytes, of the message after it is decoded.
#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742}
#### `public uint16_t `[`sysex_encode`](#group__sysex__tools_1ga54d77f8d32f92a6f329daefa2b314742)`(uint8_t * encoded,const uint8_t * source,uint16_t length)`
Encode data so that it can be transmitted safely in a sysex message.
@ -45,7 +45,7 @@ Encode data so that it can be transmitted safely in a sysex message.
#### Returns
number of bytes encoded.
#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)` {#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229}
#### `public uint16_t `[`sysex_decode`](#group__sysex__tools_1gaaad1d9ba2d5eca709a0ab4ba40662229)`(uint8_t * decoded,const uint8_t * source,uint16_t length)`
Decode encoded data.


+ 0
- 56
internals_udc_desc_group.md View File

@ -1,56 +0,0 @@
# group `udc_desc_group` {#group__udc__desc__group}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`UDC_DESC_STORAGE`](#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f) | Defines the memory's location of USB descriptors.
`define `[`UDC_DATA`](#group__udc__desc__group_1ga1659a2f0b429f07a985a8faaa3fb27b1) |
`define `[`UDC_BSS`](#group__udc__desc__group_1ga198e5cdf3367aa0b35821417b7ede0b2) |
`struct `[`udc_config_speed_t`](#structudc__config__speed__t) | Configuration descriptor and UDI link for one USB speed.
`struct `[`udc_config_t`](#structudc__config__t) | All information about the USB Device.
## Members
#### `define `[`UDC_DESC_STORAGE`](#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f) {#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f}
Defines the memory's location of USB descriptors.
By default the Descriptor is stored in RAM (UDC_DESC_STORAGE is defined empty).
If you have need to free RAM space, it is possible to put descriptor in flash in following case:
* USB driver authorize flash transfer (USBB on UC3 and USB on Mega)
* USB Device is not high speed (UDC no need to change USB descriptors)
For UC3 application used "const".
For Mega application used "code".
#### `define `[`UDC_DATA`](#group__udc__desc__group_1ga1659a2f0b429f07a985a8faaa3fb27b1) {#group__udc__desc__group_1ga1659a2f0b429f07a985a8faaa3fb27b1}
#### `define `[`UDC_BSS`](#group__udc__desc__group_1ga198e5cdf3367aa0b35821417b7ede0b2) {#group__udc__desc__group_1ga198e5cdf3367aa0b35821417b7ede0b2}
# struct `udc_config_speed_t` {#structudc__config__speed__t}
Configuration descriptor and UDI link for one USB speed.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
## Members
# struct `udc_config_t` {#structudc__config__t}
All information about the USB Device.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
## Members

+ 0
- 148
internals_udc_group.md View File

@ -1,148 +0,0 @@
# group `udc_group` {#group__udc__group}
The UDC provides a high-level abstraction of the usb device. You can use these functions to control the main device state (start/attach/wakeup).
USB Device Custom configurationThe following USB Device configuration must be included in the [conf_usb.h](.build/docs/internals_undefined.md#conf__usb_8h) file of the application.
USB_DEVICE_VENDOR_ID (Word)
Vendor ID provided by USB org (ATMEL 0x03EB).
USB_DEVICE_PRODUCT_ID (Word)
Product ID (Referenced in [usb_atmel.h](.build/docs/internals_undefined.md#usb__atmel_8h)).
USB_DEVICE_MAJOR_VERSION (Byte)
Major version of the device
USB_DEVICE_MINOR_VERSION (Byte)
Minor version of the device
USB_DEVICE_MANUFACTURE_NAME (string)
ASCII name for the manufacture
USB_DEVICE_PRODUCT_NAME (string)
ASCII name for the product
USB_DEVICE_SERIAL_NAME (string)
ASCII name to enable and set a serial number
USB_DEVICE_POWER (Numeric)
(unit mA) Maximum device power
USB_DEVICE_ATTR (Byte)
USB attributes available:
* USB_CONFIG_ATTR_SELF_POWERED
* USB_CONFIG_ATTR_REMOTE_WAKEUP Note: if remote wake enabled then defines remotewakeup callbacks, see Table 5-2. External API from UDC - Callback
USB_DEVICE_LOW_SPEED (Only defined)
Force the USB Device to run in low speed
USB_DEVICE_HS_SUPPORT (Only defined)
Authorize the USB Device to run in high speed
USB_DEVICE_MAX_EP (Byte)
Define the maximum endpoint number used by the USB Device.
This one is already defined in UDI default configuration. Ex:
* When endpoint control 0x00, endpoint 0x01 and endpoint 0x82 is used then USB_DEVICE_MAX_EP=2
* When only endpoint control 0x00 is used then USB_DEVICE_MAX_EP=0
* When endpoint 0x01 and endpoint 0x81 is used then USB_DEVICE_MAX_EP=1
(configuration not possible on USBB interface)
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public inline static bool `[`udc_include_vbus_monitoring`](#group__udc__group_1ga70d88509bac27ef9c25f693dd21d91ca)`(void)` | Authorizes the VBUS event.
`public void `[`udc_start`](#group__udc__group_1gadf4e193509cd03ab6333d62629ea51e7)`(void)` | Start the USB Device stack.
`public void `[`udc_stop`](#group__udc__group_1gae2264dd91b24db9d4bb23fb1a2014972)`(void)` | Stop the USB Device stack.
`public inline static void `[`udc_attach`](#group__udc__group_1ga2e71c4c6090543bc3bab06e710e2ee6b)`(void)` | Attach device to the bus when possible.
`public inline static void `[`udc_detach`](#group__udc__group_1ga702d387f5ebfc2e0ab41667eb7644dda)`(void)` | Detaches the device from the bus.
`public inline void `[`udc_remotewakeup`](#group__udc__group_1ga52c0439e5f6e471a9570471f00476260)`(void)` | The USB driver sends a resume signal called *"Upstream Resume"* This is authorized only when the remote wakeup feature is enabled by host.
`public `[`usb_iface_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__iface__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_interface_desc`](#group__udc__group_1gadb2a0f5ad1e834d4d7e7777f901d64d2)`(void)` | Returns a pointer on the current interface descriptor.
## Members
#### `public inline static bool `[`udc_include_vbus_monitoring`](#group__udc__group_1ga70d88509bac27ef9c25f693dd21d91ca)`(void)` {#group__udc__group_1ga70d88509bac27ef9c25f693dd21d91ca}
Authorizes the VBUS event.
#### Returns
true, if the VBUS monitoring is possible.
VBus monitoring used casesThe VBus monitoring is used only for USB SELF Power application.
* By default the USB device is automatically attached when Vbus is high or when USB is start for devices without internal Vbus monitoring. [conf_usb.h](.build/docs/internals_undefined.md#conf__usb_8h) file does not contains define USB_DEVICE_ATTACH_AUTO_DISABLE.
```cpp
//#define USB_DEVICE_ATTACH_AUTO_DISABLE
```
* Add custom VBUS monitoring. [conf_usb.h](.build/docs/internals_undefined.md#conf__usb_8h) file contains define USB_DEVICE_ATTACH_AUTO_DISABLE:
```cpp
#define USB_DEVICE_ATTACH_AUTO_DISABLE
```
User C file contains:
```cpp
// Authorize VBUS monitoring
if (!udc_include_vbus_monitoring()) {
// Implement custom VBUS monitoring via GPIO or other
}
Event_VBUS_present() // VBUS interrupt or GPIO interrupt or other
{
// Attach USB Device
udc_attach();
}
```
* Case of battery charging. [conf_usb.h](.build/docs/internals_undefined.md#conf__usb_8h) file contains define USB_DEVICE_ATTACH_AUTO_DISABLE:
```cpp
#define USB_DEVICE_ATTACH_AUTO_DISABLE
```
User C file contains:
```cpp
Event VBUS present() // VBUS interrupt or GPIO interrupt or ..
{
// Authorize battery charging, but wait key press to start USB.
}
Event Key press()
{
// Stop batteries charging
// Start USB
udc_attach();
}
```
#### `public void `[`udc_start`](#group__udc__group_1gadf4e193509cd03ab6333d62629ea51e7)`(void)` {#group__udc__group_1gadf4e193509cd03ab6333d62629ea51e7}
Start the USB Device stack.
#### `public void `[`udc_stop`](#group__udc__group_1gae2264dd91b24db9d4bb23fb1a2014972)`(void)` {#group__udc__group_1gae2264dd91b24db9d4bb23fb1a2014972}
Stop the USB Device stack.
#### `public inline static void `[`udc_attach`](#group__udc__group_1ga2e71c4c6090543bc3bab06e710e2ee6b)`(void)` {#group__udc__group_1ga2e71c4c6090543bc3bab06e710e2ee6b}
Attach device to the bus when possible.
If a VBus control is included in driver, then it will attach device when an acceptable Vbus level from the host is detected.
#### `public inline static void `[`udc_detach`](#group__udc__group_1ga702d387f5ebfc2e0ab41667eb7644dda)`(void)` {#group__udc__group_1ga702d387f5ebfc2e0ab41667eb7644dda}
Detaches the device from the bus.
The driver must remove pull-up on USB line D- or D+.
#### `public inline void `[`udc_remotewakeup`](#group__udc__group_1ga52c0439e5f6e471a9570471f00476260)`(void)` {#group__udc__group_1ga52c0439e5f6e471a9570471f00476260}
The USB driver sends a resume signal called *"Upstream Resume"* This is authorized only when the remote wakeup feature is enabled by host.
#### `public `[`usb_iface_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__iface__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_interface_desc`](#group__udc__group_1gadb2a0f5ad1e834d4d7e7777f901d64d2)`(void)` {#group__udc__group_1gadb2a0f5ad1e834d4d7e7777f901d64d2}
Returns a pointer on the current interface descriptor.
#### Returns
pointer on the current interface descriptor.

+ 0
- 267
internals_udc_group_interne.md View File

@ -1,267 +0,0 @@
# group `udc_group_interne` {#group__udc__group__interne}
Internal implementation
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public `[`usb_iface_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__iface__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_interface_desc`](#group__udc__group__interne_1gadb2a0f5ad1e834d4d7e7777f901d64d2)`(void)` | Returns a pointer on the current interface descriptor.
`public static `[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_eof_conf`](#group__udc__group__interne_1ga3442594fd7435c3803460847014c8970)`(void)` | Returns a value to check the end of USB Configuration descriptor.
`public static `[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_next_desc_in_iface`](#group__udc__group__interne_1ga5b377861e784ec69c3e841643169a981)`(`[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * desc,uint8_t desc_id)` | Search specific descriptor in global interface descriptor.
`public static bool `[`udc_update_iface_desc`](#group__udc__group__interne_1gab6a52be155f35da55d33d3474f06cc47)`(uint8_t iface_num,uint8_t setting_num)` | Search an interface descriptor This routine updates the internal pointer udc_ptr_iface.
`public static bool `[`udc_iface_disable`](#group__udc__group__interne_1ga4d8c4886411e5f90adaac8bff065c610)`(uint8_t iface_num)` | Disables an usb device interface (UDI) This routine call the UDI corresponding to interface number.
`public static bool `[`udc_iface_enable`](#group__udc__group__interne_1gab7d44215050fc758b44c86dc88a16264)`(uint8_t iface_num,uint8_t setting_num)` | Enables an usb device interface (UDI) This routine calls the UDI corresponding to the interface and setting number.
`public void `[`udc_start`](#group__udc__group__interne_1gadf4e193509cd03ab6333d62629ea51e7)`(void)` | Start the USB Device stack.
`public void `[`udc_stop`](#group__udc__group__interne_1gae2264dd91b24db9d4bb23fb1a2014972)`(void)` | Stop the USB Device stack.
`public void `[`udc_reset`](#group__udc__group__interne_1ga11a32ff7928ba06d3b59e95e0a2b7a92)`(void)` | Reset the current configuration of the USB device, This routines can be called by UDD when a RESET on the USB line occurs.
`public void `[`udc_sof_notify`](#group__udc__group__interne_1ga4afae313045f44b5eb4c60957ab8ef4e)`(void)` | To signal that a SOF is occurred.
`public static bool `[`udc_req_std_dev_get_status`](#group__udc__group__interne_1gad6531ffd8e25d5b7492a7a7f4f89ea3f)`(void)` | Standard device request to get device status.
`public static bool `[`udc_req_std_ep_get_status`](#group__udc__group__interne_1ga97951f0c157b56a0bdb2c1ee01ef28c7)`(void)` | Standard endpoint request to get endpoint status.
`public static bool `[`udc_req_std_dev_clear_feature`](#group__udc__group__interne_1gace4de90bb4ef13b7aede71038a5e1dcb)`(void)` | Standard device request to change device status.
`public static bool `[`udc_req_std_ep_clear_feature`](#group__udc__group__interne_1ga59d4bc22153641a20eb48f8407e9c099)`(void)` | Standard endpoint request to clear endpoint feature.
`public static bool `[`udc_req_std_dev_set_feature`](#group__udc__group__interne_1gadd42bf8a4178b3e06f78966a6323108d)`(void)` | Standard device request to set a feature.
`public static bool `[`udc_req_std_ep_set_feature`](#group__udc__group__interne_1ga11f8eef1ab88fe1d029414f039508661)`(void)` | Standard endpoint request to halt an endpoint.
`public static void `[`udc_valid_address`](#group__udc__group__interne_1ga8b6715772a604a998846a3aa97c042c2)`(void)` | Change the address of device Callback called at the end of request set address.
`public static bool `[`udc_req_std_dev_set_address`](#group__udc__group__interne_1gaa800b0a860337f155b43b86444f43809)`(void)` | Standard device request to set device address.
`public static bool `[`udc_req_std_dev_get_str_desc`](#group__udc__group__interne_1gaf13a0b91b1ec15e4aae33a7d5df2be64)`(void)` | Standard device request to get device string descriptor.
`public static bool `[`udc_req_std_dev_get_descriptor`](#group__udc__group__interne_1gae46c685525dbe2a47ed7acdabda5f094)`(void)` | Standard device request to get descriptors about USB device.
`public static bool `[`udc_req_std_dev_get_configuration`](#group__udc__group__interne_1gadd826de0797aae1e872f44a6a9ee81da)`(void)` | Standard device request to get configuration number.
`public static bool `[`udc_req_std_dev_set_configuration`](#group__udc__group__interne_1ga0da31a19fcd81e03a9b0d6ba17a2cdc4)`(void)` | Standard device request to enable a configuration.
`public static bool `[`udc_req_std_iface_get_setting`](#group__udc__group__interne_1gac9f53c587375a24ac6b63206d650f36c)`(void)` | Standard interface request to get the alternate setting number of an interface.
`public static bool `[`udc_req_std_iface_set_setting`](#group__udc__group__interne_1gad06f93d41064705e7f6fd992fef1230f)`(void)` | Standard interface request to set an alternate setting of an interface.
`public static bool `[`udc_reqstd`](#group__udc__group__interne_1gac82ad471b5bfa644309f98815757c867)`(void)` | Main routine to manage the standard USB SETUP request.
`public static bool `[`udc_req_iface`](#group__udc__group__interne_1ga920a557a9121c44513deceb2f9358fc1)`(void)` | Send the SETUP interface request to UDI.
`public static bool `[`udc_req_ep`](#group__udc__group__interne_1ga640a2df7bb1c1fbed895286a8513663c)`(void)` | Send the SETUP interface request to UDI.
`public bool `[`udc_process_setup`](#group__udc__group__interne_1ga58c2916d7984e0e5b2143cadf4af6080)`(void)` | Main routine to manage the USB SETUP request.
`struct `[`udc_string_desc_t`](#structudc__string__desc__t) |
## Members
#### `public `[`usb_iface_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__iface__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_interface_desc`](#group__udc__group__interne_1gadb2a0f5ad1e834d4d7e7777f901d64d2)`(void)` {#group__udc__group__interne_1gadb2a0f5ad1e834d4d7e7777f901d64d2}
Returns a pointer on the current interface descriptor.
#### Returns
pointer on the current interface descriptor.
#### `public static `[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_get_eof_conf`](#group__udc__group__interne_1ga3442594fd7435c3803460847014c8970)`(void)` {#group__udc__group__interne_1ga3442594fd7435c3803460847014c8970}
Returns a value to check the end of USB Configuration descriptor.
#### Returns
address after the last byte of USB Configuration descriptor
#### `public static `[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * `[`udc_next_desc_in_iface`](#group__udc__group__interne_1ga5b377861e784ec69c3e841643169a981)`(`[`usb_conf_desc_t](.build/docs/internals_usb_protocol_group.md#structusb__conf__desc__t)[UDC_DESC_STORAGE`](.build/docs/internals_undefined.md#group__udc__desc__group_1gae086959cec07a2e71ab069e25a51764f)` * desc,uint8_t desc_id)` {#group__udc__group__interne_1ga5b377861e784ec69c3e841643169a981}
Search specific descriptor in global interface descriptor.
#### Parameters
* `desc` Address of interface descriptor or previous specific descriptor found
* `desc_id` Descriptor ID to search
#### Returns
address of specific descriptor found
#### Returns
NULL if it is the end of global interface descriptor
#### `public static bool `[`udc_update_iface_desc`](#group__udc__group__interne_1gab6a52be155f35da55d33d3474f06cc47)`(uint8_t iface_num,uint8_t setting_num)` {#group__udc__group__interne_1gab6a52be155f35da55d33d3474f06cc47}
Search an interface descriptor This routine updates the internal pointer udc_ptr_iface.
#### Parameters
* `iface_num` Interface number to find in Configuration Descriptor
* `setting_num` Setting number of interface to find
#### Returns
1 if found or 0 if not found
#### `public static bool `[`udc_iface_disable`](#group__udc__group__interne_1ga4d8c4886411e5f90adaac8bff065c610)`(uint8_t iface_num)` {#group__udc__group__interne_1ga4d8c4886411e5f90adaac8bff065c610}
Disables an usb device interface (UDI) This routine call the UDI corresponding to interface number.
#### Parameters
* `iface_num` Interface number to disable
#### Returns
1 if it is done or 0 if interface is not found
#### `public static bool `[`udc_iface_enable`](#group__udc__group__interne_1gab7d44215050fc758b44c86dc88a16264)`(uint8_t iface_num,uint8_t setting_num)` {#group__udc__group__interne_1gab7d44215050fc758b44c86dc88a16264}
Enables an usb device interface (UDI) This routine calls the UDI corresponding to the interface and setting number.
#### Parameters
* `iface_num` Interface number to enable
* `setting_num` Setting number to enable
#### Returns
1 if it is done or 0 if interface is not found
#### `public void `[`udc_start`](#group__udc__group__interne_1gadf4e193509cd03ab6333d62629ea51e7)`(void)` {#group__udc__group__interne_1gadf4e193509cd03ab6333d62629ea51e7}
Start the USB Device stack.
#### `public void `[`udc_stop`](#group__udc__group__interne_1gae2264dd91b24db9d4bb23fb1a2014972)`(void)` {#group__udc__group__interne_1gae2264dd91b24db9d4bb23fb1a2014972}
Stop the USB Device stack.
#### `public void `[`udc_reset`](#group__udc__group__interne_1ga11a32ff7928ba06d3b59e95e0a2b7a92)`(void)` {#group__udc__group__interne_1ga11a32ff7928ba06d3b59e95e0a2b7a92}
Reset the current configuration of the USB device, This routines can be called by UDD when a RESET on the USB line occurs.
Reset the UDC.
#### `public void `[`udc_sof_notify`](#group__udc__group__interne_1ga4afae313045f44b5eb4c60957ab8ef4e)`(void)` {#group__udc__group__interne_1ga4afae313045f44b5eb4c60957ab8ef4e}
To signal that a SOF is occurred.
The UDC must send the signal to all UDIs enabled
#### `public static bool `[`udc_req_std_dev_get_status`](#group__udc__group__interne_1gad6531ffd8e25d5b7492a7a7f4f89ea3f)`(void)` {#group__udc__group__interne_1gad6531ffd8e25d5b7492a7a7f4f89ea3f}
Standard device request to get device status.
#### Returns
true if success
#### `public static bool `[`udc_req_std_ep_get_status`](#group__udc__group__interne_1ga97951f0c157b56a0bdb2c1ee01ef28c7)`(void)` {#group__udc__group__interne_1ga97951f0c157b56a0bdb2c1ee01ef28c7}
Standard endpoint request to get endpoint status.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_clear_feature`](#group__udc__group__interne_1gace4de90bb4ef13b7aede71038a5e1dcb)`(void)` {#group__udc__group__interne_1gace4de90bb4ef13b7aede71038a5e1dcb}
Standard device request to change device status.
#### Returns
true if success
#### `public static bool `[`udc_req_std_ep_clear_feature`](#group__udc__group__interne_1ga59d4bc22153641a20eb48f8407e9c099)`(void)` {#group__udc__group__interne_1ga59d4bc22153641a20eb48f8407e9c099}
Standard endpoint request to clear endpoint feature.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_set_feature`](#group__udc__group__interne_1gadd42bf8a4178b3e06f78966a6323108d)`(void)` {#group__udc__group__interne_1gadd42bf8a4178b3e06f78966a6323108d}
Standard device request to set a feature.
#### Returns
true if success
#### `public static bool `[`udc_req_std_ep_set_feature`](#group__udc__group__interne_1ga11f8eef1ab88fe1d029414f039508661)`(void)` {#group__udc__group__interne_1ga11f8eef1ab88fe1d029414f039508661}
Standard endpoint request to halt an endpoint.
#### Returns
true if success
#### `public static void `[`udc_valid_address`](#group__udc__group__interne_1ga8b6715772a604a998846a3aa97c042c2)`(void)` {#group__udc__group__interne_1ga8b6715772a604a998846a3aa97c042c2}
Change the address of device Callback called at the end of request set address.
#### `public static bool `[`udc_req_std_dev_set_address`](#group__udc__group__interne_1gaa800b0a860337f155b43b86444f43809)`(void)` {#group__udc__group__interne_1gaa800b0a860337f155b43b86444f43809}
Standard device request to set device address.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_get_str_desc`](#group__udc__group__interne_1gaf13a0b91b1ec15e4aae33a7d5df2be64)`(void)` {#group__udc__group__interne_1gaf13a0b91b1ec15e4aae33a7d5df2be64}
Standard device request to get device string descriptor.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_get_descriptor`](#group__udc__group__interne_1gae46c685525dbe2a47ed7acdabda5f094)`(void)` {#group__udc__group__interne_1gae46c685525dbe2a47ed7acdabda5f094}
Standard device request to get descriptors about USB device.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_get_configuration`](#group__udc__group__interne_1gadd826de0797aae1e872f44a6a9ee81da)`(void)` {#group__udc__group__interne_1gadd826de0797aae1e872f44a6a9ee81da}
Standard device request to get configuration number.
#### Returns
true if success
#### `public static bool `[`udc_req_std_dev_set_configuration`](#group__udc__group__interne_1ga0da31a19fcd81e03a9b0d6ba17a2cdc4)`(void)` {#group__udc__group__interne_1ga0da31a19fcd81e03a9b0d6ba17a2cdc4}
Standard device request to enable a configuration.
#### Returns
true if success
#### `public static bool `[`udc_req_std_iface_get_setting`](#group__udc__group__interne_1gac9f53c587375a24ac6b63206d650f36c)`(void)` {#group__udc__group__interne_1gac9f53c587375a24ac6b63206d650f36c}
Standard interface request to get the alternate setting number of an interface.
#### Returns
true if success
#### `public static bool `[`udc_req_std_iface_set_setting`](#group__udc__group__interne_1gad06f93d41064705e7f6fd992fef1230f)`(void)` {#group__udc__group__interne_1gad06f93d41064705e7f6fd992fef1230f}
Standard interface request to set an alternate setting of an interface.
#### Returns
true if success
#### `public static bool `[`udc_reqstd`](#group__udc__group__interne_1gac82ad471b5bfa644309f98815757c867)`(void)` {#group__udc__group__interne_1gac82ad471b5bfa644309f98815757c867}
Main routine to manage the standard USB SETUP request.
#### Returns
true if the request is supported
#### `public static bool `[`udc_req_iface`](#group__udc__group__interne_1ga920a557a9121c44513deceb2f9358fc1)`(void)` {#group__udc__group__interne_1ga920a557a9121c44513deceb2f9358fc1}
Send the SETUP interface request to UDI.
#### Returns
true if the request is supported
#### `public static bool `[`udc_req_ep`](#group__udc__group__interne_1ga640a2df7bb1c1fbed895286a8513663c)`(void)` {#group__udc__group__interne_1ga640a2df7bb1c1fbed895286a8513663c}
Send the SETUP interface request to UDI.
#### Returns
true if the request is supported
#### `public bool `[`udc_process_setup`](#group__udc__group__interne_1ga58c2916d7984e0e5b2143cadf4af6080)`(void)` {#group__udc__group__interne_1ga58c2916d7984e0e5b2143cadf4af6080}
Main routine to manage the USB SETUP request.
Decodes and manages a setup request.
This function parses a USB SETUP request and submits an appropriate response back to the host or, in the case of SETUP OUT requests with data, sets up a buffer for receiving the data payload.
The main standard requests defined by the USB 2.0 standard are handled internally. The interface requests are sent to UDI, and the specific request sent to a specific application callback.
#### Returns
true if the request is supported, else the request is stalled by UDD
# struct `udc_string_desc_t` {#structudc__string__desc__t}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public `[`usb_str_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__str__desc__t)` `[`header`](#structudc__string__desc__t_1ae96103b577725a05178dac3136d1a859) |
`public le16_t `[`string`](#structudc__string__desc__t_1a9c4b5919e84bf0e87ea42a502f4dd74c) |
## Members
#### `public `[`usb_str_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__str__desc__t)` `[`header`](#structudc__string__desc__t_1ae96103b577725a05178dac3136d1a859) {#structudc__string__desc__t_1ae96103b577725a05178dac3136d1a859}
#### `public le16_t `[`string`](#structudc__string__desc__t_1a9c4b5919e84bf0e87ea42a502f4dd74c) {#structudc__string__desc__t_1a9c4b5919e84bf0e87ea42a502f4dd74c}

+ 0
- 146
internals_udd_group.md View File

@ -1,146 +0,0 @@
# group `udd_group` {#group__udd__group}
The UDD driver provides a low-level abstraction of the device controller hardware. Most events coming from the hardware such as interrupts, which may cause the UDD to call into the UDC and UDI.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`Udd_setup_is_in`](#group__udd__group_1gaffd9b7cf165cd149868373fa12595d12) | Return true if the setup request *udd_g_ctrlreq* indicates IN data transfer.
`define `[`Udd_setup_is_out`](#group__udd__group_1gaf67b7c8de30fdc881b567385f2345926) | Return true if the setup request *udd_g_ctrlreq* indicates OUT data transfer.
`define `[`Udd_setup_type`](#group__udd__group_1ga85dc2b7b6c270e8dd8323fa4779a7ca2) | Return the type of the SETUP request *udd_g_ctrlreq*.
`define `[`Udd_setup_recipient`](#group__udd__group_1gac963bb7b8a965c2fec45a71c9faca6f5) | Return the recipient of the SETUP request *udd_g_ctrlreq*.
`enum `[`udd_ep_status_t`](#group__udd__group_1gac0f77f5a0e085af1242b48fd1054959a) | Endpoint transfer status Returned in parameters of callback register via udd_ep_run routine.
`public bool `[`udd_include_vbus_monitoring`](#group__udd__group_1gaa4cac8c35ae056e26cf4ab5b426bbe09)`(void)` | Authorizes the VBUS event.
`public void `[`udd_enable`](#group__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42)`(void)` | Enables the USB Device mode.
`public void `[`udd_disable`](#group__udd__group_1gab283432057b934e9d73ac9282d9b0f11)`(void)` | Disables the USB Device mode.
`public void `[`udd_attach`](#group__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f)`(void)` | Attach device to the bus when possible.
`public void `[`udd_detach`](#group__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e)`(void)` | Detaches the device from the bus.
`public bool `[`udd_is_high_speed`](#group__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c)`(void)` | Test whether the USB Device Controller is running at high speed or not.
`public void `[`udd_set_address`](#group__udd__group_1ga05da762e0faf9d478e532de40afa71f6)`(uint8_t address)` | Changes the USB address of device.
`public uint8_t `[`udd_getaddress`](#group__udd__group_1gaebd36638d482f6df00a8aff006ef2246)`(void)` | Returns the USB address of device.
`public uint16_t `[`udd_get_frame_number`](#group__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320)`(void)` | Returns the current start of frame number.
`public uint16_t `[`udd_get_micro_frame_number`](#group__udd__group_1ga63047eec59b8e8798ca1d3366472d82b)`(void)` | Returns the current micro start of frame number.
`public void `[`udd_send_remotewakeup`](#group__udd__group_1gac447212e04789282dabee65a23fe2a08)`(void)` | The USB driver sends a resume signal called Upstream Resume.
`public void `[`udd_set_setup_payload`](#group__udd__group_1ga017ef5ea7626be258c24d345218976f9)`(uint8_t * payload,uint16_t payload_size)` | Load setup payload.
`struct `[`udd_ctrl_request_t`](#structudd__ctrl__request__t) | Global variable to give and record information of the setup request management.
## Members
#### `define `[`Udd_setup_is_in`](#group__udd__group_1gaffd9b7cf165cd149868373fa12595d12) {#group__udd__group_1gaffd9b7cf165cd149868373fa12595d12}
Return true if the setup request *udd_g_ctrlreq* indicates IN data transfer.
#### `define `[`Udd_setup_is_out`](#group__udd__group_1gaf67b7c8de30fdc881b567385f2345926) {#group__udd__group_1gaf67b7c8de30fdc881b567385f2345926}
Return true if the setup request *udd_g_ctrlreq* indicates OUT data transfer.
#### `define `[`Udd_setup_type`](#group__udd__group_1ga85dc2b7b6c270e8dd8323fa4779a7ca2) {#group__udd__group_1ga85dc2b7b6c270e8dd8323fa4779a7ca2}
Return the type of the SETUP request *udd_g_ctrlreq*.
**See also**: usb_reqtype.
#### `define `[`Udd_setup_recipient`](#group__udd__group_1gac963bb7b8a965c2fec45a71c9faca6f5) {#group__udd__group_1gac963bb7b8a965c2fec45a71c9faca6f5}
Return the recipient of the SETUP request *udd_g_ctrlreq*.
**See also**: usb_recipient
#### `enum `[`udd_ep_status_t`](#group__udd__group_1gac0f77f5a0e085af1242b48fd1054959a) {#group__udd__group_1gac0f77f5a0e085af1242b48fd1054959a}
Values | Descriptions
--------------------------------|---------------------------------------------
UDD_EP_TRANSFER_OK |
UDD_EP_TRANSFER_ABORT |
Endpoint transfer status Returned in parameters of callback register via udd_ep_run routine.
#### `public bool `[`udd_include_vbus_monitoring`](#group__udd__group_1gaa4cac8c35ae056e26cf4ab5b426bbe09)`(void)` {#group__udd__group_1gaa4cac8c35ae056e26cf4ab5b426bbe09}
Authorizes the VBUS event.
#### Returns
true, if the VBUS monitoring is possible.
#### `public void `[`udd_enable`](#group__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42)`(void)` {#group__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42}
Enables the USB Device mode.
#### `public void `[`udd_disable`](#group__udd__group_1gab283432057b934e9d73ac9282d9b0f11)`(void)` {#group__udd__group_1gab283432057b934e9d73ac9282d9b0f11}
Disables the USB Device mode.
#### `public void `[`udd_attach`](#group__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f)`(void)` {#group__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f}
Attach device to the bus when possible.
If a VBus control is included in driver, then it will attach device when an acceptable Vbus level from the host is detected.
#### `public void `[`udd_detach`](#group__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e)`(void)` {#group__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e}
Detaches the device from the bus.
The driver must remove pull-up on USB line D- or D+.
#### `public bool `[`udd_is_high_speed`](#group__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c)`(void)` {#group__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c}
Test whether the USB Device Controller is running at high speed or not.
#### Returns
`true` if the Device is running at high speed mode, otherwise `false`.
#### `public void `[`udd_set_address`](#group__udd__group_1ga05da762e0faf9d478e532de40afa71f6)`(uint8_t address)` {#group__udd__group_1ga05da762e0faf9d478e532de40afa71f6}
Changes the USB address of device.
#### Parameters
* `address` New USB address
#### `public uint8_t `[`udd_getaddress`](#group__udd__group_1gaebd36638d482f6df00a8aff006ef2246)`(void)` {#group__udd__group_1gaebd36638d482f6df00a8aff006ef2246}
Returns the USB address of device.
#### Returns
USB address
#### `public uint16_t `[`udd_get_frame_number`](#group__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320)`(void)` {#group__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320}
Returns the current start of frame number.
#### Returns
current start of frame number.
#### `public uint16_t `[`udd_get_micro_frame_number`](#group__udd__group_1ga63047eec59b8e8798ca1d3366472d82b)`(void)` {#group__udd__group_1ga63047eec59b8e8798ca1d3366472d82b}
Returns the current micro start of frame number.
#### Returns
current micro start of frame number required in high speed mode.
#### `public void `[`udd_send_remotewakeup`](#group__udd__group_1gac447212e04789282dabee65a23fe2a08)`(void)` {#group__udd__group_1gac447212e04789282dabee65a23fe2a08}
The USB driver sends a resume signal called Upstream Resume.
#### `public void `[`udd_set_setup_payload`](#group__udd__group_1ga017ef5ea7626be258c24d345218976f9)`(uint8_t * payload,uint16_t payload_size)` {#group__udd__group_1ga017ef5ea7626be258c24d345218976f9}
Load setup payload.
#### Parameters
* `payload` Pointer on payload
* `payload_size` Size of payload
# struct `udd_ctrl_request_t` {#structudd__ctrl__request__t}
Global variable to give and record information of the setup request management.
This global variable allows to decode and response a setup request. It can be updated by [udc_process_setup()](.build/docs/internals_undefined.md#group__udc__group__interne_1ga58c2916d7984e0e5b2143cadf4af6080) from UDC or *setup() from UDIs.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
## Members

+ 0
- 25
internals_udi_group.md View File

@ -1,25 +0,0 @@
# group `udi_group` {#group__udi__group}
The UDI provides a common API for all classes, and this is used by UDC for the main control of USB Device interface.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`struct `[`udi_api_t`](#structudi__api__t) | UDI API.
# struct `udi_api_t` {#structudi__api__t}
UDI API.
The callbacks within this structure are called only by USB Device Controller (UDC)
The [udc_get_interface_desc()](.build/docs/internals_undefined.md#group__udc__group__interne_1gadb2a0f5ad1e834d4d7e7777f901d64d2) can be use by UDI to know the interface descriptor selected by UDC.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
## Members

+ 0
- 28
internals_udi_hid_group.md View File

@ -1,28 +0,0 @@
# group `udi_hid_group` {#group__udi__hid__group}
Common library for all Human Interface Device (HID) implementation.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public bool `[`udi_hid_setup`](#group__udi__hid__group_1ga9594c21fbb713dabebed1c970664680b)`(uint8_t * rate,uint8_t * protocol,uint8_t * report_desc,bool(*)(void) setup_report)` | Decode HID setup request.
## Members
#### `public bool `[`udi_hid_setup`](#group__udi__hid__group_1ga9594c21fbb713dabebed1c970664680b)`(uint8_t * rate,uint8_t * protocol,uint8_t * report_desc,bool(*)(void) setup_report)` {#group__udi__hid__group_1ga9594c21fbb713dabebed1c970664680b}
Decode HID setup request.
#### Parameters
* `rate` Pointer on rate of current HID interface
* `protocol` Pointer on protocol of current HID interface
* `report_desc` Pointer on report descriptor of current HID interface
* `set_report` Pointer on set_report callback of current HID interface
#### Returns
`1` if function was successfully done, otherwise `0`.

+ 0
- 34
internals_udi_hid_group_internal.md View File

@ -1,34 +0,0 @@
# group `udi_hid_group_internal` {#group__udi__hid__group__internal}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public static bool `[`udi_hid_reqstdifaceget_descriptor`](#group__udi__hid__group__internal_1ga0ecbd5a80812ac07a1ee3f890a959640)`(uint8_t * report_desc)` | Send the specific descriptors requested by SETUP request.
`public bool `[`udi_hid_setup`](#group__udi__hid__group__internal_1ga9594c21fbb713dabebed1c970664680b)`(uint8_t * rate,uint8_t * protocol,uint8_t * report_desc,bool(*)(void) setup_report)` | Decode HID setup request.
## Members
#### `public static bool `[`udi_hid_reqstdifaceget_descriptor`](#group__udi__hid__group__internal_1ga0ecbd5a80812ac07a1ee3f890a959640)`(uint8_t * report_desc)` {#group__udi__hid__group__internal_1ga0ecbd5a80812ac07a1ee3f890a959640}
Send the specific descriptors requested by SETUP request.
#### Parameters
* `true` if the descriptor is supported
#### `public bool `[`udi_hid_setup`](#group__udi__hid__group__internal_1ga9594c21fbb713dabebed1c970664680b)`(uint8_t * rate,uint8_t * protocol,uint8_t * report_desc,bool(*)(void) setup_report)` {#group__udi__hid__group__internal_1ga9594c21fbb713dabebed1c970664680b}
Decode HID setup request.
#### Parameters
* `rate` Pointer on rate of current HID interface
* `protocol` Pointer on protocol of current HID interface
* `report_desc` Pointer on report descriptor of current HID interface
* `set_report` Pointer on set_report callback of current HID interface
#### Returns
`1` if function was successfully done, otherwise `0`.

+ 0
- 11
internals_udi_hid_keyboard_group_single_desc.md View File

@ -1,11 +0,0 @@
# group `udi_hid_keyboard_group_single_desc` {#group__udi__hid__keyboard__group__single__desc}
The following structures provide the USB device descriptors required for USB Device with a single interface HID keyboard.
It is ready to use and do not require more definition.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------

+ 0
- 9
internals_usb_atmel_ids_group.md View File

@ -1,9 +0,0 @@
# group `usb_atmel_ids_group` {#group__usb__atmel__ids__group}
This module defines Atmel PID and VIDs constants.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------

+ 0
- 27
internals_usb_device_group.md View File

@ -1,27 +0,0 @@
# group `usb_device_group` {#group__usb__device__group}
This module includes USB Stack Device implementation. The stack is divided in three parts:
* USB Device Controller (UDC) provides USB chapter 9 compliance
* USB Device Interface (UDI) provides USB Class compliance
* USB Device Driver (UDD) provides USB Driver for each Atmel MCU
Many USB Device applications can be implemented on Atmel MCU. Atmel provides many application notes for different applications:
* AVR4900, provides general information about Device Stack
* AVR4901, explains how to create a new class
* AVR4902, explains how to create a composite device
* AVR49xx, all device classes provided in ASF have an application note
A basic USB knowledge is required to understand the USB Device Class application notes (HID,MS,CDC,PHDC,...). Then, to create an USB device with only one class provided by ASF, refer directly to the application note corresponding to this USB class. The USB Device application note for New Class and Composite is dedicated to advanced USB users.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------

+ 0
- 325
internals_usb_device_udd_group.md View File

@ -1,325 +0,0 @@
# group `usb_device_udd_group` {#group__usb__device__udd__group}
USB low-level driver for USB device mode
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`UDC_REMOTEWAKEUP_LPM_ENABLE`](#group__usb__device__udd__group_1gaad02b98c5c4188ff50fd72c81e6bfa20) |
`define `[`UDC_REMOTEWAKEUP_LPM_DISABLE`](#group__usb__device__udd__group_1gabd679a48d3828303b04b4e56b5e92481) |
`define `[`UDC_SUSPEND_LPM_EVENT`](#group__usb__device__udd__group_1gaad464bdb9c5a422a2f337b6367114db6) |
`define `[`dbg_print`](#group__usb__device__udd__group_1gac0876bf5bac7dfffd0ee0b003cdc76ef) |
`define `[`UDD_ENDPOINT_MAX_TRANS`](#group__usb__device__udd__group_1ga9b73a2cd4488b39038d49d865e03fe0e) | Maximum size of a transfer in multi-packet mode
`public static udd_ep_job_t * `[`udd_ep_get_job`](#group__usb__device__udd__group_1ga44d7180f54df872da50d8d04918fc5c7)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Get the detailed job by endpoint number.
`public static void `[`udd_ep_trans_in_next`](#group__usb__device__udd__group_1ga7cd1ac3f0e6071afa036e27c5bd4d33c)`(void * pointer)` | Endpoint IN process, continue to send packets or zero length packet.
`public static void `[`udd_ep_trans_out_next`](#group__usb__device__udd__group_1ga2c2140346e2f4ef3b07e36d2abf2de5e)`(void * pointer)` | Endpoint OUT process, continue to receive packets or zero length packet.
`public static void `[`udd_ep_transfer_process`](#group__usb__device__udd__group_1gaa3607835799fb01db3d38bcbc87463fb)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` | Endpoint Transfer Complete callback function, to do the next transfer depends on the direction(IN or OUT)
`public void `[`udd_ep_abort`](#group__usb__device__udd__group_1gaacd4ece19accac669506b615916efe2f)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Aborts transfer on going on endpoint.
`public bool `[`udd_is_high_speed`](#group__usb__device__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c)`(void)` | Test whether the USB Device Controller is running at high speed or not.
`public uint16_t `[`udd_get_frame_number`](#group__usb__device__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320)`(void)` | Returns the current start of frame number.
`public uint16_t `[`udd_get_micro_frame_number`](#group__usb__device__udd__group_1ga63047eec59b8e8798ca1d3366472d82b)`(void)` | Returns the current micro start of frame number.
`public void `[`udd_ep_free`](#group__usb__device__udd__group_1ga12c064720e08b9151e2a47f79d986c29)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Disables an endpoint.
`public bool `[`udd_ep_alloc`](#group__usb__device__udd__group_1gaf87db391732b278915079b43ce20a4c1)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,uint8_t bmAttributes,uint16_t MaxEndpointSize)` | Configures and enables an endpoint.
`public bool `[`udd_ep_is_halted`](#group__usb__device__udd__group_1ga2d531ac8c1e142185c6ed6eaeb2737c0)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Check if the endpoint *ep* is halted.
`public bool `[`udd_ep_set_halt`](#group__usb__device__udd__group_1ga55dd14b9b00781223e39c2549ffdb61c)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Set the halted state of the endpoint *ep*.
`public bool `[`udd_ep_clear_halt`](#group__usb__device__udd__group_1ga2b89e75674bd590432e9928326d5ef73)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` | Clear the halted state of the endpoint *ep*.
`public bool `[`udd_ep_wait_stall_clear`](#group__usb__device__udd__group_1ga9dde9a9ac41ffc519cc2e2f93308db1c)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,`[`udd_callback_halt_cleared_t`](.build/docs/internals_undefined.md#group__udd__group_1ga70b1655bda30b7d03df637a1bb23bdd5)` callback)` | Registers a callback to call when endpoint halt is cleared.
`public static void `[`udd_ctrl_stall_data`](#group__usb__device__udd__group_1gabf919b71cee71a11e1ea4e64fb9891d1)`(void)` | Control Endpoint stall sending data.
`public bool `[`udd_ep_run`](#group__usb__device__udd__group_1ga3023b640115dd86dc922fcd79f5b8757)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,bool b_shortpacket,uint8_t * buf,iram_size_t buf_size,`[`udd_callback_trans_t`](.build/docs/internals_undefined.md#group__udd__group_1ga4e79edfc4d62b203dbc271e80a624917)` callback)` | Allows to receive or send data on an endpoint.
`public void `[`udd_set_address`](#group__usb__device__udd__group_1ga05da762e0faf9d478e532de40afa71f6)`(uint8_t address)` | Changes the USB address of device.
`public uint8_t `[`udd_getaddress`](#group__usb__device__udd__group_1gaebd36638d482f6df00a8aff006ef2246)`(void)` | Returns the USB address of device.
`public void `[`udd_send_remotewakeup`](#group__usb__device__udd__group_1gac447212e04789282dabee65a23fe2a08)`(void)` | The USB driver sends a resume signal called Upstream Resume.
`public void `[`udd_set_setup_payload`](#group__usb__device__udd__group_1ga017ef5ea7626be258c24d345218976f9)`(uint8_t * payload,uint16_t payload_size)` | Load setup payload.
`public static void `[`udd_ctrl_fetch_ram`](#group__usb__device__udd__group_1gaf6ffb95ec28493ddaf038642ee995ce6)`(void)` | Control Endpoint translate the data in buffer into Device Request Struct.
`public static void `[`udd_ctrl_send_zlp_in`](#group__usb__device__udd__group_1gab6a8abd5db8a94d6becc73b2b70dc748)`(void)` | Control Endpoint send out zero length packet.
`public static void `[`udd_ctrl_in_sent`](#group__usb__device__udd__group_1ga181ffd0cddf5130f55df6df8ca3f916c)`(void)` | Process control endpoint IN transaction.
`public static void `[`udd_ctrl_out_received`](#group__usb__device__udd__group_1gaa137563d9a7717c634279ad596fbc5fb)`(void * pointer)` | Process control endpoint OUT transaction.
`public static void `[`_usb_ep0_on_setup`](#group__usb__device__udd__group_1ga2f36d2d5628b8edfaf619bcb2c7de44f)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`udd_ctrl_underflow`](#group__usb__device__udd__group_1gae49bae7d7d68329b1c050f39c902d08e)`(void * pointer)` | Control Endpoint Process when underflow condition has occurred.
`public static void `[`udd_ctrl_overflow`](#group__usb__device__udd__group_1ga58ec0c5b490824774f753cc9ff6c1250)`(void * pointer)` | Control Endpoint Process when overflow condition has occurred.
`public static void `[`_usb_ep0_on_tansfer_fail`](#group__usb__device__udd__group_1ga67ec9c51a13358e3e241b2d10b3b4a05)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`_usb_ep0_on_tansfer_ok`](#group__usb__device__udd__group_1gabe51608c4f3fb3cb905463758645127c)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`udd_ctrl_ep_enable`](#group__usb__device__udd__group_1ga16a526f9870d3b670345b98bcfbe166c)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst)` | Enable Control Endpoint.
`public static void `[`_usb_on_suspend`](#group__usb__device__udd__group_1gaf4c2f4bf0f76bcf873d165f1e960c8e1)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`_usb_on_sof_notify`](#group__usb__device__udd__group_1gae65a2792570d8aec7e758b3526721086)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`_usb_on_bus_reset`](#group__usb__device__udd__group_1gaf286144a1b50b68ed2edd38d67e1f4b0)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public static void `[`_usb_on_wakeup`](#group__usb__device__udd__group_1ga563d04cd60d478a430261aaa9da5e07a)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` |
`public void `[`udd_detach`](#group__usb__device__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e)`(void)` | Detaches the device from the bus.
`public void `[`udd_attach`](#group__usb__device__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f)`(void)` | Attach device to the bus when possible.
`public void `[`udd_enable`](#group__usb__device__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42)`(void)` | Enables the USB Device mode.
`public void `[`udd_disable`](#group__usb__device__udd__group_1gab283432057b934e9d73ac9282d9b0f11)`(void)` | Disables the USB Device mode.
## Members
#### `define `[`UDC_REMOTEWAKEUP_LPM_ENABLE`](#group__usb__device__udd__group_1gaad02b98c5c4188ff50fd72c81e6bfa20) {#group__usb__device__udd__group_1gaad02b98c5c4188ff50fd72c81e6bfa20}
#### `define `[`UDC_REMOTEWAKEUP_LPM_DISABLE`](#group__usb__device__udd__group_1gabd679a48d3828303b04b4e56b5e92481) {#group__usb__device__udd__group_1gabd679a48d3828303b04b4e56b5e92481}
#### `define `[`UDC_SUSPEND_LPM_EVENT`](#group__usb__device__udd__group_1gaad464bdb9c5a422a2f337b6367114db6) {#group__usb__device__udd__group_1gaad464bdb9c5a422a2f337b6367114db6}
#### `define `[`dbg_print`](#group__usb__device__udd__group_1gac0876bf5bac7dfffd0ee0b003cdc76ef) {#group__usb__device__udd__group_1gac0876bf5bac7dfffd0ee0b003cdc76ef}
#### `define `[`UDD_ENDPOINT_MAX_TRANS`](#group__usb__device__udd__group_1ga9b73a2cd4488b39038d49d865e03fe0e) {#group__usb__device__udd__group_1ga9b73a2cd4488b39038d49d865e03fe0e}
Maximum size of a transfer in multi-packet mode
#### `public static udd_ep_job_t * `[`udd_ep_get_job`](#group__usb__device__udd__group_1ga44d7180f54df872da50d8d04918fc5c7)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1ga44d7180f54df872da50d8d04918fc5c7}
Get the detailed job by endpoint number.
#### Parameters
* `ep` Endpoint Address
#### Parameters
* `pointer` to an udd_ep_job_t structure instance
#### `public static void `[`udd_ep_trans_in_next`](#group__usb__device__udd__group_1ga7cd1ac3f0e6071afa036e27c5bd4d33c)`(void * pointer)` {#group__usb__device__udd__group_1ga7cd1ac3f0e6071afa036e27c5bd4d33c}
Endpoint IN process, continue to send packets or zero length packet.
#### Parameters
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public static void `[`udd_ep_trans_out_next`](#group__usb__device__udd__group_1ga2c2140346e2f4ef3b07e36d2abf2de5e)`(void * pointer)` {#group__usb__device__udd__group_1ga2c2140346e2f4ef3b07e36d2abf2de5e}
Endpoint OUT process, continue to receive packets or zero length packet.
#### Parameters
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public static void `[`udd_ep_transfer_process`](#group__usb__device__udd__group_1gaa3607835799fb01db3d38bcbc87463fb)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1gaa3607835799fb01db3d38bcbc87463fb}
Endpoint Transfer Complete callback function, to do the next transfer depends on the direction(IN or OUT)
#### Parameters
* `module_inst` Pointer to USB module instance
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public void `[`udd_ep_abort`](#group__usb__device__udd__group_1gaacd4ece19accac669506b615916efe2f)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1gaacd4ece19accac669506b615916efe2f}
Aborts transfer on going on endpoint.
If a transfer is on going, then it is stopped and the callback registered is called to signal the end of transfer. Note: The control endpoint is not authorized.
#### Parameters
* `ep` Endpoint to abort
#### `public bool `[`udd_is_high_speed`](#group__usb__device__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c)`(void)` {#group__usb__device__udd__group_1ga85f403ddb78776b1ba014dafd3ffec2c}
Test whether the USB Device Controller is running at high speed or not.
#### Returns
`true` if the Device is running at high speed mode, otherwise `false`.
#### `public uint16_t `[`udd_get_frame_number`](#group__usb__device__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320)`(void)` {#group__usb__device__udd__group_1ga96dc248cc05e07ffe2cf21e4d7465320}
Returns the current start of frame number.
#### Returns
current start of frame number.
#### `public uint16_t `[`udd_get_micro_frame_number`](#group__usb__device__udd__group_1ga63047eec59b8e8798ca1d3366472d82b)`(void)` {#group__usb__device__udd__group_1ga63047eec59b8e8798ca1d3366472d82b}
Returns the current micro start of frame number.
#### Returns
current micro start of frame number required in high speed mode.
#### `public void `[`udd_ep_free`](#group__usb__device__udd__group_1ga12c064720e08b9151e2a47f79d986c29)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1ga12c064720e08b9151e2a47f79d986c29}
Disables an endpoint.
#### Parameters
* `ep` Endpoint number including direction (USB_EP_DIR_IN/USB_EP_DIR_OUT).
#### `public bool `[`udd_ep_alloc`](#group__usb__device__udd__group_1gaf87db391732b278915079b43ce20a4c1)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,uint8_t bmAttributes,uint16_t MaxEndpointSize)` {#group__usb__device__udd__group_1gaf87db391732b278915079b43ce20a4c1}
Configures and enables an endpoint.
#### Parameters
* `ep` Endpoint number including direction (USB_EP_DIR_IN/USB_EP_DIR_OUT).
* `bmAttributes` Attributes of endpoint declared in the descriptor.
* `MaxEndpointSize` Endpoint maximum size
#### Returns
`1` if the endpoint is enabled, otherwise `0`.
#### `public bool `[`udd_ep_is_halted`](#group__usb__device__udd__group_1ga2d531ac8c1e142185c6ed6eaeb2737c0)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1ga2d531ac8c1e142185c6ed6eaeb2737c0}
Check if the endpoint *ep* is halted.
#### Parameters
* `ep` The ID of the endpoint to check.
#### Returns
`1` if *ep* is halted, otherwise `0`.
#### `public bool `[`udd_ep_set_halt`](#group__usb__device__udd__group_1ga55dd14b9b00781223e39c2549ffdb61c)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1ga55dd14b9b00781223e39c2549ffdb61c}
Set the halted state of the endpoint *ep*.
After calling this function, any transaction on *ep* will result in a STALL handshake being sent. Any pending transactions will be performed first, however.
#### Parameters
* `ep` The ID of the endpoint to be halted
#### Returns
`1` if *ep* is halted, otherwise `0`.
#### `public bool `[`udd_ep_clear_halt`](#group__usb__device__udd__group_1ga2b89e75674bd590432e9928326d5ef73)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep)` {#group__usb__device__udd__group_1ga2b89e75674bd590432e9928326d5ef73}
Clear the halted state of the endpoint *ep*.
After calling this function, any transaction on *ep* will be handled normally, i.e. a STALL handshake will not be sent, and the data toggle sequence will start at DATA0.
#### Parameters
* `ep` The ID of the endpoint to be un-halted
#### Returns
`1` if function was successfully done, otherwise `0`.
#### `public bool `[`udd_ep_wait_stall_clear`](#group__usb__device__udd__group_1ga9dde9a9ac41ffc519cc2e2f93308db1c)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,`[`udd_callback_halt_cleared_t`](.build/docs/internals_undefined.md#group__udd__group_1ga70b1655bda30b7d03df637a1bb23bdd5)` callback)` {#group__usb__device__udd__group_1ga9dde9a9ac41ffc519cc2e2f93308db1c}
Registers a callback to call when endpoint halt is cleared.
#### Parameters
* `ep` The ID of the endpoint to use
* `callback` NULL or function to call when endpoint halt is cleared
if the endpoint is not halted then the *callback* is called immediately.
#### Returns
`1` if the register is accepted, otherwise `0`.
#### `public static void `[`udd_ctrl_stall_data`](#group__usb__device__udd__group_1gabf919b71cee71a11e1ea4e64fb9891d1)`(void)` {#group__usb__device__udd__group_1gabf919b71cee71a11e1ea4e64fb9891d1}
Control Endpoint stall sending data.
#### `public bool `[`udd_ep_run`](#group__usb__device__udd__group_1ga3023b640115dd86dc922fcd79f5b8757)`(`[`udd_ep_id_t`](.build/docs/internals_undefined.md#group__udd__group_1ga6f25ea016c07bd48c3074f51d8ef8b01)` ep,bool b_shortpacket,uint8_t * buf,iram_size_t buf_size,`[`udd_callback_trans_t`](.build/docs/internals_undefined.md#group__udd__group_1ga4e79edfc4d62b203dbc271e80a624917)` callback)` {#group__usb__device__udd__group_1ga3023b640115dd86dc922fcd79f5b8757}
Allows to receive or send data on an endpoint.
The driver uses a specific DMA USB to transfer data from internal RAM to endpoint, if this one is available. When the transfer is finished or aborted (stall, reset, ...), the *callback* is called. The *callback* returns the transfer status and eventually the number of byte transfered. Note: The control endpoint is not authorized.
#### Parameters
* `ep` The ID of the endpoint to use
* `b_shortpacket` Enabled automatic short packet
* `buf` Buffer on Internal RAM to send or fill. It must be align, then use COMPILER_WORD_ALIGNED.
* `buf_size` Buffer size to send or fill
* `callback` NULL or function to call at the end of transfer
About *b_shortpacket*, for IN endpoint it means that a short packet (or a Zero Length Packet) will be sent to the USB line to properly close the usb transfer at the end of the data transfer. For Bulk and Interrupt OUT endpoint, it will automatically stop the transfer at the end of the data transfer (received short packet).
#### Returns
`1` if function was successfully done, otherwise `0`.
#### `public void `[`udd_set_address`](#group__usb__device__udd__group_1ga05da762e0faf9d478e532de40afa71f6)`(uint8_t address)` {#group__usb__device__udd__group_1ga05da762e0faf9d478e532de40afa71f6}
Changes the USB address of device.
#### Parameters
* `address` New USB address
#### `public uint8_t `[`udd_getaddress`](#group__usb__device__udd__group_1gaebd36638d482f6df00a8aff006ef2246)`(void)` {#group__usb__device__udd__group_1gaebd36638d482f6df00a8aff006ef2246}
Returns the USB address of device.
#### Returns
USB address
#### `public void `[`udd_send_remotewakeup`](#group__usb__device__udd__group_1gac447212e04789282dabee65a23fe2a08)`(void)` {#group__usb__device__udd__group_1gac447212e04789282dabee65a23fe2a08}
The USB driver sends a resume signal called Upstream Resume.
#### `public void `[`udd_set_setup_payload`](#group__usb__device__udd__group_1ga017ef5ea7626be258c24d345218976f9)`(uint8_t * payload,uint16_t payload_size)` {#group__usb__device__udd__group_1ga017ef5ea7626be258c24d345218976f9}
Load setup payload.
#### Parameters
* `payload` Pointer on payload
* `payload_size` Size of payload
#### `public static void `[`udd_ctrl_fetch_ram`](#group__usb__device__udd__group_1gaf6ffb95ec28493ddaf038642ee995ce6)`(void)` {#group__usb__device__udd__group_1gaf6ffb95ec28493ddaf038642ee995ce6}
Control Endpoint translate the data in buffer into Device Request Struct.
#### `public static void `[`udd_ctrl_send_zlp_in`](#group__usb__device__udd__group_1gab6a8abd5db8a94d6becc73b2b70dc748)`(void)` {#group__usb__device__udd__group_1gab6a8abd5db8a94d6becc73b2b70dc748}
Control Endpoint send out zero length packet.
#### `public static void `[`udd_ctrl_in_sent`](#group__usb__device__udd__group_1ga181ffd0cddf5130f55df6df8ca3f916c)`(void)` {#group__usb__device__udd__group_1ga181ffd0cddf5130f55df6df8ca3f916c}
Process control endpoint IN transaction.
#### `public static void `[`udd_ctrl_out_received`](#group__usb__device__udd__group_1gaa137563d9a7717c634279ad596fbc5fb)`(void * pointer)` {#group__usb__device__udd__group_1gaa137563d9a7717c634279ad596fbc5fb}
Process control endpoint OUT transaction.
#### Parameters
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public static void `[`_usb_ep0_on_setup`](#group__usb__device__udd__group_1ga2f36d2d5628b8edfaf619bcb2c7de44f)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1ga2f36d2d5628b8edfaf619bcb2c7de44f}
#### `public static void `[`udd_ctrl_underflow`](#group__usb__device__udd__group_1gae49bae7d7d68329b1c050f39c902d08e)`(void * pointer)` {#group__usb__device__udd__group_1gae49bae7d7d68329b1c050f39c902d08e}
Control Endpoint Process when underflow condition has occurred.
#### Parameters
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public static void `[`udd_ctrl_overflow`](#group__usb__device__udd__group_1ga58ec0c5b490824774f753cc9ff6c1250)`(void * pointer)` {#group__usb__device__udd__group_1ga58ec0c5b490824774f753cc9ff6c1250}
Control Endpoint Process when overflow condition has occurred.
#### Parameters
* `pointer` Pointer to the endpoint transfer status parameter struct from driver layer.
#### `public static void `[`_usb_ep0_on_tansfer_fail`](#group__usb__device__udd__group_1ga67ec9c51a13358e3e241b2d10b3b4a05)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1ga67ec9c51a13358e3e241b2d10b3b4a05}
#### `public static void `[`_usb_ep0_on_tansfer_ok`](#group__usb__device__udd__group_1gabe51608c4f3fb3cb905463758645127c)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1gabe51608c4f3fb3cb905463758645127c}
#### `public static void `[`udd_ctrl_ep_enable`](#group__usb__device__udd__group_1ga16a526f9870d3b670345b98bcfbe166c)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst)` {#group__usb__device__udd__group_1ga16a526f9870d3b670345b98bcfbe166c}
Enable Control Endpoint.
#### Parameters
* `module_inst` Pointer to USB module instance
#### `public static void `[`_usb_on_suspend`](#group__usb__device__udd__group_1gaf4c2f4bf0f76bcf873d165f1e960c8e1)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1gaf4c2f4bf0f76bcf873d165f1e960c8e1}
#### `public static void `[`_usb_on_sof_notify`](#group__usb__device__udd__group_1gae65a2792570d8aec7e758b3526721086)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1gae65a2792570d8aec7e758b3526721086}
#### `public static void `[`_usb_on_bus_reset`](#group__usb__device__udd__group_1gaf286144a1b50b68ed2edd38d67e1f4b0)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1gaf286144a1b50b68ed2edd38d67e1f4b0}
#### `public static void `[`_usb_on_wakeup`](#group__usb__device__udd__group_1ga563d04cd60d478a430261aaa9da5e07a)`(struct `[`usb_module`](.build/docs/internals_undefined.md#structusb__module)` * module_inst,void * pointer)` {#group__usb__device__udd__group_1ga563d04cd60d478a430261aaa9da5e07a}
#### `public void `[`udd_detach`](#group__usb__device__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e)`(void)` {#group__usb__device__udd__group_1ga03e59eaa264f1dbe5a52559311d0520e}
Detaches the device from the bus.
The driver must remove pull-up on USB line D- or D+.
#### `public void `[`udd_attach`](#group__usb__device__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f)`(void)` {#group__usb__device__udd__group_1ga7a7c0d9236c922c2af33c6702565a99f}
Attach device to the bus when possible.
If a VBus control is included in driver, then it will attach device when an acceptable Vbus level from the host is detected.
#### `public void `[`udd_enable`](#group__usb__device__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42)`(void)` {#group__usb__device__udd__group_1ga9792d1899ae058e3984d6a622fe2ad42}
Enables the USB Device mode.
#### `public void `[`udd_disable`](#group__usb__device__udd__group_1gab283432057b934e9d73ac9282d9b0f11)`(void)` {#group__usb__device__udd__group_1gab283432057b934e9d73ac9282d9b0f11}
Disables the USB Device mode.

+ 0
- 9
internals_usb_group.md View File

@ -1,9 +0,0 @@
# group `usb_group` {#group__usb__group}
This stack includes the USB Device Stack, USB Host Stack and common definitions.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------

+ 0
- 58
internals_usb_hid_protocol.md View File

@ -1,58 +0,0 @@
# group `usb_hid_protocol` {#group__usb__hid__protocol}
USB Human Interface Device (HID) protocol definitions.
protocol definitions
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`struct `[`usb_hid_descriptor_t`](#structusb__hid__descriptor__t) | HID Descriptor.
# struct `usb_hid_descriptor_t` {#structusb__hid__descriptor__t}
HID Descriptor.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__hid__descriptor__t_1a1deca1f1d6e5815b290e6e1015bce5b8) | Size of this descriptor in bytes.
`public uint8_t `[`bDescriptorType`](#structusb__hid__descriptor__t_1a67d7027b9eb9ed268d28e84fbc675707) | HID descriptor type.
`public le16_t `[`bcdHID`](#structusb__hid__descriptor__t_1ab86c23448d45c6d68efec9f9af5d10de) | Binary Coded Decimal Spec. release.
`public uint8_t `[`bCountryCode`](#structusb__hid__descriptor__t_1a969a604033b72573d59a740badf6920e) | Hardware target country.
`public uint8_t `[`bNumDescriptors`](#structusb__hid__descriptor__t_1a86ff434026085d9c0c751185eb3700c5) | Number of HID class descriptors to follow.
`public uint8_t `[`bRDescriptorType`](#structusb__hid__descriptor__t_1a6da89ed91bee6e0a4f2c8cf3b40a7ede) | Report descriptor type.
`public le16_t `[`wDescriptorLength`](#structusb__hid__descriptor__t_1ab3d5c878a0abf618eecc7f860e9aeb62) | Total length of Report descriptor.
## Members
#### `public uint8_t `[`bLength`](#structusb__hid__descriptor__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__hid__descriptor__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
Size of this descriptor in bytes.
#### `public uint8_t `[`bDescriptorType`](#structusb__hid__descriptor__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__hid__descriptor__t_1a67d7027b9eb9ed268d28e84fbc675707}
HID descriptor type.
#### `public le16_t `[`bcdHID`](#structusb__hid__descriptor__t_1ab86c23448d45c6d68efec9f9af5d10de) {#structusb__hid__descriptor__t_1ab86c23448d45c6d68efec9f9af5d10de}
Binary Coded Decimal Spec. release.
#### `public uint8_t `[`bCountryCode`](#structusb__hid__descriptor__t_1a969a604033b72573d59a740badf6920e) {#structusb__hid__descriptor__t_1a969a604033b72573d59a740badf6920e}
Hardware target country.
#### `public uint8_t `[`bNumDescriptors`](#structusb__hid__descriptor__t_1a86ff434026085d9c0c751185eb3700c5) {#structusb__hid__descriptor__t_1a86ff434026085d9c0c751185eb3700c5}
Number of HID class descriptors to follow.
#### `public uint8_t `[`bRDescriptorType`](#structusb__hid__descriptor__t_1a6da89ed91bee6e0a4f2c8cf3b40a7ede) {#structusb__hid__descriptor__t_1a6da89ed91bee6e0a4f2c8cf3b40a7ede}
Report descriptor type.
#### `public le16_t `[`wDescriptorLength`](#structusb__hid__descriptor__t_1ab3d5c878a0abf618eecc7f860e9aeb62) {#structusb__hid__descriptor__t_1ab3d5c878a0abf618eecc7f860e9aeb62}
Total length of Report descriptor.

+ 0
- 806
internals_usb_protocol_group.md View File

@ -1,806 +0,0 @@
# group `usb_protocol_group` {#group__usb__protocol__group}
This module defines constants and data structures provided by the USB 2.0 specification.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`define `[`USB_V2_0`](#group__usb__protocol__group_1ga9bccec980a4f41a481b389b4f0c9c690) | Value for field bcdUSB.
`define `[`USB_V2_1`](#group__usb__protocol__group_1ga98059f51cd65930412083d423a70dd17) | USB Specification version 2.01.
`define `[`USB_REQ_DIR_OUT`](#group__usb__protocol__group_1ga3fae7189eea003bf79ac2949b0f50584) | USB request data transfer direction (bmRequestType)
`define `[`USB_REQ_DIR_IN`](#group__usb__protocol__group_1ga3d3c24265f68a720887ae4ff7158d605) | Device to host.
`define `[`USB_REQ_DIR_MASK`](#group__usb__protocol__group_1gac94f5ec9106e17f2e6d927eeac3d530f) | Mask.
`define `[`USB_REQ_TYPE_STANDARD`](#group__usb__protocol__group_1ga3eb781776ab6dcbc6fa96e1b0ed18011) | USB request types (bmRequestType)
`define `[`USB_REQ_TYPE_CLASS`](#group__usb__protocol__group_1gaff9ee0044c6cb131b2908356adc37dff) | Class-specific request.
`define `[`USB_REQ_TYPE_VENDOR`](#group__usb__protocol__group_1ga71855621792f72443ed5497b313a2517) | Vendor-specific request.
`define `[`USB_REQ_TYPE_MASK`](#group__usb__protocol__group_1ga8be8332e2da1e54c74c5f2a2230b0a28) | Mask.
`define `[`USB_REQ_RECIP_DEVICE`](#group__usb__protocol__group_1ga65c1569b970837dd4a2ad8e1b4097589) | USB recipient codes (bmRequestType)
`define `[`USB_REQ_RECIP_INTERFACE`](#group__usb__protocol__group_1gad3d0e7d70c610967cc2ee12c5298ac69) | Recipient interface.
`define `[`USB_REQ_RECIP_ENDPOINT`](#group__usb__protocol__group_1ga1be00350ff83d022d41b4eae81f1e2b2) | Recipient endpoint.
`define `[`USB_REQ_RECIP_OTHER`](#group__usb__protocol__group_1gabb5706061604f770d2ce1f3891ab0296) | Recipient other.
`define `[`USB_REQ_RECIP_MASK`](#group__usb__protocol__group_1gab1738c19d49fe1d4c7edccff90e9e9e4) | Mask.
`define `[`HIRD_50_US`](#group__usb__protocol__group_1ga63ce14c89bdb5349988cb983b7176740) |
`define `[`HIRD_125_US`](#group__usb__protocol__group_1ga8fa50bfccd00843cd32719521720f7f6) |
`define `[`HIRD_200_US`](#group__usb__protocol__group_1gad6f9ff2585cbc2b0ca161ee12a11b154) |
`define `[`HIRD_275_US`](#group__usb__protocol__group_1ga51c55e5d7938a80a53084b5a2a93b9b3) |
`define `[`HIRD_350_US`](#group__usb__protocol__group_1ga28a9220cf691f45fa880638ad92ed95a) |
`define `[`HIRD_425_US`](#group__usb__protocol__group_1gab0f175ff5b6a35c08d4730f3b82e3290) |
`define `[`HIRD_500_US`](#group__usb__protocol__group_1gaf75c36a22358dbe9d27fa2122d39ac32) |
`define `[`HIRD_575_US`](#group__usb__protocol__group_1ga27244f075c4ae2c34bcdeecca8921e9d) |
`define `[`HIRD_650_US`](#group__usb__protocol__group_1ga33e1236c9694d97c574677ed36da8ce4) |
`define `[`HIRD_725_US`](#group__usb__protocol__group_1gab1cfbd6207cc526b33a65593379f1802) |
`define `[`HIRD_800_US`](#group__usb__protocol__group_1gaec9c3475ae7a1a2deefdb7f844ab25b4) |
`define `[`HIRD_875_US`](#group__usb__protocol__group_1ga39eaf9efa2c721560ae7e6d4463ed353) |
`define `[`HIRD_950_US`](#group__usb__protocol__group_1ga6a950e4e5666cd014db36bd4971ac888) |
`define `[`HIRD_1025_US`](#group__usb__protocol__group_1ga07cfb9848da18f98190ff86ca5349b53) |
`define `[`HIRD_1100_US`](#group__usb__protocol__group_1ga52b2c19a0df1c72ed04a97ccb3b9152e) |
`define `[`HIRD_1175_US`](#group__usb__protocol__group_1ga29284c56fb4827b69c00332b7a4fdb76) |
`define `[`USB_LPM_ATTRIBUT_BLINKSTATE_MASK`](#group__usb__protocol__group_1gaf39d50c3bb01f68fa434e7fdf3a44e22) | Fields definition from a LPM TOKEN
`define `[`USB_LPM_ATTRIBUT_FIRD_MASK`](#group__usb__protocol__group_1gaf53a7676592b02f9bb846e1062af463c) |
`define `[`USB_LPM_ATTRIBUT_REMOTEWAKE_MASK`](#group__usb__protocol__group_1ga9c1618c348394534d968097c8d76c092) |
`define `[`USB_LPM_ATTRIBUT_BLINKSTATE`](#group__usb__protocol__group_1ga1deb3dda1fc39b7425359c72eb548b0d) |
`define `[`USB_LPM_ATTRIBUT_FIRD`](#group__usb__protocol__group_1ga0eb84fe948d5e4650a39d6081b959c70) |
`define `[`USB_LPM_ATTRIBUT_REMOTEWAKE`](#group__usb__protocol__group_1ga7482138e5ce2d2ec9482bcd5dbd9bd64) |
`define `[`USB_LPM_ATTRIBUT_BLINKSTATE_L1`](#group__usb__protocol__group_1ga02be6765d15e86d37fd66ce6862a16fc) |
`define `[`USB_EP_ADDR_MASK`](#group__usb__protocol__group_1ga0316d8f43a1648b76df257332b26aeb9) | Mask selecting the index part of an endpoint address.
`define `[`USB_EP_DIR_IN`](#group__usb__protocol__group_1gaae8411e95f26738326bc25a0161dde99) | Endpoint transfer direction is IN.
`define `[`USB_EP_DIR_OUT`](#group__usb__protocol__group_1ga0510b0a04d9cef144e4d9793310abccf) | Endpoint transfer direction is OUT.
`define `[`USB_MAX_DESC_LEN`](#group__usb__protocol__group_1ga27dacd4e0b04d4ef7b8aadf6ea886f3c) | Maximum length in bytes of a USB descriptor.
`define `[`USB_CONFIG_ATTR_MUST_SET`](#group__usb__protocol__group_1gac7063e965def0eaeb4d45a6f9048dc53) | Must always be set.
`define `[`USB_CONFIG_ATTR_BUS_POWERED`](#group__usb__protocol__group_1ga10945c8d92454009444979c38b9d2cca) | Bus-powered.
`define `[`USB_CONFIG_ATTR_SELF_POWERED`](#group__usb__protocol__group_1gaf1b445db8c331630bbedb383544ed80b) | Self-powered.
`define `[`USB_CONFIG_ATTR_REMOTE_WAKEUP`](#group__usb__protocol__group_1gab8f513d1888f75d8e18960e1b1f3f747) | remote wakeup supported
`define `[`USB_CONFIG_MAX_POWER`](#group__usb__protocol__group_1ga55d9db758a4f408eebf4b26c6001ac9b) | Max power in mA.
`enum `[`usb_reqid`](#group__usb__protocol__group_1gab43332ff8dbad3dd3c8c882b1bd68a89) | Standard USB requests (bRequest)
`enum `[`usb_device_status`](#group__usb__protocol__group_1ga5c6f61a70ef0fda1a1d6f9a34f2f0f1c) | Standard USB device status flags.
`enum `[`usb_interface_status`](#group__usb__protocol__group_1ga61c6d9f1bcc6112f394333fac658d627) | Standard USB Interface status flags.
`enum `[`usb_endpoint_status`](#group__usb__protocol__group_1gaf926ff975fcda57f214001b51f15092d) | Standard USB endpoint status flags.
`enum `[`usb_device_feature`](#group__usb__protocol__group_1gab9975b89ad7079085d0300eab037c3ac) | Standard USB device feature flags.
`enum `[`usb_device_hs_test_mode`](#group__usb__protocol__group_1ga9027bb283d3666e351fe5c403292cf2e) | Test Mode possible on HS USB device.
`enum `[`usb_endpoint_feature`](#group__usb__protocol__group_1gac46bc23132eb03cefa56ba47024ced5d) | Standard USB endpoint feature/status flags.
`enum `[`usb_test_mode_selector`](#group__usb__protocol__group_1gade3fc5b71e88ed167a8c8d67ee087db3) | Standard USB Test Mode Selectors.
`enum `[`usb_descriptor_type`](#group__usb__protocol__group_1ga87d46dd117d939964c939f1518dec93f) | Standard USB descriptor types.
`enum `[`usb_capability_type`](#group__usb__protocol__group_1gab4eef94a7d2be2570193c4f9400a6fa6) | USB Device Capability types.
`enum `[`usb_capability_extension_attr`](#group__usb__protocol__group_1ga4fa8bfac1cf05037ee2ef05aaa190299) | USB Device Capability - USB 2.0 Extension To fill bmAttributes field of usb_capa_ext_desc_t structure.
`enum `[`usb_ep_type`](#group__usb__protocol__group_1ga666def795a15032e5bf93a450f79113f) | Standard USB endpoint transfer types.
`enum `[`usb_langid`](#group__usb__protocol__group_1ga1f92deaf695c06566999f0c5343978c1) | Standard USB language IDs for string descriptors.
`struct `[`usb_setup_req_t`](#structusb__setup__req__t) | A USB Device SETUP request.
`struct `[`usb_dev_desc_t`](#structusb__dev__desc__t) | Standard USB device descriptor structure.
`struct `[`usb_dev_qual_desc_t`](#structusb__dev__qual__desc__t) | Standard USB device qualifier descriptor structure.
`struct `[`usb_dev_bos_desc_t`](#structusb__dev__bos__desc__t) | USB Device BOS descriptor structure.
`struct `[`usb_dev_capa_ext_desc_t`](#structusb__dev__capa__ext__desc__t) | USB Device Capabilities - USB 2.0 Extension Descriptor structure.
`struct `[`usb_dev_lpm_desc_t`](#structusb__dev__lpm__desc__t) | USB Device LPM Descriptor structure.
`struct `[`usb_association_desc_t`](#structusb__association__desc__t) | Standard USB Interface Association Descriptor structure.
`struct `[`usb_conf_desc_t`](#structusb__conf__desc__t) | Standard USB configuration descriptor structure.
`struct `[`usb_iad_desc_t`](#structusb__iad__desc__t) | Standard USB association descriptor structure.
`struct `[`usb_iface_desc_t`](#structusb__iface__desc__t) | Standard USB interface descriptor structure.
`struct `[`usb_ep_desc_t`](#structusb__ep__desc__t) | Standard USB endpoint descriptor structure.
`struct `[`usb_str_desc_t`](#structusb__str__desc__t) | A standard USB string descriptor structure.
`struct `[`usb_str_lgid_desc_t`](#structusb__str__lgid__desc__t) |
## Members
#### `define `[`USB_V2_0`](#group__usb__protocol__group_1ga9bccec980a4f41a481b389b4f0c9c690) {#group__usb__protocol__group_1ga9bccec980a4f41a481b389b4f0c9c690}
Value for field bcdUSB.
USB Specification version 2.00
#### `define `[`USB_V2_1`](#group__usb__protocol__group_1ga98059f51cd65930412083d423a70dd17) {#group__usb__protocol__group_1ga98059f51cd65930412083d423a70dd17}
USB Specification version 2.01.
#### `define `[`USB_REQ_DIR_OUT`](#group__usb__protocol__group_1ga3fae7189eea003bf79ac2949b0f50584) {#group__usb__protocol__group_1ga3fae7189eea003bf79ac2949b0f50584}
USB request data transfer direction (bmRequestType)
Host to device
#### `define `[`USB_REQ_DIR_IN`](#group__usb__protocol__group_1ga3d3c24265f68a720887ae4ff7158d605) {#group__usb__protocol__group_1ga3d3c24265f68a720887ae4ff7158d605}
Device to host.
#### `define `[`USB_REQ_DIR_MASK`](#group__usb__protocol__group_1gac94f5ec9106e17f2e6d927eeac3d530f) {#group__usb__protocol__group_1gac94f5ec9106e17f2e6d927eeac3d530f}
Mask.
#### `define `[`USB_REQ_TYPE_STANDARD`](#group__usb__protocol__group_1ga3eb781776ab6dcbc6fa96e1b0ed18011) {#group__usb__protocol__group_1ga3eb781776ab6dcbc6fa96e1b0ed18011}
USB request types (bmRequestType)
Standard request
#### `define `[`USB_REQ_TYPE_CLASS`](#group__usb__protocol__group_1gaff9ee0044c6cb131b2908356adc37dff) {#group__usb__protocol__group_1gaff9ee0044c6cb131b2908356adc37dff}
Class-specific request.
#### `define `[`USB_REQ_TYPE_VENDOR`](#group__usb__protocol__group_1ga71855621792f72443ed5497b313a2517) {#group__usb__protocol__group_1ga71855621792f72443ed5497b313a2517}
Vendor-specific request.
#### `define `[`USB_REQ_TYPE_MASK`](#group__usb__protocol__group_1ga8be8332e2da1e54c74c5f2a2230b0a28) {#group__usb__protocol__group_1ga8be8332e2da1e54c74c5f2a2230b0a28}
Mask.
#### `define `[`USB_REQ_RECIP_DEVICE`](#group__usb__protocol__group_1ga65c1569b970837dd4a2ad8e1b4097589) {#group__usb__protocol__group_1ga65c1569b970837dd4a2ad8e1b4097589}
USB recipient codes (bmRequestType)
Recipient device
#### `define `[`USB_REQ_RECIP_INTERFACE`](#group__usb__protocol__group_1gad3d0e7d70c610967cc2ee12c5298ac69) {#group__usb__protocol__group_1gad3d0e7d70c610967cc2ee12c5298ac69}
Recipient interface.
#### `define `[`USB_REQ_RECIP_ENDPOINT`](#group__usb__protocol__group_1ga1be00350ff83d022d41b4eae81f1e2b2) {#group__usb__protocol__group_1ga1be00350ff83d022d41b4eae81f1e2b2}
Recipient endpoint.
#### `define `[`USB_REQ_RECIP_OTHER`](#group__usb__protocol__group_1gabb5706061604f770d2ce1f3891ab0296) {#group__usb__protocol__group_1gabb5706061604f770d2ce1f3891ab0296}
Recipient other.
#### `define `[`USB_REQ_RECIP_MASK`](#group__usb__protocol__group_1gab1738c19d49fe1d4c7edccff90e9e9e4) {#group__usb__protocol__group_1gab1738c19d49fe1d4c7edccff90e9e9e4}
Mask.
#### `define `[`HIRD_50_US`](#group__usb__protocol__group_1ga63ce14c89bdb5349988cb983b7176740) {#group__usb__protocol__group_1ga63ce14c89bdb5349988cb983b7176740}
#### `define `[`HIRD_125_US`](#group__usb__protocol__group_1ga8fa50bfccd00843cd32719521720f7f6) {#group__usb__protocol__group_1ga8fa50bfccd00843cd32719521720f7f6}
#### `define `[`HIRD_200_US`](#group__usb__protocol__group_1gad6f9ff2585cbc2b0ca161ee12a11b154) {#group__usb__protocol__group_1gad6f9ff2585cbc2b0ca161ee12a11b154}
#### `define `[`HIRD_275_US`](#group__usb__protocol__group_1ga51c55e5d7938a80a53084b5a2a93b9b3) {#group__usb__protocol__group_1ga51c55e5d7938a80a53084b5a2a93b9b3}
#### `define `[`HIRD_350_US`](#group__usb__protocol__group_1ga28a9220cf691f45fa880638ad92ed95a) {#group__usb__protocol__group_1ga28a9220cf691f45fa880638ad92ed95a}
#### `define `[`HIRD_425_US`](#group__usb__protocol__group_1gab0f175ff5b6a35c08d4730f3b82e3290) {#group__usb__protocol__group_1gab0f175ff5b6a35c08d4730f3b82e3290}
#### `define `[`HIRD_500_US`](#group__usb__protocol__group_1gaf75c36a22358dbe9d27fa2122d39ac32) {#group__usb__protocol__group_1gaf75c36a22358dbe9d27fa2122d39ac32}
#### `define `[`HIRD_575_US`](#group__usb__protocol__group_1ga27244f075c4ae2c34bcdeecca8921e9d) {#group__usb__protocol__group_1ga27244f075c4ae2c34bcdeecca8921e9d}
#### `define `[`HIRD_650_US`](#group__usb__protocol__group_1ga33e1236c9694d97c574677ed36da8ce4) {#group__usb__protocol__group_1ga33e1236c9694d97c574677ed36da8ce4}
#### `define `[`HIRD_725_US`](#group__usb__protocol__group_1gab1cfbd6207cc526b33a65593379f1802) {#group__usb__protocol__group_1gab1cfbd6207cc526b33a65593379f1802}
#### `define `[`HIRD_800_US`](#group__usb__protocol__group_1gaec9c3475ae7a1a2deefdb7f844ab25b4) {#group__usb__protocol__group_1gaec9c3475ae7a1a2deefdb7f844ab25b4}
#### `define `[`HIRD_875_US`](#group__usb__protocol__group_1ga39eaf9efa2c721560ae7e6d4463ed353) {#group__usb__protocol__group_1ga39eaf9efa2c721560ae7e6d4463ed353}
#### `define `[`HIRD_950_US`](#group__usb__protocol__group_1ga6a950e4e5666cd014db36bd4971ac888) {#group__usb__protocol__group_1ga6a950e4e5666cd014db36bd4971ac888}
#### `define `[`HIRD_1025_US`](#group__usb__protocol__group_1ga07cfb9848da18f98190ff86ca5349b53) {#group__usb__protocol__group_1ga07cfb9848da18f98190ff86ca5349b53}
#### `define `[`HIRD_1100_US`](#group__usb__protocol__group_1ga52b2c19a0df1c72ed04a97ccb3b9152e) {#group__usb__protocol__group_1ga52b2c19a0df1c72ed04a97ccb3b9152e}
#### `define `[`HIRD_1175_US`](#group__usb__protocol__group_1ga29284c56fb4827b69c00332b7a4fdb76) {#group__usb__protocol__group_1ga29284c56fb4827b69c00332b7a4fdb76}
#### `define `[`USB_LPM_ATTRIBUT_BLINKSTATE_MASK`](#group__usb__protocol__group_1gaf39d50c3bb01f68fa434e7fdf3a44e22) {#group__usb__protocol__group_1gaf39d50c3bb01f68fa434e7fdf3a44e22}
Fields definition from a LPM TOKEN
#### `define `[`USB_LPM_ATTRIBUT_FIRD_MASK`](#group__usb__protocol__group_1gaf53a7676592b02f9bb846e1062af463c) {#group__usb__protocol__group_1gaf53a7676592b02f9bb846e1062af463c}
#### `define `[`USB_LPM_ATTRIBUT_REMOTEWAKE_MASK`](#group__usb__protocol__group_1ga9c1618c348394534d968097c8d76c092) {#group__usb__protocol__group_1ga9c1618c348394534d968097c8d76c092}
#### `define `[`USB_LPM_ATTRIBUT_BLINKSTATE`](#group__usb__protocol__group_1ga1deb3dda1fc39b7425359c72eb548b0d) {#group__usb__protocol__group_1ga1deb3dda1fc39b7425359c72eb548b0d}
#### `define `[`USB_LPM_ATTRIBUT_FIRD`](#group__usb__protocol__group_1ga0eb84fe948d5e4650a39d6081b959c70) {#group__usb__protocol__group_1ga0eb84fe948d5e4650a39d6081b959c70}
#### `define `[`USB_LPM_ATTRIBUT_REMOTEWAKE`](#group__usb__protocol__group_1ga7482138e5ce2d2ec9482bcd5dbd9bd64) {#group__usb__protocol__group_1ga7482138e5ce2d2ec9482bcd5dbd9bd64}
#### `define `[`USB_LPM_ATTRIBUT_BLINKSTATE_L1`](#group__usb__protocol__group_1ga02be6765d15e86d37fd66ce6862a16fc) {#group__usb__protocol__group_1ga02be6765d15e86d37fd66ce6862a16fc}
#### `define `[`USB_EP_ADDR_MASK`](#group__usb__protocol__group_1ga0316d8f43a1648b76df257332b26aeb9) {#group__usb__protocol__group_1ga0316d8f43a1648b76df257332b26aeb9}
Mask selecting the index part of an endpoint address.
#### `define `[`USB_EP_DIR_IN`](#group__usb__protocol__group_1gaae8411e95f26738326bc25a0161dde99) {#group__usb__protocol__group_1gaae8411e95f26738326bc25a0161dde99}
Endpoint transfer direction is IN.
#### `define `[`USB_EP_DIR_OUT`](#group__usb__protocol__group_1ga0510b0a04d9cef144e4d9793310abccf) {#group__usb__protocol__group_1ga0510b0a04d9cef144e4d9793310abccf}
Endpoint transfer direction is OUT.
#### `define `[`USB_MAX_DESC_LEN`](#group__usb__protocol__group_1ga27dacd4e0b04d4ef7b8aadf6ea886f3c) {#group__usb__protocol__group_1ga27dacd4e0b04d4ef7b8aadf6ea886f3c}
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_CONFIG_ATTR_MUST_SET`](#group__usb__protocol__group_1gac7063e965def0eaeb4d45a6f9048dc53) {#group__usb__protocol__group_1gac7063e965def0eaeb4d45a6f9048dc53}
Must always be set.
#### `define `[`USB_CONFIG_ATTR_BUS_POWERED`](#group__usb__protocol__group_1ga10945c8d92454009444979c38b9d2cca) {#group__usb__protocol__group_1ga10945c8d92454009444979c38b9d2cca}
Bus-powered.
#### `define `[`USB_CONFIG_ATTR_SELF_POWERED`](#group__usb__protocol__group_1gaf1b445db8c331630bbedb383544ed80b) {#group__usb__protocol__group_1gaf1b445db8c331630bbedb383544ed80b}
Self-powered.
#### `define `[`USB_CONFIG_ATTR_REMOTE_WAKEUP`](#group__usb__protocol__group_1gab8f513d1888f75d8e18960e1b1f3f747) {#group__usb__protocol__group_1gab8f513d1888f75d8e18960e1b1f3f747}
remote wakeup supported
#### `define `[`USB_CONFIG_MAX_POWER`](#group__usb__protocol__group_1ga55d9db758a4f408eebf4b26c6001ac9b) {#group__usb__protocol__group_1ga55d9db758a4f408eebf4b26c6001ac9b}
Max power in mA.
#### `enum `[`usb_reqid`](#group__usb__protocol__group_1gab43332ff8dbad3dd3c8c882b1bd68a89) {#group__usb__protocol__group_1gab43332ff8dbad3dd3c8c882b1bd68a89}
Values | Descriptions
--------------------------------|---------------------------------------------
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 requests (bRequest)
#### `enum `[`usb_device_status`](#group__usb__protocol__group_1ga5c6f61a70ef0fda1a1d6f9a34f2f0f1c) {#group__usb__protocol__group_1ga5c6f61a70ef0fda1a1d6f9a34f2f0f1c}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_DEV_STATUS_BUS_POWERED |
USB_DEV_STATUS_SELF_POWERED |
USB_DEV_STATUS_REMOTEWAKEUP |
Standard USB device status flags.
#### `enum `[`usb_interface_status`](#group__usb__protocol__group_1ga61c6d9f1bcc6112f394333fac658d627) {#group__usb__protocol__group_1ga61c6d9f1bcc6112f394333fac658d627}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_IFACE_STATUS_RESERVED |
Standard USB Interface status flags.
#### `enum `[`usb_endpoint_status`](#group__usb__protocol__group_1gaf926ff975fcda57f214001b51f15092d) {#group__usb__protocol__group_1gaf926ff975fcda57f214001b51f15092d}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_EP_STATUS_HALTED |
Standard USB endpoint status flags.
#### `enum `[`usb_device_feature`](#group__usb__protocol__group_1gab9975b89ad7079085d0300eab037c3ac) {#group__usb__protocol__group_1gab9975b89ad7079085d0300eab037c3ac}
Values | Descriptions
--------------------------------|---------------------------------------------
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 |
Standard USB device feature flags.
valid for SetFeature request.
#### `enum `[`usb_device_hs_test_mode`](#group__usb__protocol__group_1ga9027bb283d3666e351fe5c403292cf2e) {#group__usb__protocol__group_1ga9027bb283d3666e351fe5c403292cf2e}
Values | Descriptions
--------------------------------|---------------------------------------------
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 |
Test Mode possible on HS USB device.
valid for USB_DEV_FEATURE_TEST_MODE request.
#### `enum `[`usb_endpoint_feature`](#group__usb__protocol__group_1gac46bc23132eb03cefa56ba47024ced5d) {#group__usb__protocol__group_1gac46bc23132eb03cefa56ba47024ced5d}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_EP_FEATURE_HALT |
Standard USB endpoint feature/status flags.
#### `enum `[`usb_test_mode_selector`](#group__usb__protocol__group_1gade3fc5b71e88ed167a8c8d67ee087db3) {#group__usb__protocol__group_1gade3fc5b71e88ed167a8c8d67ee087db3}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_TEST_J |
USB_TEST_K |
USB_TEST_SE0_NAK |
USB_TEST_PACKET |
USB_TEST_FORCE_ENABLE |
Standard USB Test Mode Selectors.
#### `enum `[`usb_descriptor_type`](#group__usb__protocol__group_1ga87d46dd117d939964c939f1518dec93f) {#group__usb__protocol__group_1ga87d46dd117d939964c939f1518dec93f}
Values | Descriptions
--------------------------------|---------------------------------------------
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 descriptor types.
#### `enum `[`usb_capability_type`](#group__usb__protocol__group_1gab4eef94a7d2be2570193c4f9400a6fa6) {#group__usb__protocol__group_1gab4eef94a7d2be2570193c4f9400a6fa6}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_DC_USB20_EXTENSION |
USB Device Capability types.
#### `enum `[`usb_capability_extension_attr`](#group__usb__protocol__group_1ga4fa8bfac1cf05037ee2ef05aaa190299) {#group__usb__protocol__group_1ga4fa8bfac1cf05037ee2ef05aaa190299}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_DC_EXT_LPM |
USB Device Capability - USB 2.0 Extension To fill bmAttributes field of usb_capa_ext_desc_t structure.
#### `enum `[`usb_ep_type`](#group__usb__protocol__group_1ga666def795a15032e5bf93a450f79113f) {#group__usb__protocol__group_1ga666def795a15032e5bf93a450f79113f}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_EP_TYPE_CONTROL |
USB_EP_TYPE_ISOCHRONOUS |
USB_EP_TYPE_BULK |
USB_EP_TYPE_INTERRUPT |
USB_EP_TYPE_MASK |
Standard USB endpoint transfer types.
#### `enum `[`usb_langid`](#group__usb__protocol__group_1ga1f92deaf695c06566999f0c5343978c1) {#group__usb__protocol__group_1ga1f92deaf695c06566999f0c5343978c1}
Values | Descriptions
--------------------------------|---------------------------------------------
USB_LANGID_EN_US | English (United States)
Standard USB language IDs for string descriptors.
# struct `usb_setup_req_t` {#structusb__setup__req__t}
A USB Device SETUP request.
The data payload of SETUP packets always follows this structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bmRequestType`](#structusb__setup__req__t_1abea120ea756eb0abdb8aafb8713f61f4) |
`public uint8_t `[`bRequest`](#structusb__setup__req__t_1a1e7be110861bd4ff75c86d5214f31543) |
`public le16_t `[`wValue`](#structusb__setup__req__t_1a3f4a2e5f861f69f5ff919187c77997df) |
`public le16_t `[`wIndex`](#structusb__setup__req__t_1ab714cf061bdd655bcf61fdd06e79582f) |
`public le16_t `[`wLength`](#structusb__setup__req__t_1aa89ae35360f472f2cf0ea6374dde429e) |
## Members
#### `public uint8_t `[`bmRequestType`](#structusb__setup__req__t_1abea120ea756eb0abdb8aafb8713f61f4) {#structusb__setup__req__t_1abea120ea756eb0abdb8aafb8713f61f4}
#### `public uint8_t `[`bRequest`](#structusb__setup__req__t_1a1e7be110861bd4ff75c86d5214f31543) {#structusb__setup__req__t_1a1e7be110861bd4ff75c86d5214f31543}
#### `public le16_t `[`wValue`](#structusb__setup__req__t_1a3f4a2e5f861f69f5ff919187c77997df) {#structusb__setup__req__t_1a3f4a2e5f861f69f5ff919187c77997df}
#### `public le16_t `[`wIndex`](#structusb__setup__req__t_1ab714cf061bdd655bcf61fdd06e79582f) {#structusb__setup__req__t_1ab714cf061bdd655bcf61fdd06e79582f}
#### `public le16_t `[`wLength`](#structusb__setup__req__t_1aa89ae35360f472f2cf0ea6374dde429e) {#structusb__setup__req__t_1aa89ae35360f472f2cf0ea6374dde429e}
# struct `usb_dev_desc_t` {#structusb__dev__desc__t}
Standard USB device descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__dev__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__dev__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public le16_t `[`bcdUSB`](#structusb__dev__desc__t_1a56cc8699d8752ad2ed929093577b524d) |
`public uint8_t `[`bDeviceClass`](#structusb__dev__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4) |
`public uint8_t `[`bDeviceSubClass`](#structusb__dev__desc__t_1a260eec0b4e7279e6ecae808ca34c2604) |
`public uint8_t `[`bDeviceProtocol`](#structusb__dev__desc__t_1a44e204b5f7158f4048edcb944351ce27) |
`public uint8_t `[`bMaxPacketSize0`](#structusb__dev__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2) |
`public le16_t `[`idVendor`](#structusb__dev__desc__t_1a936f0362af0151f7370e3d18cdaa567c) |
`public le16_t `[`idProduct`](#structusb__dev__desc__t_1ae8d97f443c3dc80e3f1d37f3d45c6d57) |
`public le16_t `[`bcdDevice`](#structusb__dev__desc__t_1a55f0af10047f350be74d3e8c3884c035) |
`public uint8_t `[`iManufacturer`](#structusb__dev__desc__t_1a7ee6ae41b483f3c49d1ddb39a83a8a43) |
`public uint8_t `[`iProduct`](#structusb__dev__desc__t_1a77c33850b90ff7617243c40ce61d9168) |
`public uint8_t `[`iSerialNumber`](#structusb__dev__desc__t_1aeb129fc0d41494f69369da70d73eac11) |
`public uint8_t `[`bNumConfigurations`](#structusb__dev__desc__t_1abde4f60e84b2d9b10c27aa23bae62595) |
## Members
#### `public uint8_t `[`bLength`](#structusb__dev__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__dev__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__dev__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__dev__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public le16_t `[`bcdUSB`](#structusb__dev__desc__t_1a56cc8699d8752ad2ed929093577b524d) {#structusb__dev__desc__t_1a56cc8699d8752ad2ed929093577b524d}
#### `public uint8_t `[`bDeviceClass`](#structusb__dev__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4) {#structusb__dev__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4}
#### `public uint8_t `[`bDeviceSubClass`](#structusb__dev__desc__t_1a260eec0b4e7279e6ecae808ca34c2604) {#structusb__dev__desc__t_1a260eec0b4e7279e6ecae808ca34c2604}
#### `public uint8_t `[`bDeviceProtocol`](#structusb__dev__desc__t_1a44e204b5f7158f4048edcb944351ce27) {#structusb__dev__desc__t_1a44e204b5f7158f4048edcb944351ce27}
#### `public uint8_t `[`bMaxPacketSize0`](#structusb__dev__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2) {#structusb__dev__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2}
#### `public le16_t `[`idVendor`](#structusb__dev__desc__t_1a936f0362af0151f7370e3d18cdaa567c) {#structusb__dev__desc__t_1a936f0362af0151f7370e3d18cdaa567c}
#### `public le16_t `[`idProduct`](#structusb__dev__desc__t_1ae8d97f443c3dc80e3f1d37f3d45c6d57) {#structusb__dev__desc__t_1ae8d97f443c3dc80e3f1d37f3d45c6d57}
#### `public le16_t `[`bcdDevice`](#structusb__dev__desc__t_1a55f0af10047f350be74d3e8c3884c035) {#structusb__dev__desc__t_1a55f0af10047f350be74d3e8c3884c035}
#### `public uint8_t `[`iManufacturer`](#structusb__dev__desc__t_1a7ee6ae41b483f3c49d1ddb39a83a8a43) {#structusb__dev__desc__t_1a7ee6ae41b483f3c49d1ddb39a83a8a43}
#### `public uint8_t `[`iProduct`](#structusb__dev__desc__t_1a77c33850b90ff7617243c40ce61d9168) {#structusb__dev__desc__t_1a77c33850b90ff7617243c40ce61d9168}
#### `public uint8_t `[`iSerialNumber`](#structusb__dev__desc__t_1aeb129fc0d41494f69369da70d73eac11) {#structusb__dev__desc__t_1aeb129fc0d41494f69369da70d73eac11}
#### `public uint8_t `[`bNumConfigurations`](#structusb__dev__desc__t_1abde4f60e84b2d9b10c27aa23bae62595) {#structusb__dev__desc__t_1abde4f60e84b2d9b10c27aa23bae62595}
# struct `usb_dev_qual_desc_t` {#structusb__dev__qual__desc__t}
Standard USB device qualifier descriptor structure.
This descriptor contains information about the device when running at the "other" speed (i.e. if the device is currently operating at high speed, this descriptor can be used to determine what would change if the device was operating at full speed.)
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__dev__qual__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__dev__qual__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public le16_t `[`bcdUSB`](#structusb__dev__qual__desc__t_1a56cc8699d8752ad2ed929093577b524d) |
`public uint8_t `[`bDeviceClass`](#structusb__dev__qual__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4) |
`public uint8_t `[`bDeviceSubClass`](#structusb__dev__qual__desc__t_1a260eec0b4e7279e6ecae808ca34c2604) |
`public uint8_t `[`bDeviceProtocol`](#structusb__dev__qual__desc__t_1a44e204b5f7158f4048edcb944351ce27) |
`public uint8_t `[`bMaxPacketSize0`](#structusb__dev__qual__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2) |
`public uint8_t `[`bNumConfigurations`](#structusb__dev__qual__desc__t_1abde4f60e84b2d9b10c27aa23bae62595) |
`public uint8_t `[`bReserved`](#structusb__dev__qual__desc__t_1ab8303f57004812636de0daff446b975a) |
## Members
#### `public uint8_t `[`bLength`](#structusb__dev__qual__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__dev__qual__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__dev__qual__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__dev__qual__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public le16_t `[`bcdUSB`](#structusb__dev__qual__desc__t_1a56cc8699d8752ad2ed929093577b524d) {#structusb__dev__qual__desc__t_1a56cc8699d8752ad2ed929093577b524d}
#### `public uint8_t `[`bDeviceClass`](#structusb__dev__qual__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4) {#structusb__dev__qual__desc__t_1ab8e1b1fca77a607c39bba2278623d4f4}
#### `public uint8_t `[`bDeviceSubClass`](#structusb__dev__qual__desc__t_1a260eec0b4e7279e6ecae808ca34c2604) {#structusb__dev__qual__desc__t_1a260eec0b4e7279e6ecae808ca34c2604}
#### `public uint8_t `[`bDeviceProtocol`](#structusb__dev__qual__desc__t_1a44e204b5f7158f4048edcb944351ce27) {#structusb__dev__qual__desc__t_1a44e204b5f7158f4048edcb944351ce27}
#### `public uint8_t `[`bMaxPacketSize0`](#structusb__dev__qual__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2) {#structusb__dev__qual__desc__t_1a93b2c926b005917cdf2b5e7e4b3f80a2}
#### `public uint8_t `[`bNumConfigurations`](#structusb__dev__qual__desc__t_1abde4f60e84b2d9b10c27aa23bae62595) {#structusb__dev__qual__desc__t_1abde4f60e84b2d9b10c27aa23bae62595}
#### `public uint8_t `[`bReserved`](#structusb__dev__qual__desc__t_1ab8303f57004812636de0daff446b975a) {#structusb__dev__qual__desc__t_1ab8303f57004812636de0daff446b975a}
# struct `usb_dev_bos_desc_t` {#structusb__dev__bos__desc__t}
USB Device BOS descriptor structure.
The BOS descriptor (Binary device Object Store) defines a root descriptor that is similar to the configuration descriptor, and is the base descriptor for accessing a family of related descriptors. A host can read a BOS descriptor and learn from the wTotalLength field the entire size of the device-level descriptor set, or it can read in the entire BOS descriptor set of device capabilities. The host accesses this descriptor using the GetDescriptor() request. The descriptor type in the GetDescriptor() request is set to BOS.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__dev__bos__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__dev__bos__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public le16_t `[`wTotalLength`](#structusb__dev__bos__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7) |
`public uint8_t `[`bNumDeviceCaps`](#structusb__dev__bos__desc__t_1aca1d3672075c130816f54ef305a5aa50) |
## Members
#### `public uint8_t `[`bLength`](#structusb__dev__bos__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__dev__bos__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__dev__bos__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__dev__bos__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public le16_t `[`wTotalLength`](#structusb__dev__bos__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7) {#structusb__dev__bos__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7}
#### `public uint8_t `[`bNumDeviceCaps`](#structusb__dev__bos__desc__t_1aca1d3672075c130816f54ef305a5aa50) {#structusb__dev__bos__desc__t_1aca1d3672075c130816f54ef305a5aa50}
# struct `usb_dev_capa_ext_desc_t` {#structusb__dev__capa__ext__desc__t}
USB Device Capabilities - USB 2.0 Extension Descriptor structure.
Defines the set of USB 1.1-specific device level capabilities.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__dev__capa__ext__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__dev__capa__ext__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public uint8_t `[`bDevCapabilityType`](#structusb__dev__capa__ext__desc__t_1a1be7f18a35c3e636c095752fbb2149c0) |
`public le32_t `[`bmAttributes`](#structusb__dev__capa__ext__desc__t_1aecf9cc6699e2f1905e31e11484095def) |
## Members
#### `public uint8_t `[`bLength`](#structusb__dev__capa__ext__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__dev__capa__ext__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__dev__capa__ext__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__dev__capa__ext__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public uint8_t `[`bDevCapabilityType`](#structusb__dev__capa__ext__desc__t_1a1be7f18a35c3e636c095752fbb2149c0) {#structusb__dev__capa__ext__desc__t_1a1be7f18a35c3e636c095752fbb2149c0}
#### `public le32_t `[`bmAttributes`](#structusb__dev__capa__ext__desc__t_1aecf9cc6699e2f1905e31e11484095def) {#structusb__dev__capa__ext__desc__t_1aecf9cc6699e2f1905e31e11484095def}
# struct `usb_dev_lpm_desc_t` {#structusb__dev__lpm__desc__t}
USB Device LPM Descriptor structure.
The BOS descriptor and capabilities descriptors for LPM.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public `[`usb_dev_bos_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__dev__bos__desc__t)` `[`bos`](#structusb__dev__lpm__desc__t_1aa1445afe8acf8bc5d942305edeb6dfd1) |
`public `[`usb_dev_capa_ext_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__dev__capa__ext__desc__t)` `[`capa_ext`](#structusb__dev__lpm__desc__t_1a260a9ee22980a1306d3dcff998fd48c7) |
## Members
#### `public `[`usb_dev_bos_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__dev__bos__desc__t)` `[`bos`](#structusb__dev__lpm__desc__t_1aa1445afe8acf8bc5d942305edeb6dfd1) {#structusb__dev__lpm__desc__t_1aa1445afe8acf8bc5d942305edeb6dfd1}
#### `public `[`usb_dev_capa_ext_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__dev__capa__ext__desc__t)` `[`capa_ext`](#structusb__dev__lpm__desc__t_1a260a9ee22980a1306d3dcff998fd48c7) {#structusb__dev__lpm__desc__t_1a260a9ee22980a1306d3dcff998fd48c7}
# struct `usb_association_desc_t` {#structusb__association__desc__t}
Standard USB Interface Association Descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__association__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) | size of this descriptor in bytes
`public uint8_t `[`bDescriptorType`](#structusb__association__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) | INTERFACE descriptor type.
`public uint8_t `[`bFirstInterface`](#structusb__association__desc__t_1a85323ed61eb948bdea147d67e01ddc2d) | Number of interface.
`public uint8_t `[`bInterfaceCount`](#structusb__association__desc__t_1a9674bda677f9898106ec2b6fe5f5723d) | value to select alternate setting
`public uint8_t `[`bFunctionClass`](#structusb__association__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704) | Class code assigned by the USB.
`public uint8_t `[`bFunctionSubClass`](#structusb__association__desc__t_1ab25f749c091ce99b6868c949c4e45bc3) | Sub-class code assigned by the USB.
`public uint8_t `[`bFunctionProtocol`](#structusb__association__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c) | Protocol code assigned by the USB.
`public uint8_t `[`iFunction`](#structusb__association__desc__t_1ab84d4b3bced6c09c62350d56fd69d226) | Index of string descriptor.
## Members
#### `public uint8_t `[`bLength`](#structusb__association__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__association__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
size of this descriptor in bytes
#### `public uint8_t `[`bDescriptorType`](#structusb__association__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__association__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
INTERFACE descriptor type.
#### `public uint8_t `[`bFirstInterface`](#structusb__association__desc__t_1a85323ed61eb948bdea147d67e01ddc2d) {#structusb__association__desc__t_1a85323ed61eb948bdea147d67e01ddc2d}
Number of interface.
#### `public uint8_t `[`bInterfaceCount`](#structusb__association__desc__t_1a9674bda677f9898106ec2b6fe5f5723d) {#structusb__association__desc__t_1a9674bda677f9898106ec2b6fe5f5723d}
value to select alternate setting
#### `public uint8_t `[`bFunctionClass`](#structusb__association__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704) {#structusb__association__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704}
Class code assigned by the USB.
#### `public uint8_t `[`bFunctionSubClass`](#structusb__association__desc__t_1ab25f749c091ce99b6868c949c4e45bc3) {#structusb__association__desc__t_1ab25f749c091ce99b6868c949c4e45bc3}
Sub-class code assigned by the USB.
#### `public uint8_t `[`bFunctionProtocol`](#structusb__association__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c) {#structusb__association__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c}
Protocol code assigned by the USB.
#### `public uint8_t `[`iFunction`](#structusb__association__desc__t_1ab84d4b3bced6c09c62350d56fd69d226) {#structusb__association__desc__t_1ab84d4b3bced6c09c62350d56fd69d226}
Index of string descriptor.
# struct `usb_conf_desc_t` {#structusb__conf__desc__t}
Standard USB configuration descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__conf__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__conf__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public le16_t `[`wTotalLength`](#structusb__conf__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7) |
`public uint8_t `[`bNumInterfaces`](#structusb__conf__desc__t_1a1ad144333e75b0d867e72f8a337cd510) |
`public uint8_t `[`bConfigurationValue`](#structusb__conf__desc__t_1aecb9ae30bca0b044d2941120f21c2b29) |
`public uint8_t `[`iConfiguration`](#structusb__conf__desc__t_1a5ad4440b4eb1935d66b154d274f8a272) |
`public uint8_t `[`bmAttributes`](#structusb__conf__desc__t_1ae7c63b4cda39953db5710012a5d91c6f) |
`public uint8_t `[`bMaxPower`](#structusb__conf__desc__t_1ad3ac74420252d7a6a03e1e9d7b481f9b) |
## Members
#### `public uint8_t `[`bLength`](#structusb__conf__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__conf__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__conf__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__conf__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public le16_t `[`wTotalLength`](#structusb__conf__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7) {#structusb__conf__desc__t_1aef0f5fd0160660a30f12e0c82a73f3d7}
#### `public uint8_t `[`bNumInterfaces`](#structusb__conf__desc__t_1a1ad144333e75b0d867e72f8a337cd510) {#structusb__conf__desc__t_1a1ad144333e75b0d867e72f8a337cd510}
#### `public uint8_t `[`bConfigurationValue`](#structusb__conf__desc__t_1aecb9ae30bca0b044d2941120f21c2b29) {#structusb__conf__desc__t_1aecb9ae30bca0b044d2941120f21c2b29}
#### `public uint8_t `[`iConfiguration`](#structusb__conf__desc__t_1a5ad4440b4eb1935d66b154d274f8a272) {#structusb__conf__desc__t_1a5ad4440b4eb1935d66b154d274f8a272}
#### `public uint8_t `[`bmAttributes`](#structusb__conf__desc__t_1ae7c63b4cda39953db5710012a5d91c6f) {#structusb__conf__desc__t_1ae7c63b4cda39953db5710012a5d91c6f}
#### `public uint8_t `[`bMaxPower`](#structusb__conf__desc__t_1ad3ac74420252d7a6a03e1e9d7b481f9b) {#structusb__conf__desc__t_1ad3ac74420252d7a6a03e1e9d7b481f9b}
# struct `usb_iad_desc_t` {#structusb__iad__desc__t}
Standard USB association descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__iad__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) | Size of this descriptor in bytes.
`public uint8_t `[`bDescriptorType`](#structusb__iad__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) | Interface descriptor type.
`public uint8_t `[`bFirstInterface`](#structusb__iad__desc__t_1a85323ed61eb948bdea147d67e01ddc2d) | Number of interface.
`public uint8_t `[`bInterfaceCount`](#structusb__iad__desc__t_1a9674bda677f9898106ec2b6fe5f5723d) | value to select alternate setting
`public uint8_t `[`bFunctionClass`](#structusb__iad__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704) | Class code assigned by the USB.
`public uint8_t `[`bFunctionSubClass`](#structusb__iad__desc__t_1ab25f749c091ce99b6868c949c4e45bc3) | Sub-class code assigned by the USB.
`public uint8_t `[`bFunctionProtocol`](#structusb__iad__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c) | Protocol code assigned by the USB.
`public uint8_t `[`iFunction`](#structusb__iad__desc__t_1ab84d4b3bced6c09c62350d56fd69d226) | Index of string descriptor.
## Members
#### `public uint8_t `[`bLength`](#structusb__iad__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__iad__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
Size of this descriptor in bytes.
#### `public uint8_t `[`bDescriptorType`](#structusb__iad__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__iad__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
Interface descriptor type.
#### `public uint8_t `[`bFirstInterface`](#structusb__iad__desc__t_1a85323ed61eb948bdea147d67e01ddc2d) {#structusb__iad__desc__t_1a85323ed61eb948bdea147d67e01ddc2d}
Number of interface.
#### `public uint8_t `[`bInterfaceCount`](#structusb__iad__desc__t_1a9674bda677f9898106ec2b6fe5f5723d) {#structusb__iad__desc__t_1a9674bda677f9898106ec2b6fe5f5723d}
value to select alternate setting
#### `public uint8_t `[`bFunctionClass`](#structusb__iad__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704) {#structusb__iad__desc__t_1a1ed25bc3320ca90e4d3acb4410aea704}
Class code assigned by the USB.
#### `public uint8_t `[`bFunctionSubClass`](#structusb__iad__desc__t_1ab25f749c091ce99b6868c949c4e45bc3) {#structusb__iad__desc__t_1ab25f749c091ce99b6868c949c4e45bc3}
Sub-class code assigned by the USB.
#### `public uint8_t `[`bFunctionProtocol`](#structusb__iad__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c) {#structusb__iad__desc__t_1a2b3b905ab34e6e28b57c3ddc51b3487c}
Protocol code assigned by the USB.
#### `public uint8_t `[`iFunction`](#structusb__iad__desc__t_1ab84d4b3bced6c09c62350d56fd69d226) {#structusb__iad__desc__t_1ab84d4b3bced6c09c62350d56fd69d226}
Index of string descriptor.
# struct `usb_iface_desc_t` {#structusb__iface__desc__t}
Standard USB interface descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__iface__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__iface__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public uint8_t `[`bInterfaceNumber`](#structusb__iface__desc__t_1a3d66d88c5e928462aef62633449f1eb0) |
`public uint8_t `[`bAlternateSetting`](#structusb__iface__desc__t_1a4cdd7aab185365e51a1e722f43073b8c) |
`public uint8_t `[`bNumEndpoints`](#structusb__iface__desc__t_1acec2e7d68271baace354a0539f3d7e3d) |
`public uint8_t `[`bInterfaceClass`](#structusb__iface__desc__t_1ae899427763e325f03241afc69a6e1ea0) |
`public uint8_t `[`bInterfaceSubClass`](#structusb__iface__desc__t_1a3b3919d1203cd42550d77287f7585595) |
`public uint8_t `[`bInterfaceProtocol`](#structusb__iface__desc__t_1a6872c4ec51fd061e2955f84d97bea2a7) |
`public uint8_t `[`iInterface`](#structusb__iface__desc__t_1a2e4535908d90f195c6347a91e15b544d) |
## Members
#### `public uint8_t `[`bLength`](#structusb__iface__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__iface__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__iface__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__iface__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public uint8_t `[`bInterfaceNumber`](#structusb__iface__desc__t_1a3d66d88c5e928462aef62633449f1eb0) {#structusb__iface__desc__t_1a3d66d88c5e928462aef62633449f1eb0}
#### `public uint8_t `[`bAlternateSetting`](#structusb__iface__desc__t_1a4cdd7aab185365e51a1e722f43073b8c) {#structusb__iface__desc__t_1a4cdd7aab185365e51a1e722f43073b8c}
#### `public uint8_t `[`bNumEndpoints`](#structusb__iface__desc__t_1acec2e7d68271baace354a0539f3d7e3d) {#structusb__iface__desc__t_1acec2e7d68271baace354a0539f3d7e3d}
#### `public uint8_t `[`bInterfaceClass`](#structusb__iface__desc__t_1ae899427763e325f03241afc69a6e1ea0) {#structusb__iface__desc__t_1ae899427763e325f03241afc69a6e1ea0}
#### `public uint8_t `[`bInterfaceSubClass`](#structusb__iface__desc__t_1a3b3919d1203cd42550d77287f7585595) {#structusb__iface__desc__t_1a3b3919d1203cd42550d77287f7585595}
#### `public uint8_t `[`bInterfaceProtocol`](#structusb__iface__desc__t_1a6872c4ec51fd061e2955f84d97bea2a7) {#structusb__iface__desc__t_1a6872c4ec51fd061e2955f84d97bea2a7}
#### `public uint8_t `[`iInterface`](#structusb__iface__desc__t_1a2e4535908d90f195c6347a91e15b544d) {#structusb__iface__desc__t_1a2e4535908d90f195c6347a91e15b544d}
# struct `usb_ep_desc_t` {#structusb__ep__desc__t}
Standard USB endpoint descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__ep__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__ep__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
`public uint8_t `[`bEndpointAddress`](#structusb__ep__desc__t_1a527afb0f25cdd442d8d32c7df8e18c45) |
`public uint8_t `[`bmAttributes`](#structusb__ep__desc__t_1ae7c63b4cda39953db5710012a5d91c6f) |
`public le16_t `[`wMaxPacketSize`](#structusb__ep__desc__t_1ad083d80a481cb62796a7183f9240c914) |
`public uint8_t `[`bInterval`](#structusb__ep__desc__t_1aff92277eea8536f7de1a88d818c91b9e) |
## Members
#### `public uint8_t `[`bLength`](#structusb__ep__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__ep__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__ep__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__ep__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
#### `public uint8_t `[`bEndpointAddress`](#structusb__ep__desc__t_1a527afb0f25cdd442d8d32c7df8e18c45) {#structusb__ep__desc__t_1a527afb0f25cdd442d8d32c7df8e18c45}
#### `public uint8_t `[`bmAttributes`](#structusb__ep__desc__t_1ae7c63b4cda39953db5710012a5d91c6f) {#structusb__ep__desc__t_1ae7c63b4cda39953db5710012a5d91c6f}
#### `public le16_t `[`wMaxPacketSize`](#structusb__ep__desc__t_1ad083d80a481cb62796a7183f9240c914) {#structusb__ep__desc__t_1ad083d80a481cb62796a7183f9240c914}
#### `public uint8_t `[`bInterval`](#structusb__ep__desc__t_1aff92277eea8536f7de1a88d818c91b9e) {#structusb__ep__desc__t_1aff92277eea8536f7de1a88d818c91b9e}
# struct `usb_str_desc_t` {#structusb__str__desc__t}
A standard USB string descriptor structure.
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public uint8_t `[`bLength`](#structusb__str__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) |
`public uint8_t `[`bDescriptorType`](#structusb__str__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) |
## Members
#### `public uint8_t `[`bLength`](#structusb__str__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8) {#structusb__str__desc__t_1a1deca1f1d6e5815b290e6e1015bce5b8}
#### `public uint8_t `[`bDescriptorType`](#structusb__str__desc__t_1a67d7027b9eb9ed268d28e84fbc675707) {#structusb__str__desc__t_1a67d7027b9eb9ed268d28e84fbc675707}
# struct `usb_str_lgid_desc_t` {#structusb__str__lgid__desc__t}
## Summary
Members | Descriptions
--------------------------------|---------------------------------------------
`public `[`usb_str_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__str__desc__t)` `[`desc`](#structusb__str__lgid__desc__t_1a6b9de937ba1cb40f4b82094a8644c528) |
`public le16_t `[`string`](#structusb__str__lgid__desc__t_1a79364ecffd40a6c3218c408b4891c460) |
## Members
#### `public `[`usb_str_desc_t`](.build/docs/internals_usb_protocol_group.md#structusb__str__desc__t)` `[`desc`](#structusb__str__lgid__desc__t_1a6b9de937ba1cb40f4b82094a8644c528) {#structusb__str__lgid__desc__t_1a6b9de937ba1cb40f4b82094a8644c528}
#### `public le16_t `[`string`](#structusb__str__lgid__desc__t_1a79364ecffd40a6c3218c408b4891c460) {#structusb__str__lgid__desc__t_1a79364ecffd40a6c3218c408b4891c460}

+ 1
- 1
newbs_building_firmware.md View File

@ -1,6 +1,6 @@
# Building Your First Firmware
Now that you have setup your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
Now that you have set up your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
## Configure Your Build Environment Defaults (Optional)


Loading…
Cancel
Save