mirror of
https://github.com/hathach/tinyusb.git
synced 2026-08-18 11:02:16 +00:00
76 lines
2.6 KiB
ReStructuredText
76 lines
2.6 KiB
ReStructuredText
*************
|
|
Bluetooth HCI
|
|
*************
|
|
|
|
Role: device only. This driver transports Bluetooth HCI commands, events, and
|
|
ACL data over USB. It does not implement a Bluetooth controller, Link Manager,
|
|
or host stack; the application must provide that functionality.
|
|
|
|
Configuration and descriptors
|
|
=============================
|
|
|
|
Enable ``CFG_TUD_BTH`` and use ``TUD_BTH_DESCRIPTOR`` in the configuration
|
|
descriptor.
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 38 17 45
|
|
|
|
* - Option
|
|
- Default
|
|
- What it controls
|
|
* - ``CFG_TUD_BTH_ISO_ALT_COUNT``
|
|
- Required
|
|
- Number of isochronous voice alternate settings. Pass one paired
|
|
IN/OUT packet size per setting to ``TUD_BTH_DESCRIPTOR``.
|
|
* - ``CFG_TUD_BTH_EVENT_EPSIZE``
|
|
- ``16`` bytes
|
|
- Maximum HCI event interrupt-IN packet.
|
|
* - ``CFG_TUD_BTH_DATA_EPSIZE``
|
|
- ``64`` bytes
|
|
- ACL bulk endpoint packet size. Keep it consistent with the descriptor
|
|
and active bus speed.
|
|
* - ``CFG_TUD_BTH_HISTORICAL_COMPATIBLE``
|
|
- ``0``
|
|
- Uses the legacy HCI command request value required by some historical
|
|
controller implementations.
|
|
|
|
Set ``CFG_TUD_BTH_HISTORICAL_COMPATIBLE`` only for a controller that requires
|
|
the legacy ``bRequest = 0xe0`` behavior described by the Bluetooth Core
|
|
specification. It is not a general compatibility switch.
|
|
|
|
Data path
|
|
=========
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 38 62
|
|
|
|
* - API or callback
|
|
- What it does
|
|
* - ``tud_bt_hci_cmd_cb()``
|
|
- Delivers one host HCI command to the controller implementation.
|
|
* - ``tud_bt_acl_data_received_cb()``
|
|
- Delivers received host-to-controller ACL bytes.
|
|
* - ``tud_bt_event_send()``
|
|
- Queues a controller-to-host HCI event; ``false`` means it was not
|
|
accepted.
|
|
* - ``tud_bt_acl_data_send()``
|
|
- Queues controller-to-host ACL data; ``false`` means it was not accepted.
|
|
* - ``tud_bt_event_sent_cb()`` /
|
|
``tud_bt_acl_data_sent_cb()``
|
|
- Reports completion and releases the corresponding application-owned
|
|
send buffer.
|
|
|
|
The host delivers HCI commands through ``tud_bt_hci_cmd_cb()`` and ACL data
|
|
through ``tud_bt_acl_data_received_cb()``. The controller sends HCI events with
|
|
``tud_bt_event_send()`` and ACL data with ``tud_bt_acl_data_send()``.
|
|
|
|
The send APIs do not copy the whole packet. Keep each buffer valid and
|
|
unchanged until ``tud_bt_event_sent_cb()`` or ``tud_bt_acl_data_sent_cb()``.
|
|
Check the boolean return value before considering a packet queued.
|
|
|
|
There is currently no dedicated Bluetooth device example. Use the public API
|
|
in ``src/class/bth/bth_device.h`` together with the Bluetooth Core USB
|
|
Transport and HCI packet formats.
|