Loading system/main/shim/l2c_api.cc +19 −23 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ #include "stack/include/acl_hci_link_interface.h" #include "stack/include/btm_api.h" using bluetooth::hci::AddressWithType; using namespace bluetooth::l2cap; static bluetooth::shim::legacy::L2cap shim_l2cap; // Helper: L2cap security enforcement shim Loading Loading @@ -409,32 +412,24 @@ bool bluetooth::shim::L2CA_GetPeerFeatures(const RawAddress& bd_addr, return false; } using bluetooth::hci::AddressWithType; using bluetooth::l2cap::le::DynamicChannel; using bluetooth::l2cap::le::DynamicChannelManager; using bluetooth::l2cap::le::DynamicChannelService; using bluetooth::l2cap::le::FixedChannel; using bluetooth::l2cap::le::FixedChannelManager; using bluetooth::l2cap::le::FixedChannelService; static constexpr uint16_t kAttCid = 4; static constexpr uint16_t kSmpCid = 6; struct LeFixedChannelHelper { LeFixedChannelHelper(uint16_t cid) : cid_(cid) {} uint16_t cid_; void on_registration_complete(FixedChannelManager::RegistrationResult result, std::unique_ptr<FixedChannelService> service) { if (result != FixedChannelManager::RegistrationResult::SUCCESS) { void on_registration_complete( le::FixedChannelManager::RegistrationResult result, std::unique_ptr<le::FixedChannelService> service) { if (result != le::FixedChannelManager::RegistrationResult::SUCCESS) { LOG(ERROR) << "Channel is not registered. cid=" << +cid_; return; } channel_service_ = std::move(service); } std::unique_ptr<FixedChannelService> channel_service_ = nullptr; std::unique_ptr<le::FixedChannelService> channel_service_ = nullptr; void on_channel_close(bluetooth::hci::AddressWithType device, bluetooth::hci::ErrorCode error_code) { Loading @@ -445,7 +440,7 @@ struct LeFixedChannelHelper { (freg_.pL2CA_FixedConn_Cb)(cid_, address, true, 0, 2); } void on_channel_open(std::unique_ptr<FixedChannel> channel) { void on_channel_open(std::unique_ptr<le::FixedChannel> channel) { auto device = channel->GetDevice(); channel->RegisterOnCloseCallback( bluetooth::shim::GetGdShimHandler(), Loading Loading @@ -486,7 +481,7 @@ struct LeFixedChannelHelper { } void on_outgoing_connection_fail( RawAddress remote, FixedChannelManager::ConnectionResult result) { RawAddress remote, le::FixedChannelManager::ConnectionResult result) { LOG(ERROR) << "Outgoing connection failed"; freg_.pL2CA_FixedConn_Cb(cid_, remote, true, 0, BT_TRANSPORT_LE); } Loading @@ -503,7 +498,8 @@ struct LeFixedChannelHelper { return true; } std::unordered_map<AddressWithType, std::unique_ptr<FixedChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<le::FixedChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<bluetooth::os::EnqueueBuffer< bluetooth::packet::BasePacketBuilder>>> Loading Loading @@ -704,16 +700,16 @@ struct LeDynamicChannelHelper { } void on_registration_complete( DynamicChannelManager::RegistrationResult result, std::unique_ptr<DynamicChannelService> service) { if (result != DynamicChannelManager::RegistrationResult::SUCCESS) { le::DynamicChannelManager::RegistrationResult result, std::unique_ptr<le::DynamicChannelService> service) { if (result != le::DynamicChannelManager::RegistrationResult::SUCCESS) { LOG(ERROR) << "Channel is not registered. psm=" << +psm_ << (int)result; return; } channel_service_ = std::move(service); } std::unique_ptr<DynamicChannelService> channel_service_ = nullptr; std::unique_ptr<le::DynamicChannelService> channel_service_ = nullptr; void Connect(bluetooth::hci::AddressWithType device) { if (channel_service_ == nullptr) { Loading Loading @@ -776,7 +772,7 @@ struct LeDynamicChannelHelper { } } void on_channel_open(std::unique_ptr<DynamicChannel> channel) { void on_channel_open(std::unique_ptr<le::DynamicChannel> channel) { auto device = channel->GetDevice(); channel->RegisterOnCloseCallback( bluetooth::shim::GetGdShimHandler()->BindOnceOn( Loading Loading @@ -822,7 +818,7 @@ struct LeDynamicChannelHelper { } void on_outgoing_connection_fail( DynamicChannelManager::ConnectionResult result) { le::DynamicChannelManager::ConnectionResult result) { LOG(ERROR) << "Outgoing connection failed"; } Loading @@ -845,7 +841,7 @@ struct LeDynamicChannelHelper { return static_cast<uint16_t>(channels_[remote]->GetMtu()); } std::unordered_map<AddressWithType, std::unique_ptr<DynamicChannel>> std::unordered_map<AddressWithType, std::unique_ptr<le::DynamicChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<bluetooth::os::EnqueueBuffer< Loading Loading
system/main/shim/l2c_api.cc +19 −23 Original line number Diff line number Diff line Loading @@ -33,6 +33,9 @@ #include "stack/include/acl_hci_link_interface.h" #include "stack/include/btm_api.h" using bluetooth::hci::AddressWithType; using namespace bluetooth::l2cap; static bluetooth::shim::legacy::L2cap shim_l2cap; // Helper: L2cap security enforcement shim Loading Loading @@ -409,32 +412,24 @@ bool bluetooth::shim::L2CA_GetPeerFeatures(const RawAddress& bd_addr, return false; } using bluetooth::hci::AddressWithType; using bluetooth::l2cap::le::DynamicChannel; using bluetooth::l2cap::le::DynamicChannelManager; using bluetooth::l2cap::le::DynamicChannelService; using bluetooth::l2cap::le::FixedChannel; using bluetooth::l2cap::le::FixedChannelManager; using bluetooth::l2cap::le::FixedChannelService; static constexpr uint16_t kAttCid = 4; static constexpr uint16_t kSmpCid = 6; struct LeFixedChannelHelper { LeFixedChannelHelper(uint16_t cid) : cid_(cid) {} uint16_t cid_; void on_registration_complete(FixedChannelManager::RegistrationResult result, std::unique_ptr<FixedChannelService> service) { if (result != FixedChannelManager::RegistrationResult::SUCCESS) { void on_registration_complete( le::FixedChannelManager::RegistrationResult result, std::unique_ptr<le::FixedChannelService> service) { if (result != le::FixedChannelManager::RegistrationResult::SUCCESS) { LOG(ERROR) << "Channel is not registered. cid=" << +cid_; return; } channel_service_ = std::move(service); } std::unique_ptr<FixedChannelService> channel_service_ = nullptr; std::unique_ptr<le::FixedChannelService> channel_service_ = nullptr; void on_channel_close(bluetooth::hci::AddressWithType device, bluetooth::hci::ErrorCode error_code) { Loading @@ -445,7 +440,7 @@ struct LeFixedChannelHelper { (freg_.pL2CA_FixedConn_Cb)(cid_, address, true, 0, 2); } void on_channel_open(std::unique_ptr<FixedChannel> channel) { void on_channel_open(std::unique_ptr<le::FixedChannel> channel) { auto device = channel->GetDevice(); channel->RegisterOnCloseCallback( bluetooth::shim::GetGdShimHandler(), Loading Loading @@ -486,7 +481,7 @@ struct LeFixedChannelHelper { } void on_outgoing_connection_fail( RawAddress remote, FixedChannelManager::ConnectionResult result) { RawAddress remote, le::FixedChannelManager::ConnectionResult result) { LOG(ERROR) << "Outgoing connection failed"; freg_.pL2CA_FixedConn_Cb(cid_, remote, true, 0, BT_TRANSPORT_LE); } Loading @@ -503,7 +498,8 @@ struct LeFixedChannelHelper { return true; } std::unordered_map<AddressWithType, std::unique_ptr<FixedChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<le::FixedChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<bluetooth::os::EnqueueBuffer< bluetooth::packet::BasePacketBuilder>>> Loading Loading @@ -704,16 +700,16 @@ struct LeDynamicChannelHelper { } void on_registration_complete( DynamicChannelManager::RegistrationResult result, std::unique_ptr<DynamicChannelService> service) { if (result != DynamicChannelManager::RegistrationResult::SUCCESS) { le::DynamicChannelManager::RegistrationResult result, std::unique_ptr<le::DynamicChannelService> service) { if (result != le::DynamicChannelManager::RegistrationResult::SUCCESS) { LOG(ERROR) << "Channel is not registered. psm=" << +psm_ << (int)result; return; } channel_service_ = std::move(service); } std::unique_ptr<DynamicChannelService> channel_service_ = nullptr; std::unique_ptr<le::DynamicChannelService> channel_service_ = nullptr; void Connect(bluetooth::hci::AddressWithType device) { if (channel_service_ == nullptr) { Loading Loading @@ -776,7 +772,7 @@ struct LeDynamicChannelHelper { } } void on_channel_open(std::unique_ptr<DynamicChannel> channel) { void on_channel_open(std::unique_ptr<le::DynamicChannel> channel) { auto device = channel->GetDevice(); channel->RegisterOnCloseCallback( bluetooth::shim::GetGdShimHandler()->BindOnceOn( Loading Loading @@ -822,7 +818,7 @@ struct LeDynamicChannelHelper { } void on_outgoing_connection_fail( DynamicChannelManager::ConnectionResult result) { le::DynamicChannelManager::ConnectionResult result) { LOG(ERROR) << "Outgoing connection failed"; } Loading @@ -845,7 +841,7 @@ struct LeDynamicChannelHelper { return static_cast<uint16_t>(channels_[remote]->GetMtu()); } std::unordered_map<AddressWithType, std::unique_ptr<DynamicChannel>> std::unordered_map<AddressWithType, std::unique_ptr<le::DynamicChannel>> channels_; std::unordered_map<AddressWithType, std::unique_ptr<bluetooth::os::EnqueueBuffer< Loading