pw_bluetooth_proxy#

Lightweight proxy for augmenting Bluetooth functionality

Unstable C++

The pw_bluetooth_proxy module provides a lightweight proxy host that can be placed between a Bluetooth host and Bluetooth controller to add additional functionality or inspection. All without modifying the host or the controller.

An example use case could be offloading some functionality from a main host located on the application processor to instead be handled on the MCU (to reduce power usage).

The proxy acts as a proxy of all host controller interface (HCI) packets between the host and the controller.

pw::bluetooth::proxy::ProxyHost acts as the main coordinator for proxy functionality.

#include "pw_bluetooth_proxy/proxy_host.h"

  // Container creates ProxyHost .
  ProxyHost proxy = ProxyHost(std::move(container_send_to_host_fn),
                              std::move(container_send_to_controller_fn),
                              /*le_acl_credits_to_reserve=*/2,
                              /*br_edr_acl_credits_to_reserve=*/0,
                              &allocator);

  // Container passes H4 packets from host through proxy. Proxy will in turn
  // call the container-provided `container_send_to_controller_fn` to pass them
  // on to the controller. Some packets may be modified, added, or removed.
  proxy.HandleH4HciFromHost(std::move(h4_packet_from_host));

  // Container passes H4 packets from controller through proxy. Proxy will in
  // turn call the container-provided `container_send_to_host_fn` to pass them
  // on to the controller. Some packets may be modified, added, or removed.
  proxy.HandleH4HciFromController(std::move(h4_packet_from_controller));
Get Started

How to set up in your build system

Get started
API Reference

Reference information about the API

API reference
Roadmap

Upcoming plans

Roadmap
Code size analysis

Understand code footprint and savings potential

Code size analysis

Get started#

  1. Add Emboss to your project as described in Emboss.

Bazel isn’t supported yet.

2. Then add $dir_pw_bluetooth_proxy to the deps list in your pw_executable() build target:

pw_executable("...") {
  # ...
  deps = [
    # ...
    "$dir_pw_bluetooth_proxy",
    # ...
  ]
}

2. Then add pw_bluetooth_proxy to the DEPS list in your cmake target:

Module configuration#

This module has configuration options that globally affect the behavior of the pw::bluetooth::proxy::ProxyHost via compile-time configuration. See the module documentation for more details.

Module configuration options include:

  • PW_BLUETOOTH_PROXY_ASYNC: This module supports two modes of operation, both of which provide thread-safe APIs. When this option is zero (the default), it will use synchronization primitives to allow for parallel execution. When this option is non-zero, it will asynchronously execute tasks using a provided pw::async2::Dispatcher. When using this mode of operation, an allocator and a dispatcher must be provided that outlive the pw::bluetooth::proxy::ProxyHost.

  • PW_BLUETOOTH_PROXY_MULTIBUF_ALLOCATOR_SIZE: The size of the temporary internal multibuf allocator, which is used by the ChannelProxy and RFCOMM APIs. Configure this value to be large enough to allocate multiple RFCOMM packets if you are using RFCOMM.

  • For crash recovery configuration options, see Configuration.

Clock Facade#

This module uses a facade for time-related operations to allow overriding the clock implementation. By default, the facade uses pw::chrono::SystemClock and is backed by pw::async2::GetSystemTimeProvider().

To override the backend, set the appropriate variable in your build system: - GN: pw_bluetooth_proxy_CLOCK_BACKEND - CMake: pw_bluetooth_proxy.clock_BACKEND - Bazel: Use the clock_backend label flag.

HCI Event Filtering#

ProxyHost supports runtime configuration of HCI event and LE Meta subevent filtering. This allows the container to block specific events from reaching the host.

By default, no events are blocked.

To block or unblock an event, use: - pw::bluetooth::proxy::ProxyHost::SetEventBlocked() - pw::bluetooth::proxy::ProxyHost::SetLeSubeventBlocked()

To query the block status of an event, use: - pw::bluetooth::proxy::ProxyHost::IsEventBlocked() - pw::bluetooth::proxy::ProxyHost::IsLeSubeventBlocked()

To reset all filters (unblock all events), use: - pw::bluetooth::proxy::ProxyHost::ResetFilters()

Note

Blocking the parent LE_META_EVENT will block all LE Meta subevents, regardless of their individual block status.

Note

Resetting the proxy via pw::bluetooth::proxy::ProxyHost::Reset() does not reset the filters. To reset filters, you must explicitly call pw::bluetooth::proxy::ProxyHost::ResetFilters().

API reference#

Moved: pw_bluetooth_proxy

Code size analysis#

Delta when constructing a proxy and just sending packets through.

Label

Segment

Delta

Create and use proxy as a simple passthrough

FLASH

+29,176

[section .rodata]

+24

[section .text]

+320

pw::Result<>::value()

+86

pw::string::FormatVaList()

+144

pw::containers::internal::OptionalData<>::OptionalData()

+2

pw::containers::internal::GenericIntrusiveList<>::insert_after()

-16

__pre_init_runtime_init_per_core_irq_priorities

-4

__bi_84

-2

pw::containers::internal::IntrusiveForwardListItem::DoGetPrevious()

+272

main

+2

operator delete()

NEW

+2,200

emboss::support::ContiguousBuffer<>::GetOffsetStorage<>()

NEW

+1,620

pw::bluetooth::proxy::internal::L2capLogicalLink::HandleAclData()

NEW

+1,046

pw::bluetooth::MakeEmbossView<>()

NEW

+948

std::__2::__variant_detail::__visitation::__base::__dispatcher<>::__dispatch[abi:nqn240000]<>()

NEW

+840

pw::Result<>::operator->()

NEW

+788

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::GenerateNextPacket()

NEW

+706

emboss::prelude::UIntView<>::Ok()

NEW

+692

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::DrainChannelQueuesIfNewTx()

NEW

+648

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine::HandlePduFromController()

NEW

+588

std::__2::__variant_detail::__assignment<>::__emplace[abi:nqn240000]<>()

NEW

+550

__llvm_libc_24_0_0_git::FreeListHeap::shrink_in_place()

NEW

+548

pw::bluetooth::proxy::L2capChannelManager::DoInterceptBasicModeChannel()

NEW

+544

__llvm_libc_24_0_0_git::FreeListHeap::allocate_impl()

NEW

+536

pw::bluetooth::proxy::AclDataChannel::HandleNumberOfCompletedPacketsEvent()

NEW

+520

pw::Result<>::operator*()

NEW

+500

pw::bluetooth::proxy::internal::BasicModeTxEngine::GenerateNextPacket()

NEW

+472

pw::bluetooth::proxy::L2capSignalingChannel::HandleConfigurationReq()

NEW

+464

pw::bluetooth::proxy::L2capChannelManager::DoInterceptCreditBasedFlowControlChannel()

NEW

+444

pw::bluetooth::proxy::AclDataChannel::HandleAclFromHost()

NEW

+444

pw::bluetooth::proxy::ProxyHost::HandleEventFromController()

NEW

+440

pw::DynamicMap<>::TryEmplaceImpl<>()

NEW

+432

emboss::prelude::UIntView<>::Read()

NEW

+432

std::__2::pair<>::pair[abi:nqn240000]<>()

NEW

+412

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::Ok()

NEW

+412

pw::bluetooth::proxy::L2capSignalingChannel::HandleL2capSignalingCommand()

NEW

+408

pw::bluetooth::proxy::L2capSignalingChannel::SendFlowControlCreditInd()

NEW

+400

__llvm_libc_24_0_0_git::FreeStore::remove_best_fit()

NEW

+396

emboss::support::BitBlock<>::GetOffsetStorage<>()

NEW

+396

fit::internal::target<>::ops

NEW

+378

__llvm_libc_24_0_0_git::BlockRef::allocate()

NEW

+376

pw::bluetooth::proxy::AclDataChannel::HandleAclData()

NEW

+376

pw::containers::internal::KeyedAATree<>::InsertImpl()

NEW

+374

pw::Allocator::New<>()

NEW

+374

std::__2::__variant_detail::__dtor<>::__destroy[abi:nqn240000]()

NEW

+372

std::__2::__variant_detail::__assignment<>::__assign_alt[abi:nqn240000]<>()

NEW

+372

xQueueSemaphoreTake

NEW

+364

pw::bluetooth::proxy::L2capChannel::SendPayloadToClient()

