xref: /aosp_15_r20/external/pigweed/pw_bluetooth_hci/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _module-pw_bluetooth_hci:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker================
4*61c4878aSAndroid Build Coastguard Workerpw_bluetooth_hci
5*61c4878aSAndroid Build Coastguard Worker================
6*61c4878aSAndroid Build Coastguard Worker.. pigweed-module::
7*61c4878aSAndroid Build Coastguard Worker   :name: pw_bluetooth_hci
8*61c4878aSAndroid Build Coastguard Worker
9*61c4878aSAndroid Build Coastguard WorkerThe ``pw_bluetooth_hci`` module contains utilities for using the Host Controller
10*61c4878aSAndroid Build Coastguard WorkerInterface as defined by the Bluetooth Core Specification version 5.3.
11*61c4878aSAndroid Build Coastguard Worker
12*61c4878aSAndroid Build Coastguard Worker-----------
13*61c4878aSAndroid Build Coastguard WorkerHCI Packets
14*61c4878aSAndroid Build Coastguard Worker-----------
15*61c4878aSAndroid Build Coastguard WorkerThis module has support to parse a the subset of the HCI packets used in the HCI
16*61c4878aSAndroid Build Coastguard WorkerUART Transport Layer are provided as defined in the Bluetooth Core Specification
17*61c4878aSAndroid Build Coastguard Workerversion 5.3 "Host Controller Interface Transport Layer" volume 4, part A,
18*61c4878aSAndroid Build Coastguard Workermeaning:
19*61c4878aSAndroid Build Coastguard Worker
20*61c4878aSAndroid Build Coastguard Worker* HCI Command Packet: ``pw::bluetooth_hci::CommandPacket``
21*61c4878aSAndroid Build Coastguard Worker
22*61c4878aSAndroid Build Coastguard Worker* HCI ACL Data Packet: ``pw::bluetooth_hci::AsyncDataPacket``
23*61c4878aSAndroid Build Coastguard Worker
24*61c4878aSAndroid Build Coastguard Worker* HCI SCO Data Packet: ``pw::bluetooth_hci::SyncDataPacket``
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Worker* HCI Event Data Packet: ``pw::bluetooth_hci::EventPacket``
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Worker------------------------
29*61c4878aSAndroid Build Coastguard WorkerHCI UART Transport Layer
30*61c4878aSAndroid Build Coastguard Worker------------------------
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard WorkerDecoding
33*61c4878aSAndroid Build Coastguard Worker========
34*61c4878aSAndroid Build Coastguard WorkerA decoder function is provided to parse HCI packets out of a HCI UART Transport
35*61c4878aSAndroid Build Coastguard WorkerLayer buffer which may contain multiple packets.
36*61c4878aSAndroid Build Coastguard Worker
37*61c4878aSAndroid Build Coastguard Worker.. cpp:function:: StatusWithSize DecodeHciUartData(ConstByteSpan data, const DecodedPacketCallback& packet_callback);
38*61c4878aSAndroid Build Coastguard Worker
39*61c4878aSAndroid Build Coastguard Worker   Parses the HCI Packets out of a HCI UART Transport Layer buffer.
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Worker   Parses as many complete HCI packets out of the provided buffer based on the
42*61c4878aSAndroid Build Coastguard Worker   HCI UART Transport Layer as defined by Bluetooth Core Specification version
43*61c4878aSAndroid Build Coastguard Worker   5.3 "Host Controller Interface Transport Layer" volume 4, part A.
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Worker   The HciPacketCallback is invoked for each full HCI packet.
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Worker   Returns the number of bytes processed and a status based on:
48*61c4878aSAndroid Build Coastguard Worker
49*61c4878aSAndroid Build Coastguard Worker   * OK - No invalid packet indicator found.
50*61c4878aSAndroid Build Coastguard Worker   * DATA_LOSS - An invalid packet indicator was detected between packets.
51*61c4878aSAndroid Build Coastguard Worker     Synchronization has been lost. The caller is responsible for
52*61c4878aSAndroid Build Coastguard Worker     regaining synchronization
53*61c4878aSAndroid Build Coastguard Worker
54*61c4878aSAndroid Build Coastguard Worker   .. note::
55*61c4878aSAndroid Build Coastguard Worker      The caller is responsible for detecting the lack of progress due to an
56*61c4878aSAndroid Build Coastguard Worker      undersized data buffer and/or an invalid length field in case a full
57*61c4878aSAndroid Build Coastguard Worker      buffer is passed and no bytes are processed.
58