pw_bluetooth_hci#
Bluetooth Host Controller Interface utilities
Stable C++
The pw_bluetooth_hci
module contains utilities for using the Host Controller
Interface as defined by the Bluetooth Core Specification version 5.3.
HCI Packets#
This module has support to parse a the subset of the HCI packets used in the HCI UART Transport Layer are provided as defined in the Bluetooth Core Specification version 5.3 “Host Controller Interface Transport Layer” volume 4, part A, meaning:
HCI Command Packet:
pw::bluetooth_hci::CommandPacket
HCI ACL Data Packet:
pw::bluetooth_hci::AsyncDataPacket
HCI SCO Data Packet:
pw::bluetooth_hci::SyncDataPacket
HCI Event Data Packet:
pw::bluetooth_hci::EventPacket
HCI UART Transport Layer#
Decoding#
A decoder function is provided to parse HCI packets out of a HCI UART Transport Layer buffer which may contain multiple packets.
-
StatusWithSize DecodeHciUartData(ConstByteSpan data, const DecodedPacketCallback &packet_callback);#
Parses the HCI Packets out of a HCI UART Transport Layer buffer.
Parses as many complete HCI packets out of the provided buffer based on the HCI UART Transport Layer as defined by Bluetooth Core Specification version 5.3 “Host Controller Interface Transport Layer” volume 4, part A.
The HciPacketCallback is invoked for each full HCI packet.
Returns the number of bytes processed and a status based on:
OK - No invalid packet indicator found.
DATA_LOSS - An invalid packet indicator was detected between packets. Synchronization has been lost. The caller is responsible for regaining synchronization
Note
The caller is responsible for detecting the lack of progress due to an undersized data buffer and/or an invalid length field in case a full buffer is passed and no bytes are processed.