NEW

+344

pw::bluetooth::proxy::ProxyHost::HandleLeMetaEvent()

NEW

+344

xTaskGenericNotifyFromISR

NEW

+336

pw::multibuf::v1::SimpleAllocator::DoAllocate()

NEW

+332

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::Ok()

NEW

+328

__subsf3

NEW

+328

pw::bluetooth::proxy::AclDataChannel::ProcessSpecificLEReadBufferSizeCommandCompleteEvent<>()

NEW

+320

pw::bluetooth::proxy::L2capSignalingChannel::HandleConnectionRsp()

NEW

+314

__llvm_libc_24_0_0_git::FreeListHeap::init()

NEW

+310

pw::IntrusiveMap<>::IntrusiveMap<>()

NEW

+304

emboss::prelude::UIntView<>::TryToWrite<>()

NEW

+300

pw::bluetooth::emboss::GenericFirstKFrameView<>::Ok()

NEW

+292

pw::bluetooth::proxy::L2capChannelManager::RegisterChannelLocked()

NEW

+288

emboss::prelude::UIntView<>::Write<>()

NEW

+288

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::Ok()

NEW

+288

pw::bluetooth::proxy::AclDataChannel::DrainDynamicQuota()

NEW

+288

xTaskGenericNotify

NEW

+280

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::Ok()

NEW

+280

pw::bluetooth::proxy::ProxyHost::HandleCommandCompleteEvent()

NEW

+268

std::__2::__variant_detail::__assignment<>::__generic_assign[abi:nqn240000]<>()

NEW

+256

pw::bluetooth::proxy::AclDataChannel::ProcessDisconnectionCompleteEvent()

NEW

+252

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::Ok()

NEW

+252

pw::bluetooth::proxy::L2capSignalingChannel::HandleConfigurationRsp()

NEW

+240

__aeabi_fadd

NEW

+240

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::Ok()

NEW

+240

pw::containers::internal::AATree<>::AATree()

NEW

+238

fit::internal::target<>::invoke()

NEW

+236

__aeabi_fmul

NEW

+234

pw::bluetooth::proxy::L2capChannelManager::CreateChannel<>()

NEW

+232

__llvm_libc_24_0_0_git::inline_memcpy()

NEW

+228

pw::bluetooth::proxy::L2capChannelManager::HandleAclDisconnectionComplete()

NEW

+218

pw::DynamicMap<>::Node::Node<>()

NEW

+216

pw::bluetooth::proxy::L2capChannel::L2capChannel()

NEW

+216

pw::multibuf::v1::SimpleAllocator::DoAllocate()::$_0::operator()()

NEW

+212

pw::bluetooth::proxy::L2capSignalingChannel::OnCFramePayload()

NEW

+208

xTaskGenericNotifyWait

NEW

+196

pw::containers::internal::KeyedAATree<>::insert()

NEW

+192

emboss::support::OffsetBitBlock<>::ReadUInt()

NEW

+192

pw::bluetooth::emboss::GenericEventHeaderView<>::Ok()

NEW

+192

pw::bluetooth::emboss::GenericL2capSignalingCommandHeaderView<>::Ok()

NEW

+188

pw::bluetooth::proxy::AclDataChannel::SendAcl()

NEW

+184

pw::bluetooth::emboss::AclDataFrameHeader::GenericEmbossReservedAnonymousField4View<>::Ok()

NEW

+184

pw::bluetooth::proxy::L2capChannel::Close()

NEW

+184

pw::bluetooth::proxy::L2capChannel::HandlePduFromHost()

NEW

+184

pw::bluetooth::proxy::Recombiner::RecombineFragment()

NEW

+184

pw::containers::internal::AATreeItem::Rebalance()

NEW

+180

pw::Deallocator::DeleteArray<>()

NEW

+180

pw::bluetooth::proxy::AclDataChannel::CreateAclConnection()

NEW

+180

pw::bluetooth::proxy::L2capChannel::InitCreditBasedFlowControl()

NEW

+176

emboss::support::ContiguousBuffer<>::ReadLittleEndianUInt<>()

NEW

+176

pw::bluetooth::emboss::GenericL2capConnectionReqView<>::Ok()

NEW

+176

pw::bluetooth::emboss::GenericL2capDisconnectionReqView<>::Ok()

NEW

+176

pw::bluetooth::emboss::GenericL2capDisconnectionRspView<>::Ok()

NEW

+176

pw::bluetooth::emboss::GenericL2capFlowControlCreditIndView<>::Ok()

NEW

+174

pw::bluetooth::proxy::L2capChannel::~L2capChannel()

NEW

+172

pw::bluetooth::proxy::L2capChannelManager::CreateSignalingChannel()

NEW

+172

pw::bluetooth::proxy::internal::L2capChannelImpl::DequeuePacket()

NEW

+172

pw::containers::internal::KeyedAATree<>::find()

NEW

+170

pw::containers::internal::KeyedAATree<>::GetLowerBoundImpl()

NEW

+168

__cmpsf2

NEW

+168

__gesf2

NEW

+168

pw::bluetooth::emboss::GenericBasicL2capHeaderView<>::Ok()

NEW

+168

pw::containers::internal::GenericDeque<>::contiguous_data()

NEW

+168

pw::multibuf::v1::SimpleAllocator::InternalAllocateContiguous()::$_0::operator()()

NEW

+168

vTaskPriorityDisinheritAfterTimeout

NEW

+164

pw::UniquePtr<>::Reset()

NEW

+162

pw::multibuf::v1::MultiBuf::CopyFromAndOptionallyTruncate()

NEW

+160

pw::bluetooth::proxy::L2capChannel::HandlePduFromController()

NEW

+156

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::Ok()

NEW

+156

pw::bluetooth::proxy::AclDataChannel::AclDataChannel()

NEW

+156

pw::bluetooth::proxy::AclDataChannel::Credits::Reserve()

NEW

+156

pw::sync::ThreadNotification::acquire()

NEW

+154

__llvm_libc_24_0_0_git::FreeListHeap::realloc()

NEW

+152

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::Ok()

NEW

+152

pw::bluetooth::emboss::GenericL2capMtuConfigurationOptionView<>::Ok()

NEW

+152

pw::bluetooth::proxy::L2capChannel::Stop()

NEW

+152

pw::bluetooth::proxy::L2capStatusTracker::DeliverPendingAclDisconnectionComplete()

NEW

+150

