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