std::__2::__variant_detail::__assignment<>::__generic_assign[abi:nqn240000]<>()::{lambda()#1}::operator()[abi:nqn240000]<>()

NEW

+144

pw::bluetooth::proxy::L2capChannelManager::DeregisterAndCloseChannels()

NEW

+144

pw::bluetooth::proxy::ProxyHost::ProxyHost()

NEW

+144

pw::containers::internal::AATreeIterator<>::operator++()

NEW

+140

pw::DynamicMap<>::insert()

NEW

+140

pw::bluetooth::emboss::GenericBFrameView<>::Ok()

NEW

+140

pw::bluetooth::proxy::L2capChannelManager::AddConnection()

NEW

+140

std::__2::__throw_if_valueless[abi:nqn240000]<>()

NEW

+140

xTaskPriorityInherit

NEW

+138

pw::DynamicMap<>::clear()

NEW

+138

pw::containers::internal::AATreeItem::Unmap()

NEW

+136

emboss::support::EnumView<>::Ok()

NEW

+136

fit::function_impl<>::operator=()

NEW

+136

pw::DynamicDeque<>::ReallocateBuffer()

NEW

+136

pw::DynamicMap<>::erase()

NEW

+132

pw::bluetooth::proxy::L2capChannel::StartRecombinationBuf()

NEW

+132

pw::bluetooth::proxy::L2capChannelManager::GetAclH4Packet()

NEW

+130

pw::bluetooth::emboss::GenericFirstKFrameView<>::payload()

NEW

+130

pw::bluetooth::proxy::L2capStatusTracker::DeliverPendingEvents()

NEW

+128

pw::bluetooth::proxy::L2capSignalingChannel::HandleConnectionReq()

NEW

+128

pw::bluetooth::proxy::L2capStatusTracker::DeliverPendingDisconnectionComplete()

NEW

+128

pw::bluetooth::proxy::ProxyHost::HandleCommandFromHost()

NEW

+124

pw::DynamicMap<>::erase<>()

NEW

+124

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::payload()

NEW

+124

pw::bluetooth::proxy::L2capChannelManager::L2capChannelManager()

NEW

+124

pw::bluetooth::proxy::internal::L2capChannelImpl::Write()

NEW

+122

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::Ok()

NEW

+122

pw::bluetooth::proxy::AclDataChannel::ProcessReadBufferSizeCommandCompleteEvent()

NEW

+120

pw::bluetooth::proxy::L2capChannelManager::~L2capChannelManager()

NEW

+120

pw::multibuf::v1::SimpleAllocator::InternalAllocateContiguous()

NEW

+120

pw::multibuf::v1::SimpleAllocator::SimpleAllocator()

NEW

+116

pw::bluetooth::emboss::GenericDisconnectionCompleteEventView<>::Ok()

NEW

+116

pw::bluetooth::emboss::GenericFirstKFrameView<>::IsComplete()

NEW

+116

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::IsComplete()

NEW

+116

pw::bluetooth::proxy::ProxyHost::~ProxyHost()

NEW

+116

std::__2::__optional_storage_base<>::__assign_from[abi:nqn240000]<>()

NEW

+112

pw::bluetooth::emboss::GenericLEMetaEventView<>::Ok()

NEW

+112

pw::bluetooth::proxy::L2capSignalingChannel::HandleFlowControlCreditInd()

NEW

+112

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+112

pw::containers::internal::KeyedAATree<>::KeyedAATree()

NEW

+112

std::__2::destroy_n[abi:nqn240000]<>()

NEW

+110

pw::containers::FlatMap<>::ConstexprSort()

NEW

+108

emboss::support::EnumView<>::Write()

NEW

+108

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedVirtualPayloadSizeView::MaybeRead()

NEW

+108

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+108

pw::bluetooth::proxy::L2capSignalingChannel::HandleDisconnectionRsp()

NEW

+108

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::OnDeregister()

NEW

+108

pw::bluetooth::proxy::internal::L2capLogicalLink::L2capLogicalLink()

NEW

+106

pw::multibuf::v1::Chunk::ClaimPrefix()

NEW

+106

pw::multibuf::v1::MultiBuf::CopyTo()

NEW

+104

pw::bluetooth::emboss::GenericAclDataFrameView<>::Ok()

NEW

+104

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::Ok()

NEW

+104

pw::bluetooth::proxy::L2capChannelManager::HandleDisconnectionCompleteLocked()

NEW

+104

pw::bluetooth::proxy::L2capStatusTracker::DeliverPendingConnectionComplete()

NEW

+104

pw::bluetooth::proxy::internal::CopyPacketFrom<>()

NEW

+104

pw::bluetooth::proxy::internal::L2capChannelImpl::SendEvent()

NEW

+104

pw::multibuf::v1::Chunk::Slice()

NEW

+104

pw::sync::ThreadNotification::release()

NEW

+102

pw::bluetooth::proxy::AclDataChannel::DequeueHostPacket()

NEW

+100

pw::bluetooth::proxy::AclDataChannel::ReserveSendCredit()

NEW

+100

pw::bluetooth::proxy::L2capChannel::AddTxCredits()

NEW

+100

std::__2::__libcpp_verbose_abort()

NEW

+98

pw::IntrusiveMap<>::insert()

NEW

+98

pw::bluetooth::proxy::L2capChannel::InitBasic()

NEW

+98

pw::bluetooth::proxy::L2capChannelManager::SendFlowControlCreditInd()

NEW

+98

pw::multibuf::v1::MultiBuf::ContiguousSpan()

NEW

+96

__compiler_rt_fnorm2

NEW

+96

ceilf

NEW

+96

emboss::support::EnumView<>::TryToWrite()

NEW

+96

emboss::support::MaybeDo<>()

NEW

+96

emboss::support::OffsetBitBlock<>::WriteUInt()

NEW

+96

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::broadcast_flag()

NEW

+96

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::handle()

NEW

+96

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::packet_boundary_flag()

NEW

+96

pw::bluetooth::emboss::GenericCommandHeaderView<>::Ok()

NEW

+96

pw::bluetooth::proxy::L2capChannelManager::FindChannelByLocalCid()

NEW

+96

pw::bluetooth::proxy::L2capChannelManager::FindChannelByRemoteCid()

NEW

+96

pw::bluetooth::proxy::internal::BasicModeTxEngine::HandlePduFromHost()

NEW

+96

pw::multibuf::v1::MultiBuf::DiscardPrefix()

NEW

+94

pw::bluetooth::proxy::internal::BorrowedL2capChannel::BorrowedL2capChannel()

NEW

+94

pw::multibuf::v1::SimpleAllocator::InsertRegion()

NEW

+94

std::__2::__variant_detail::__alt<>::__alt[abi:nqn240000]<>()

NEW

+92

__aeabi_ui2f

NEW

+92

__compiler_rt_funder

NEW

+92

emboss::support::ContiguousBuffer<>::WriteLittleEndianUInt<>()

NEW

+92

pw::bluetooth::proxy::AclDataChannel::UnregisterConnection()

NEW

+92

pw::bluetooth::proxy::L2capStatusTracker::DeliverPendingConfigurationComplete()

NEW

+92

pw::bluetooth::proxy::Recombiner::TakeBuf()

NEW

+92

pw::bluetooth::proxy::internal::BasicModeRxEngine::HandlePduFromController()

NEW

+92

pw::bluetooth::proxy::internal::BorrowedL2capChannel::~BorrowedL2capChannel()

NEW

+92

pw::containers::internal::GenericDeque<>::front()

NEW

+90

pw::containers::internal::AATreeItem::Split()

NEW

+90

pw::multibuf::v1::Chunk::Free()

NEW

+90

pw::multibuf::v1::MultiBufAllocator::MoreMemoryAvailable()

NEW

+90

pw::multibuf::v1::SimpleAllocator::GetAvailableMemorySize()

NEW

+88

pw::DynamicMap<>::begin()

NEW

+88

pw::DynamicMap<>::end()

NEW

+88

pw::DynamicMap<>::find()

NEW

+88

pw::IntrusiveMap<>::erase()

NEW

+88

pw::IntrusiveMap<>::find()

NEW

+88

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+88

pw::bluetooth::proxy::AclDataChannel::Reset()

NEW

+88

pw::bluetooth::proxy::H4PacketInterface::H4PacketInterface()

NEW

+88

pw::bluetooth::proxy::H4PacketWithHci::H4PacketWithHci()

NEW

+88

pw::bluetooth::proxy::L2capSignalingChannel::Init()

NEW

+88

pw::containers::internal::AATree<>::~AATree()

NEW

+88

std::__2::__optional_destruct_base<>::~__optional_destruct_base[abi:nqn240000]()

NEW

+84

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+84

pw::bluetooth::proxy::L2capChannel::TakeRecombinationBuf()

NEW

+84

pw::bluetooth::proxy::Recombiner::EndRecombination()

NEW

+84

pw::bluetooth::proxy::internal::L2capLogicalLink::~L2capLogicalLink()

NEW

+84

pw::containers::internal::OptionalData<>::Clear()

NEW

+84

pw::multibuf::v1::MultiBuf::const_iterator::operator+=()

NEW

+80

__aeabi_frsub

NEW

+80

emboss::support::GenericArrayView<>::Ok()

NEW

+80

pw::IntrusiveMap<>::begin()

NEW

+80

pw::IntrusiveMap<>::end()

NEW

+80

pw::containers::internal::OptionalData<>::AssignState()

NEW

+80

pw::multibuf::v1::MultiBuf::TruncateAfter()

NEW

+80

std::__2::__optional_destruct_base<>::reset[abi:nqn240000]()

NEW

+80

xTaskGenericNotifyStateClear

NEW

+78

pw::bluetooth::emboss::GenericGenericHciCommandView<>::Ok()

NEW

+78

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::Write()

NEW

+76

pw::Vector<>::erase()

NEW

+76

pw::bluetooth::emboss::GenericL2capConfigurationOptionHeaderView<>::Ok()

NEW

+76

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventDataView<>::Ok()

NEW

+76

pw::bluetooth::proxy::AclDataChannel::~AclDataChannel()

NEW

+74

pw::bluetooth::proxy::AclDataChannel::RegisterConnection()

NEW

+74

pw::bluetooth::proxy::L2capChannel::SendAdditionalRxCredits()

NEW

+74

pw::bluetooth::proxy::L2capChannelManager::FindChannelByRemoteCidLocked()

NEW

+74

pw::containers::internal::GenericDeque<>::DestroyAll()

NEW

+74

pw::containers::internal::OptionalData<>::operator=()

NEW

+72

pw::DynamicMap<>::~DynamicMap()

NEW

+72

pw::allocator::internal::ManagedPtr<>::operator->()

NEW

+72

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::has_status()

NEW

+72

pw::bluetooth::emboss::GenericOpCodeBitsView<>::Ok()

NEW

+72

pw::bluetooth::proxy::L2capChannel::CopyToRecombinationBuf()

NEW

+72

pw::bluetooth::proxy::L2capChannelManager::FindChannelByLocalCidLocked()

NEW

+72

pw::bluetooth::proxy::L2capStatusTracker::HandleConfigurationChanged()

NEW

+72

pw::bluetooth::proxy::L2capStatusTracker::HandleConnectionComplete()

NEW

+72

pw::bluetooth::proxy::L2capStatusTracker::HandleDisconnectionComplete()

NEW

+72

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine::CreditBasedFlowControlRxEngine()

NEW

+72

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::AddCredits()

NEW

+72

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::BorrowL2capChannel()

NEW

+72

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::~L2capChannelManagerImpl()

NEW

+72

vQueueUnregisterQueue

NEW

+70

pw::DynamicDeque<>::IncreaseCapacity()

NEW

+70

pw::bluetooth::emboss::GenericGenericHciCommandView<>::payload()

NEW

+70

pw::bluetooth::proxy::internal::ChannelProxyImpl::DoCheckWriteParameter()

NEW

+70

pw::multibuf::v1::ChunkRegionTracker::CreateFirstChunk()

NEW

+70

pw::multibuf::v1::internal::LinkedRegionTracker::~LinkedRegionTracker()

NEW

+70

std::__2::__destroy[abi:nqn240000]<>()

NEW

+68

emboss::support::OffsetBitBlock<>::UncheckedReadUInt()

NEW

+68

pw::bluetooth::proxy::AclDataChannel::SendCredit::MarkUsed()

NEW

+68

pw::bluetooth::proxy::L2capChannel::AreValidParameters()

NEW

+68

pw::bluetooth::proxy::L2capChannel::GenerateNextTxPacket()

NEW

+68

pw::bluetooth::proxy::internal::BasicModeTxEngine::CheckWriteParameter()

NEW

+68

pw::containers::internal::AATreeItem::Skew()

NEW

+68

pw::containers::internal::KeyedAATree<>::lower_bound()

NEW

+66

pw::DynamicDeque<>::try_reserve()

NEW

+66

pw::bluetooth::proxy::L2capChannelManager::DeregisterChannelLocked()

NEW

+66

pw::bluetooth::proxy::Recombiner::StartRecombination()

NEW

+66

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::SendAdditionalRxCredits()

NEW

+66

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+66

pw::multibuf::v1::internal::LinkedRegionTracker::Destroy()

NEW

+64

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::nocp_data()

NEW

+64

pw::bluetooth::proxy::L2capSignalingChannel::L2capSignalingChannel()

NEW

+64

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::CheckWriteParameter()

NEW

+64

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::IsWriteAvailable()

NEW

+64

pw::containers::FlatMap<>::at()

NEW

+64

pw::containers::internal::KeyedAATree<>::~KeyedAATree()

NEW

+64

std::__2::optional<>::operator=[abi:nqn240000]<>()

NEW

+62

pw::DynamicMap<>::take<>()

NEW

+62

pw::bluetooth::emboss::GenericAclDataFrameView<>::payload()

NEW

+62

pw::bluetooth::emboss::GenericBFrameView<>::payload()

NEW

+62

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::payload()

NEW

+62

pw::bluetooth::proxy::H4PacketInterface::~H4PacketInterface()

NEW

+62

pw::multibuf::v1::MultiBufAllocator::AllocateContiguous()

NEW

+60

__compiler_rt_fnan2

NEW

+60

pw::bluetooth::emboss::GenericBFrameView<>::IsComplete()

NEW

+60

pw::bluetooth::proxy::AclDataChannel::AclConnection::AclConnection()

NEW

+60

pw::bluetooth::proxy::HciTransport::SendToController()

NEW

+60

pw::bluetooth::proxy::L2capChannelManager::Advance()

NEW

+60

pw::bluetooth::proxy::ProxyHost::OnConnectionCompleteSuccess()

NEW

+60

pw::sync::Mutex::lock()

NEW

+60

pw::sync::Mutex::unlock()

NEW

+58

pw::bluetooth::emboss::GenericAclDataFrameView<>::IsComplete()

NEW

+58

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::EmbossReservedVirtualReturnParametersSizeView::MaybeRead()

NEW

+58

pw::bluetooth::emboss::GenericGenericHciCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+58

pw::bluetooth::emboss::GenericGenericHciCommandView<>::IsComplete()

NEW

+58

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::IsComplete()

NEW

+58

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::IsComplete()

NEW

+58

pw::bluetooth::emboss::GenericLEMetaEventView<>::EmbossReservedVirtualReturnParametersSizeView::MaybeRead()

NEW

+58

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::IsComplete()

NEW

+58

std::__2::__lower_bound_bisecting[abi:nqn240000]<>()

NEW

+56

pw::UniquePtr<>::operator=<>()

NEW

+56

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+56

pw::bluetooth::proxy::HciTransport::SendToHost()

NEW

+56

pw::bluetooth::proxy::L2capChannel::ReplenishRxCredits()

NEW

+56

pw::bluetooth::proxy::L2capChannel::Start()

NEW

+56

pw::bluetooth::proxy::L2capChannelManager::DeleteStaleChannels()

NEW

+56

pw::bluetooth::proxy::L2capStatusTracker::HandleAclDisconnectionComplete()

NEW

+56

pw::bluetooth::proxy::ProxyHost::DoHandleH4HciFromController()

NEW

+56

pw::bluetooth::proxy::ProxyHost::DoHandleH4HciFromHost()

NEW

+56

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::Start()

NEW

+56

pw::bluetooth::proxy::internal::L2capChannelImpl::Close()

NEW

+56

pw::bluetooth::proxy::internal::L2capChannelImpl::IsWriteAvailable()

NEW

+56

pw::containers::internal::GenericAATree::erase_one()

NEW

+56

std::__2::unique_lock<>::lock[abi:nqn240000]()

NEW

+54

pw::bluetooth::emboss::GenericAclDataFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+54

pw::bluetooth::emboss::GenericBFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+54

pw::multibuf::v1::SimpleAllocator::~SimpleAllocator()

NEW

+52

emboss::support::Or<>()

NEW

+52

pw::InlineBasicString<>::SetSizeAndTerminate()

NEW

+52

pw::allocator::Hardening::Multiply<>()

NEW

+52

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedVirtualPayloadSizeView::Read()

NEW

+52

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Read()

NEW

+52

pw::bluetooth::proxy::AclDataChannel::AclConnection::ReclaimCredit()

NEW

+52

pw::bluetooth::proxy::AclDataChannel::LookupCredits()

NEW

+52

pw::bluetooth::proxy::L2capStatusTracker::L2capStatusTracker()

NEW

+52

pw::bluetooth::proxy::internal::ChannelProxyImpl

NEW

+52

pw::bluetooth::proxy::internal::ChannelProxyImpl::~ChannelProxyImpl()

NEW

+52

pw::bluetooth::proxy::internal::GenericL2capChannel::Write()

NEW

+52

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::~GenericL2capChannelImpl()

NEW

+52

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::OnDeletion()

NEW

+52

pw::containers::internal::AATreeItem::IsMapped()

NEW

+52

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+52

pw::multibuf::v1::MultiBuf::Truncate()

NEW

+52

pw::multibuf::v1::MultiBufChunks::push_front()

NEW

+52

pw::multibuf::v1::MultiBufChunks::take_front()

NEW

+52

std::__2::array<>::~array()

NEW

+50

pw::Deallocator::Delete<>()

NEW

+50

pw::bluetooth::emboss::GenericBasicL2capHeaderView<>::channel_id()

NEW

+50

pw::bluetooth::emboss::GenericL2capSignalingCommandHeaderView<>::data_length()

NEW

+50

pw::bluetooth::proxy::ProxyHost::DoInterceptCreditBasedFlowControlChannel()

NEW

+50

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::OnRegister()

NEW

+48

pw::DynamicDeque<>::operator=()

NEW

+48

pw::Result<>::Result<>()

NEW

+48

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::data_total_length()

NEW

+48

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::emboss_reserved_anonymous_field_4()

NEW

+48

pw::bluetooth::emboss::GenericBasicL2capHeaderView<>::pdu_length()

NEW

+48

pw::bluetooth::emboss::GenericBdAddrView<>::Ok()

NEW

+48

pw::bluetooth::emboss::GenericEventHeaderView<>::event_code()

NEW

+48

pw::bluetooth::emboss::GenericEventHeaderView<>::event_code_uint()

NEW

+48

pw::bluetooth::emboss::GenericEventHeaderView<>::parameter_total_size()

NEW

+48

pw::bluetooth::emboss::GenericFirstKFrameView<>::header()

NEW

+48

pw::bluetooth::emboss::GenericFirstKFrameView<>::sdu_length()

NEW

+48

pw::bluetooth::emboss::GenericL2capFlowControlCreditIndView<>::cid()

NEW

+48

pw::bluetooth::emboss::GenericL2capFlowControlCreditIndView<>::credits()

NEW

+48

pw::bluetooth::emboss::GenericL2capSignalingCommandHeaderView<>::code()

NEW

+48

pw::bluetooth::emboss::GenericL2capSignalingCommandHeaderView<>::identifier()

NEW

+48

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedVirtualDataLengthView::MaybeRead()

NEW

+48

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::header()

NEW

+48

pw::bluetooth::proxy::AclDataChannel::HandleAclFromController()

NEW

+48

pw::bluetooth::proxy::HciTransport::HciTransport()

NEW

+48

pw::bluetooth::proxy::ProxyHost::IsEventBlocked()

NEW

+48

pw::bluetooth::proxy::ProxyHost::IsLeSubeventBlocked()

NEW

+48

pw::bluetooth::proxy::Recombiner::HasBuf()

NEW

+48

pw::bluetooth::proxy::internal::ChannelProxyImpl::ChannelProxyImpl()

NEW

+48

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine::AddRxCredits()

NEW

+48

std::__2::exchange[abi:nqn240000]<>()

NEW

+46

emboss::support::And<>()

NEW

+46

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::status()

NEW

+46

pw::bluetooth::proxy::AclDataChannel::FindAclConnection()

NEW

+46

pw::bluetooth::proxy::AclDataChannel::MaxDataPacketLengthForTransport()

NEW

+46

pw::bluetooth::proxy::L2capChannelManagerInterface::InterceptCreditBasedFlowControlChannel()

NEW

+46

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::L2capChannelManagerImpl()

NEW

+44

pw::PackedPtr<>::set()

NEW

+44

pw::PackedPtr<>::set_packed_value()

NEW

+44

pw::Vector<>::operator[]()

NEW

+44

pw::allocator::Layout::Of<>()

NEW

+44

pw::allocator::LibCAllocator

NEW

+44

pw::bluetooth::emboss::GenericFirstKFrameView<>::channel_id()

NEW

+44

pw::bluetooth::emboss::GenericFirstKFrameView<>::pdu_length()

NEW

+44

pw::bluetooth::emboss::GenericL2capConfigureReqView<>::EmbossReservedVirtualOptionsSizeView::Read()

NEW

+44

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::MaybeRead()

NEW

+44

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::channel_id()

NEW

+44

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::pdu_length()

NEW

+44

pw::bluetooth::emboss::LEConnectionCompleteSubevent::EmbossReservedValidatorForConnectionInterval::ValueIsOk<>()

NEW

+44

pw::bluetooth::emboss::LEConnectionCompleteSubevent::EmbossReservedValidatorForSupervisionTimeout::ValueIsOk<>()

NEW

+44

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV1::EmbossReservedValidatorForConnectionInterval::ValueIsOk<>()

NEW

+44

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV1::EmbossReservedValidatorForSupervisionTimeout::ValueIsOk<>()

NEW

+44

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV2::EmbossReservedValidatorForConnectionInterval::ValueIsOk<>()

NEW

+44

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV2::EmbossReservedValidatorForSupervisionTimeout::ValueIsOk<>()

NEW

+44

pw::bluetooth::proxy::AclDataChannel::Credits::MarkPending()

NEW

+44

pw::bluetooth::proxy::AclDataChannel::SendCredit::operator=()

NEW

+44

pw::bluetooth::proxy::H4PacketInterface::operator=()

NEW

+44

pw::bluetooth::proxy::H4PacketWithH4::H4PacketWithH4()

NEW

+44

pw::bluetooth::proxy::L2capChannel::MaxL2capPayloadSize()

NEW

+44

pw::bluetooth::proxy::Recombiner::IsComplete()

NEW

+44

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::CreditBasedFlowControlTxEngine()

NEW

+44

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::GenericL2capChannelImpl()

NEW

+44

pw::bluetooth::proxy::internal::L2capChannelImpl::IsStale()

NEW

+44

pw::bluetooth::proxy::internal::L2capChannelImpl::L2capChannelImpl()

NEW

+44

pw::containers::internal::GenericAATree::end()

NEW

+42

pw::InlineBasicString<>::InlineBasicString()

NEW

+42

pw::Vector<>::emplace_back<>()

NEW

+42

pw::bluetooth::emboss::GenericL2capConfigureReqView<>::options()

NEW

+42

pw::bluetooth::emboss::LEReadBufferSizeV1CommandCompleteEvent::EmbossReservedValidatorForLeAclDataPacketLength::ValueIsOk<>()

NEW

+42

pw::bluetooth::emboss::LEReadBufferSizeV2CommandCompleteEvent::EmbossReservedValidatorForLeAclDataPacketLength::ValueIsOk<>()

NEW

+42

pw::bluetooth::proxy::AclDataChannel::SendCredit::~SendCredit()

NEW

+42

pw::bluetooth::proxy::L2capSignalingChannel::GetNextIdentifierAndIncrement()

NEW

+42

pw::bluetooth::proxy::internal::L2capChannelImpl::BlockWhileBorrowed()

NEW

+42

pw::containers::internal::AATreeItem::GetPredecessor()

NEW

+42

pw::containers::internal::AATreeItem::GetSuccessor()

NEW

+40

emboss::support::OffsetBitBlock<>::MaskInValue()

NEW

+40

pw::UniquePtr<>::UniquePtr<>()

NEW

+40

pw::bluetooth::proxy::AclDataChannel::Credits::MarkCompleted()

NEW

+40

pw::bluetooth::proxy::AclDataChannel::Credits::Remaining()

NEW

+40

pw::bluetooth::proxy::H4PacketInterface::Reset()

NEW

+40

pw::bluetooth::proxy::L2capChannelManager::RegisterChannel()

NEW

+40

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::MaxBasicL2capPayloadSize()

NEW

+40

pw::bluetooth::proxy::internal::GenericL2capChannel::GenericL2capChannel()

NEW

+40

pw::containers::internal::AATreeItem::SetLevel()

NEW

+40

pw::containers::internal::AATreeItem::~AATreeItem()

NEW

+40

pw::containers::internal::CheckIntrusiveContainerIsEmpty()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::multibuf::v1::MultiBufAllocator::~MultiBufAllocator()

NEW

+40

pw::string_impl::CheckedCastToSize<>()

NEW

+40

std::__2::__optional_move_base<>::__optional_move_base[abi:nqn240000]()

NEW

+40

vQueueDelete

NEW

+38

pw::DynamicMap<>::Node::~Node()

NEW

+38

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine::~CreditBasedFlowControlRxEngine()

NEW

+38

pw::containers::internal::AATreeItem::Replace()

NEW

+38

std::__2::optional<>::optional[abi:nqn240000]<>()

NEW

+36

fit::internal::generic_function_base<>::assign_function()

NEW

+36

pw::allocator::internal::ManagedPtr<>::operator*()

NEW

+36

pw::bluetooth::proxy::AclDataChannel::FindConnectionToDrain()

NEW

+36

pw::bluetooth::proxy::LockedL2capChannel::channel()

NEW

+36

pw::bluetooth::proxy::Recombiner::local_cid()

NEW

+36

pw::bluetooth::proxy::internal::(anonymous namespace)::GetLockedChannel()

NEW

+36

pw::containers::internal::GenericDeque<>::clear()

NEW

+36

pw::multibuf::v1::internal::LinkedRegionTracker::LinkedRegionTracker()

NEW

+36

std::__2::unique_lock<>::unlock[abi:nqn240000]()

NEW

+34

pw::Vector<>::clear()

NEW

+34

pw::bluetooth::proxy::AclDataChannel::Credits::Reset()

NEW

+34

pw::bluetooth::proxy::AclDataChannel::HasAclConnection()

NEW

+34

pw::containers::internal::GenericDequeBase<>::SwapIndices()

NEW

+34

std::__2::__lower_bound[abi:nqn240000]<>()

NEW

+34

std::__2::__uninitialized_move[abi:nqn240000]<>()

NEW

+32

emboss::support::GenericArrayView<>::IndexOperatorHelper<>::UncheckedConstructElement()

NEW

+32

fit::internal::make_the_call<>()::{lambda()#1}::operator()()

NEW

+32

pw::IntrusiveMap<>::IntrusiveMap()

NEW

+32

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+32

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedVirtualPayloadSizeView::Ok()

NEW

+32

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+32

pw::bluetooth::emboss::LEConnectionCompleteSubevent::EmbossReservedValidatorForConnectionHandle::ValueIsOk<>()

NEW

+32

pw::bluetooth::emboss::LEConnectionCompleteSubevent::EmbossReservedValidatorForPeripheralLatency::ValueIsOk<>()

NEW

+32

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV1::EmbossReservedValidatorForConnectionHandle::ValueIsOk<>()

NEW

+32

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV1::EmbossReservedValidatorForPeripheralLatency::ValueIsOk<>()

NEW

+32

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV2::EmbossReservedValidatorForConnectionHandle::ValueIsOk<>()

NEW

+32

pw::bluetooth::emboss::LEEnhancedConnectionCompleteSubeventV2::EmbossReservedValidatorForPeripheralLatency::ValueIsOk<>()

NEW

+32

pw::bluetooth::proxy::AclDataChannel::HandleConnectionCompleteEvent()

NEW

+32

pw::bluetooth::proxy::ProxyHost::HandleAclFromController()

NEW

+32

pw::bluetooth::proxy::ProxyHost::HandleAclFromHost()

NEW

+32

pw::bluetooth::proxy::internal::BasicModeTxEngine

NEW

+32

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine

NEW

+32

pw::multibuf::v1::ChunkRegionTracker

NEW

+32

pw::multibuf::v1::MultiBuf::begin()

NEW

+32

pw::multibuf::v1::MultiBufAllocator::MultiBufAllocator()

NEW

+32

pw::multibuf::v1::internal::LinkedRegionTracker

NEW

+32

std::__2::__generic_get[abi:nqn240000]<>()

NEW

+32

std::__2::__move_impl<>::operator()[abi:nqn240000]<>()

NEW

+32

std::__2::bitset<>::test[abi:nqn240000]()

NEW

+30

pw::bluetooth::emboss::ConnectionCompleteEvent::EmbossReservedValidatorForConnectionHandle::ValueIsOk<>()

NEW

+30

pw::bluetooth::emboss::DisconnectionCompleteEvent::EmbossReservedValidatorForConnectionHandle::ValueIsOk<>()

NEW

+30

pw::bluetooth::proxy::L2capChannel::rx_engine()

NEW

+30

pw::bluetooth::proxy::L2capChannel::tx_engine()

NEW

+30

pw::bluetooth::proxy::internal::GenericL2capChannel::~GenericL2capChannel()

NEW

+30

pw::containers::internal::AATreeItem::SetRight()

NEW

+30

std::__2::__optional_storage_base<>::__construct_from[abi:nqn240000]<>()

NEW

+28

pw::DynamicDeque<>::swap()

NEW

+28

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::has_broadcast_flag()

NEW

+28

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::has_handle()

NEW

+28

pw::bluetooth::emboss::GenericAclDataFrameHeaderView<>::has_packet_boundary_flag()

NEW

+28

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+28

pw::bluetooth::emboss::GenericFirstKFrameView<>::EmbossReservedVirtualPayloadSizeView::UncheckedRead()

NEW

+28

pw::bluetooth::emboss::GenericSubsequentKFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+28

pw::bluetooth::proxy::AclDataChannel::AclConnection::operator=()

NEW

+28

pw::bluetooth::proxy::ChannelProxy

NEW

+28

pw::bluetooth::proxy::HciTransport::~HciTransport()

NEW

+28

pw::bluetooth::proxy::L2capChannelManager

NEW

+28

pw::bluetooth::proxy::ProxyHost

NEW

+28

pw::bluetooth::proxy::ProxyHost::InternalDoInterceptBasicModeChannel()

NEW

+28

pw::bluetooth::proxy::internal::BasicModeRxEngine

NEW

+28

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine

NEW

+28

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::ReportNewTxPacketsOrCredits()

NEW

+28

pw::containers::internal::AATreeItem::SetLeft()

NEW

+28

pw::containers::internal::GenericDequeBase<>::MoveAssignIndices()

NEW

+28

pw::multibuf::v1::ChunkRegionTracker::~ChunkRegionTracker()

NEW

+28

std::__2::__copy_move_unwrap_iters[abi:nqn240000]<>()

NEW

+26

pw::DynamicDeque<>::~DynamicDeque()

NEW

+26

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::command_header()

NEW

+26

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::header()

NEW

+26

pw::bluetooth::emboss::GenericReadBufferSizeCommandCompleteEventView<>::total_num_acl_data_packets()

NEW

+26

pw::bluetooth::proxy::L2capChannel::StopAndSendEvent()

NEW

+26

pw::bluetooth::proxy::L2capChannel::state()

NEW

+26

pw::containers::internal::GenericAATree::begin()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+26

std::__2::array<>::array()

NEW

+24

__aeabi_uidivmod

NEW

+24

__aeabi_uread4

NEW

+24

emboss::support::Equal<>()

NEW

+24

malloc

NEW

+24

prvIsQueueEmpty

NEW

+24

pw::Allocator::Resize()

NEW

+24

pw::DynamicMap<>::take()

NEW

+24

pw::IntrusiveMap<>::lower_bound()

NEW

+24

pw::allocator::internal::ManagedPtr<>::Destroy()

NEW

+24

pw::bluetooth::emboss::AclDataFrameHeader::GenericEmbossReservedAnonymousField4View<>::broadcast_flag()

NEW

+24

pw::bluetooth::emboss::AclDataFrameHeader::GenericEmbossReservedAnonymousField4View<>::handle()

NEW

+24

pw::bluetooth::emboss::AclDataFrameHeader::GenericEmbossReservedAnonymousField4View<>::packet_boundary_flag()

NEW

+24

pw::bluetooth::emboss::GenericAclDataFrameView<>::data_total_length()

NEW

+24

pw::bluetooth::emboss::GenericAclDataFrameView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericBFrameView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericBdAddrView<>::bd_addr()

NEW

+24

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::command_opcode()

NEW

+24

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::command_opcode_bits()

NEW

+24

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::command_opcode_uint()

NEW

+24

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::num_hci_command_packets()

NEW

+24

pw::bluetooth::emboss::GenericCommandHeaderView<>::opcode()

NEW

+24

pw::bluetooth::emboss::GenericCommandHeaderView<>::opcode_bits()

NEW

+24

pw::bluetooth::emboss::GenericCommandHeaderView<>::parameter_total_size()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::bd_addr()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::encryption_enabled()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::link_type()

NEW

+24

pw::bluetooth::emboss::GenericConnectionCompleteEventView<>::status()

NEW

+24

pw::bluetooth::emboss::GenericDisconnectionCompleteEventView<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericDisconnectionCompleteEventView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericDisconnectionCompleteEventView<>::reason()

NEW

+24

pw::bluetooth::emboss::GenericDisconnectionCompleteEventView<>::status()

NEW

+24

pw::bluetooth::emboss::GenericGenericHciCommandView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigurationOptionHeaderView<>::option_length()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigurationOptionHeaderView<>::option_type()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigureReqView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigureReqView<>::destination_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigureRspView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigureRspView<>::result()

NEW

+24

pw::bluetooth::emboss::GenericL2capConfigureRspView<>::source_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionReqView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionReqView<>::psm()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionReqView<>::source_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::destination_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::result()

NEW

+24

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::source_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionReqView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionReqView<>::destination_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionReqView<>::source_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionRspView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionRspView<>::destination_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capDisconnectionRspView<>::source_cid()

NEW

+24

pw::bluetooth::emboss::GenericL2capFlowControlCreditIndView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericL2capMtuConfigurationOptionView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericL2capMtuConfigurationOptionView<>::mtu()

NEW

+24

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::command_header()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::central_clock_accuracy()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::connection_interval()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::le_meta_event()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::peer_address()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::peer_address_type()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::peripheral_latency()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::role()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::status()

NEW

+24

pw::bluetooth::emboss::GenericLEConnectionCompleteSubeventView<>::supervision_timeout()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::central_clock_accuracy()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::connection_interval()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::le_meta_event()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::local_resolvable_private_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::peer_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::peer_address_type()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::peer_resolvable_private_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::peripheral_latency()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::role()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::status()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV1View<>::supervision_timeout()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::advertising_handle()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::central_clock_accuracy()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::connection_interval()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::le_meta_event()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::local_resolvable_private_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::peer_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::peer_address_type()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::peer_resolvable_private_address()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::peripheral_latency()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::role()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::status()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::supervision_timeout()

NEW

+24

pw::bluetooth::emboss::GenericLEEnhancedConnectionCompleteSubeventV2View<>::sync_handle()

NEW

+24

pw::bluetooth::emboss::GenericLEMetaEventView<>::header()

NEW

+24

pw::bluetooth::emboss::GenericLEMetaEventView<>::subevent_code()

NEW

+24

pw::bluetooth::emboss::GenericLEMetaEventView<>::subevent_code_enum()

NEW

+24

pw::bluetooth::emboss::GenericLEReadBufferSizeV1CommandCompleteEventView<>::le_acl_data_packet_length()

NEW

+24

pw::bluetooth::emboss::GenericLEReadBufferSizeV1CommandCompleteEventView<>::total_num_le_acl_data_packets()

NEW

+24

pw::bluetooth::emboss::GenericLEReadBufferSizeV2CommandCompleteEventView<>::le_acl_data_packet_length()

NEW

+24

pw::bluetooth::emboss::GenericLEReadBufferSizeV2CommandCompleteEventView<>::total_num_le_acl_data_packets()

NEW

+24

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventDataView<>::connection_handle()

NEW

+24

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventDataView<>::num_completed_packets()

NEW

+24

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::num_handles()

NEW

+24

pw::bluetooth::emboss::GenericReadBufferSizeCommandCompleteEventView<>::acl_data_packet_length()

NEW

+24

pw::bluetooth::emboss::L2capFlowControlCreditInd::EmbossReservedValidatorForCredits::ValueIsOk<>()

NEW

+24

pw::bluetooth::emboss::ReadBufferSizeCommandCompleteEvent::EmbossReservedValidatorForAclDataPacketLength::ValueIsOk<>()

NEW

+24

pw::bluetooth::proxy::H4PacketInterface

NEW

+24

pw::bluetooth::proxy::H4PacketWithH4

NEW

+24

pw::bluetooth::proxy::H4PacketWithHci

NEW

+24

pw::bluetooth::proxy::L2capChannel

NEW

+24

pw::bluetooth::proxy::LockedL2capChannel::LockedL2capChannel()

NEW

+24

pw::bluetooth::proxy::ProxyHost::DoReset()

NEW

+24

pw::bluetooth::proxy::internal::L2capChannelImpl::PayloadQueueEmpty()

NEW

+24

pw::containers::internal::AATreeItem::GetLevel()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericIntrusiveList<>::~GenericIntrusiveList()

NEW

+24

pw::containers::internal::IntrusiveListItemBase<>::unlist()

NEW

+24

pw::containers::internal::OptionalData<>::Assign<>()

NEW

+24

pw::multibuf::v1::Chunk::RemoveFromRegionList()

NEW

+24

pw::multibuf::v1::ChunkRegionTracker::ChunkRegionTracker()

NEW

+24

pw::multibuf::v1::MultiBufAllocator

NEW

+24

pw::multibuf::v1::SimpleAllocator

NEW

+24

realloc

NEW

+24

std::__2::__optional_storage_base<>::__construct[abi:nqn240000]<>()

NEW

+22

fit::internal::inline_trivial_target_move<>()

NEW

+22

pw::DynamicMap<>::lower_bound()

NEW

+22

pw::allocator::LibCAllocator::DoReallocate()

NEW

+22

pw::bluetooth::emboss::GenericBFrameView<>::channel_id()

NEW

+22

pw::bluetooth::emboss::GenericBFrameView<>::pdu_length()

NEW

+22

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::data_length()

NEW

+22

pw::containers::internal::GenericDeque<>::CheckCapacityAdd()

NEW

+22

pw::containers::internal::IntrusiveListItemBase<>::~IntrusiveListItemBase()

NEW

+22

pw::multibuf::v1::MultiBufChunks::Release()

NEW

+22

pw::multibuf::v1::MultiBufChunks::operator=()

NEW

+22

std::__2::lower_bound[abi:nqn240000]<>()

NEW

+20

__aeabi_fcmpeq

NEW

+20

__aeabi_fcmpge

NEW

+20

__aeabi_fcmpgt

NEW

+20

__aeabi_fcmple

NEW

+20

__aeabi_fcmplt

NEW

+20

pvTaskIncrementMutexHeldCount

NEW

+20

pw::bluetooth::proxy::AclDataChannel::ConnectionDelegate::HandleAclDataReturn::operator=()

NEW

+20

pw::bluetooth::proxy::L2capChannelManager::ForceDrainChannelQueues()

NEW

+20

pw::bluetooth::proxy::ProxyHost::DoInterceptBasicModeChannel()

NEW

+20

pw::bluetooth::proxy::internal::GenericL2capChannel

NEW

+20

pw::bluetooth::proxy::internal::L2capChannelImpl::~L2capChannelImpl()

NEW

+20

pw::bluetooth::proxy::internal::L2capLogicalLink

NEW

+20

pw::containers::Pair<>::Pair()

NEW

+20

pw::containers::Pair<>::operator=()

NEW

+20

pw::multibuf::v1::MultiBuf::ClaimPrefix()

NEW

+20

pw::multibuf::v1::MultiBuf::const_iterator::AdvanceToData()

NEW

+20

pw::multibuf::v1::MultiBufChunks::size_bytes()

NEW

+20

pw::multibuf::v1::OwnedChunk::Release()

NEW

+20

pw::multibuf::v1::internal::LinkedRegionTracker::DeallocateChunkClass()

NEW

+20

std::__2::uninitialized_move[abi:nqn240000]<>()

NEW

+20

std::__2::unique_lock<>::~unique_lock[abi:nqn240000]()

NEW

+18

pw::Allocator::Allocate()

NEW

+18

pw::allocator::LibCAllocator::DoAllocate()

NEW

+18

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::SizeInBytes()

NEW

+18

pw::bluetooth::proxy::L2capChannel::Write()

NEW

+18

pw::bluetooth::proxy::L2capStatusTracker::~L2capStatusTracker()

NEW

+18

pw::containers::FlatMap<>::FlatMap()

NEW

+18

pw::containers::internal::GenericAATree::~GenericAATree()

NEW

+18

pw::containers::internal::LegacyIntrusiveList<>::Item::~Item()

NEW

+18

pw::multibuf::v1::internal::LinkedRegionTracker::AllocateChunkClass()

NEW

+18

std::__2::move[abi:nqn240000]<>()

NEW

+16

_GLOBAL__sub_I_l2cap_channel_manager.cc

NEW

+16

_GLOBAL__sub_I_l2cap_channel_sync.cc

NEW

+16

emboss::support::GenericArrayView<>::operator[]()

NEW

+16

pw::DynamicMap<>::swap()

NEW

+16

pw::bluetooth::emboss::GenericAclDataFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericBFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericCommandCompleteEventView<>::EmbossReservedVirtualReturnParametersSizeView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericGenericHciCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericLEMetaEventView<>::EmbossReservedVirtualReturnParametersSizeView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::Ok()

NEW

+16

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedVirtualDataLengthView::Ok()

NEW

+16

pw::bluetooth::proxy::AclDataChannel::SendCredit::SendCredit()

NEW

+16

pw::bluetooth::proxy::H4PacketWithH4::CopyFrom()

NEW

+16

pw::bluetooth::proxy::H4PacketWithH4::DoGetH4Type()

NEW

+16

pw::bluetooth::proxy::L2capChannelManager::MaxDataPacketLengthForTransport()

NEW

+16

pw::bluetooth::proxy::internal::BorrowedL2capChannel::operator=()

NEW

+16

pw::bluetooth::proxy::internal::CreditBasedFlowControlRxEngine::Reset()

NEW

+16

pw::bluetooth::proxy::internal::L2capLogicalLink::Init()

NEW

+16

pw::containers::internal::GenericAATree::SetRoot()

NEW

+16

pw::containers::internal::GenericIntrusiveList<>::clear()

NEW

+16

pw::containers::internal::LegacyIntrusiveList<>::~LegacyIntrusiveList()

NEW

+16

std::__2::__throw_system_error()

NEW

+14

pw::bluetooth::emboss::GenericAclDataFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericBFrameView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericGenericHciCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericL2capConnectionRspView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericL2capSignalingCommandView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedDollarVirtualIntrinsicSizeInBytesView::UncheckedRead()

NEW

+14

pw::bluetooth::emboss::GenericNumberOfCompletedPacketsEventView<>::EmbossReservedVirtualDataLengthView::UncheckedRead()

NEW

+14

pw::bluetooth::proxy::H4PacketWithH4::~H4PacketWithH4()

NEW

+14

pw::bluetooth::proxy::H4PacketWithHci::~H4PacketWithHci()

NEW

+14

pw::bluetooth::proxy::L2capChannel::DrainChannelQueuesIfNewTx()

NEW

+14

pw::bluetooth::proxy::L2capChannel::EndRecombinationBuf()

NEW

+14

pw::bluetooth::proxy::L2capSignalingChannel::HandlePayloadFromController()

NEW

+14

pw::bluetooth::proxy::L2capSignalingChannel::HandlePayloadFromHost()

NEW

+14

pw::bluetooth::proxy::internal::L2capChannelImpl::ReportNewTxPacketsOrCredits()

NEW

+14

pw::containers::FlatMap<>::IsItemKeyLessThanGivenKey()

NEW

+14

pw::containers::internal::AATreeItem::GetLeftmost()

NEW

+14

pw::containers::internal::AATreeItem::GetRightmost()

NEW

+14

pw::containers::internal::AATreeItem::GetRoot()

NEW

+14

pw::multibuf::v1::MultiBuf::CopyFrom()

NEW

+14

pw::multibuf::v1::MultiBuf::iterator::end()

NEW

+14

pw::multibuf::v1::SimpleAllocator::DoGetBackingCapacity()

NEW

+12

pw::bluetooth::emboss::GenericOpCodeBitsView<>::ocf()

NEW

+12

pw::bluetooth::emboss::GenericOpCodeBitsView<>::ogf()

NEW

+12

pw::bluetooth::proxy::AclDataChannel::Credits::Available()

NEW

+12

pw::bluetooth::proxy::H4PacketWithH4::DoSetH4Type()

NEW

+12

pw::bluetooth::proxy::L2capChannel::ReportNewTxPacketsOrCredits()

NEW

+12

pw::bluetooth::proxy::L2capChannelManager::DeliverPendingEvents()

NEW

+12

pw::bluetooth::proxy::L2capChannelManager::HandleConfigurationChanged()

NEW

+12

pw::bluetooth::proxy::internal::ChannelProxyImpl::DoSendAdditionalRxCredits()

NEW

+12

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::HandlePduFromHost()

NEW

+12

pw::multibuf::v1::Chunk::Truncate()

NEW

+12

std::__2::__optional_storage_base<>::value[abi:nqn240000]()

NEW

+12

std::__2::__throw_bad_optional_access[abi:nqn240000]()

NEW

+12

std::__2::__throw_bad_variant_access[abi:nqn240000]()

NEW

+12

std::__2::__throw_out_of_range[abi:nqn240000]()

NEW

+12

xTaskGetCurrentTaskHandle

NEW

+10

pw::allocator::LibCAllocator::DoDeallocate()

NEW

+10

pw::allocator::LibCAllocator::~LibCAllocator()

NEW

+10

pw::bluetooth::proxy::L2capChannel::AllocateH4()

NEW

+10

pw::bluetooth::proxy::L2capChannelManager::HandleConnectionComplete()

NEW

+10

pw::bluetooth::proxy::internal::BasicModeRxEngine::~BasicModeRxEngine()

NEW

+10

pw::bluetooth::proxy::internal::BasicModeTxEngine::AddCredits()

NEW

+10

pw::bluetooth::proxy::internal::BasicModeTxEngine::~BasicModeTxEngine()

NEW

+10

pw::bluetooth::proxy::internal::ChannelProxyImpl::DoIsWriteAvailable()

NEW

+10

pw::bluetooth::proxy::internal::ChannelProxyImpl::DoWrite()

NEW

+10

pw::bluetooth::proxy::internal::CreditBasedFlowControlTxEngine::~CreditBasedFlowControlTxEngine()

NEW

+10

pw::bluetooth::proxy::internal::L2capChannelImpl::ClearQueue()

NEW

+10

pw::containers::internal::AATreeItem::Reset()

NEW

+10

pw::containers::internal::GenericAATree::swap()

NEW

+10

pw::multibuf::v1::Chunk::DiscardPrefix()

NEW

+10

pw::multibuf::v1::internal::LinkedRegionTracker::Region()

NEW

+8

pw::allocator::AbstractAllocator::DoMeasureFragmentation()

NEW

+8

pw::allocator::GetLibCAllocator()

NEW

+8

pw::bluetooth::proxy::ProxyHost::HandleH4HciFromController()

NEW

+8

pw::bluetooth::proxy::ProxyHost::HandleH4HciFromHost()

NEW

+8

pw::bluetooth::proxy::ProxyHost::Reset()

NEW

+6

pw::allocator::AbstractAllocator::DoGetAllocated()

NEW

+6

pw::allocator::AbstractAllocator::DoGetInfo()

NEW

+6

pw::bluetooth::proxy::L2capChannelManagerInterface::DoInterceptBasicModeChannel()

NEW

+6

pw::bluetooth::proxy::internal::BasicModeRxEngine::AddRxCredits()

NEW

+6

pw::bluetooth::proxy::internal::BorrowedL2capChannel::operator->()

NEW

+4

pw::allocator::AbstractAllocator::DoResize()

NEW

+4

pw::bluetooth::proxy::ChannelProxy::~ChannelProxy()

NEW

+4

pw::bluetooth::proxy::H4PacketWithHci::DoGetH4Type()

NEW

+4

pw::bluetooth::proxy::H4PacketWithHci::DoSetH4Type()

NEW

+4

pw::bluetooth::proxy::internal::GenericL2capChannelImpl::Init()

NEW

+4

pw::bluetooth::proxy::internal::RxEngine::Reset()

NEW

+4

std::__2::nullopt

NEW

+2

__cxa_pure_virtual

NEW

+2

fit::internal::inline_target_get()

NEW

+2

pw::Deallocator::~Deallocator()

NEW

+2

pw::bluetooth::proxy::internal::RxEngine::~RxEngine()

NEW

+2

pw::bluetooth::proxy::internal::TxEngine::~TxEngine()

+99,484

RAM

+8

[section .data]

NEW

+80

xQueueRegistry

NEW

+72

pw::bluetooth::proxy::internal::L2capChannelImpl::static_mutex_

NEW

+72

pw::bluetooth::proxy::internal::L2capChannelManagerImpl::channels_mutex_

NEW

+8

pw::allocator::GetLibCAllocator()::kInstance

NEW

+8

pw::sync::backend::NativeThreadNotification::shared_spin_lock

+248

Roadmap#

  • ACL flow control

  • Sending GATT notifications

  • CMake support

  • Receiving GATT notifications

  • Taking ownership of a L2CAP channel

  • Bazel support

  • And more…

Crash recovery#

The proxy can be configured to persist its state and gracefully resume after a crash without resetting the Bluetooth subsystem or dropping active connections. See Crash recovery for the crash recovery guide, architecture overview, and container orchestration requirements.

Security#

See pw_bluetooth_proxy threat model for the module-specific threat model.