Loading system/gd/hci/acl_manager/le_acl_connection.cc +2 −4 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <bluetooth/log.h> #include <bluetooth/log.h> #include "hci/acl_manager/le_connection_management_callbacks.h" #include "hci/acl_manager/le_connection_management_callbacks.h" #include "hci/event_checkers.h" #include "os/metrics.h" #include "os/metrics.h" using bluetooth::hci::Address; using bluetooth::hci::Address; Loading Loading @@ -234,10 +235,7 @@ bool LeAclConnection::LeConnectionUpdate( supervision_timeout, supervision_timeout, min_ce_length, min_ce_length, max_ce_length), max_ce_length), pimpl_->tracker.client_handler_->BindOnce([](CommandStatusView status) { pimpl_->tracker.client_handler_->BindOnce(check_status<LeConnectionUpdateStatusView>)); ASSERT(status.IsValid()); ASSERT(status.GetCommandOpCode() == OpCode::LE_CONNECTION_UPDATE); })); return true; return true; } } Loading system/main/shim/acl.cc +31 −0 Original line number Original line Diff line number Diff line Loading @@ -849,6 +849,13 @@ class LeShimAclConnection return connection_->IsInFilterAcceptList(); return connection_->IsInFilterAcceptList(); } } void UpdateConnectionParameters(uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { connection_->LeConnectionUpdate(conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } private: private: OnDisconnect on_disconnect_; OnDisconnect on_disconnect_; const shim::legacy::acl_le_link_interface_t interface_; const shim::legacy::acl_le_link_interface_t interface_; Loading Loading @@ -1092,6 +1099,21 @@ struct shim::legacy::Acl::impl { } } } } void update_connection_parameters(uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { auto connection = handle_to_le_connection_map_.find(handle); if (connection == handle_to_le_connection_map_.end()) { LOG_WARN("Unknown le connection handle:0x%04x", handle); return; } connection->second->UpdateConnectionParameters(conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } void accept_le_connection_from(const hci::AddressWithType& address_with_type, void accept_le_connection_from(const hci::AddressWithType& address_with_type, bool is_direct, std::promise<bool> promise) { bool is_direct, std::promise<bool> promise) { if (shadow_acceptlist_.IsFull()) { if (shadow_acceptlist_.IsFull()) { Loading Loading @@ -1768,6 +1790,15 @@ void shim::legacy::Acl::DisconnectLe(uint16_t handle, tHCI_STATUS reason, comment); comment); } } void shim::legacy::Acl::UpdateConnectionParameters( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { handler_->CallOn(pimpl_.get(), &Acl::impl::update_connection_parameters, handle, conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval, bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval, uint16_t min_interval) { uint16_t min_interval) { handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval, handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval, Loading system/main/shim/acl.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -84,6 +84,10 @@ class Acl : public hci::acl_manager::ConnectionCallbacks, std::string comment) override; std::string comment) override; void DisconnectLe(uint16_t handle, tHCI_REASON reason, void DisconnectLe(uint16_t handle, tHCI_REASON reason, std::string comment) override; std::string comment) override; void UpdateConnectionParameters(uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) override; // Address Resolution List // Address Resolution List void AddToAddressResolution(const hci::AddressWithType& address_with_type, void AddToAddressResolution(const hci::AddressWithType& address_with_type, Loading system/main/shim/acl_api.cc +9 −0 Original line number Original line Diff line number Diff line Loading @@ -76,6 +76,15 @@ void bluetooth::shim::ACL_Flush(uint16_t handle) { Stack::GetInstance()->GetAcl()->Flush(handle); Stack::GetInstance()->GetAcl()->Flush(handle); } } void bluetooth::shim::ACL_SendConnectionParameterUpdateRequest( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { Stack::GetInstance()->GetAcl()->UpdateConnectionParameters( handle, conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) { void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) { hci::LeAddressManager::AddressPolicy address_policy = hci::LeAddressManager::AddressPolicy address_policy = is_le_privacy_enabled is_le_privacy_enabled Loading system/main/shim/acl_api.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,10 @@ void ACL_ClearFilterAcceptList(); void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max, void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout); uint16_t sup_tout); void ACL_SendConnectionParameterUpdateRequest( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len); void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min, void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout); uint16_t cont_num, uint16_t sup_tout); Loading Loading
system/gd/hci/acl_manager/le_acl_connection.cc +2 −4 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <bluetooth/log.h> #include <bluetooth/log.h> #include "hci/acl_manager/le_connection_management_callbacks.h" #include "hci/acl_manager/le_connection_management_callbacks.h" #include "hci/event_checkers.h" #include "os/metrics.h" #include "os/metrics.h" using bluetooth::hci::Address; using bluetooth::hci::Address; Loading Loading @@ -234,10 +235,7 @@ bool LeAclConnection::LeConnectionUpdate( supervision_timeout, supervision_timeout, min_ce_length, min_ce_length, max_ce_length), max_ce_length), pimpl_->tracker.client_handler_->BindOnce([](CommandStatusView status) { pimpl_->tracker.client_handler_->BindOnce(check_status<LeConnectionUpdateStatusView>)); ASSERT(status.IsValid()); ASSERT(status.GetCommandOpCode() == OpCode::LE_CONNECTION_UPDATE); })); return true; return true; } } Loading
system/main/shim/acl.cc +31 −0 Original line number Original line Diff line number Diff line Loading @@ -849,6 +849,13 @@ class LeShimAclConnection return connection_->IsInFilterAcceptList(); return connection_->IsInFilterAcceptList(); } } void UpdateConnectionParameters(uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { connection_->LeConnectionUpdate(conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } private: private: OnDisconnect on_disconnect_; OnDisconnect on_disconnect_; const shim::legacy::acl_le_link_interface_t interface_; const shim::legacy::acl_le_link_interface_t interface_; Loading Loading @@ -1092,6 +1099,21 @@ struct shim::legacy::Acl::impl { } } } } void update_connection_parameters(uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { auto connection = handle_to_le_connection_map_.find(handle); if (connection == handle_to_le_connection_map_.end()) { LOG_WARN("Unknown le connection handle:0x%04x", handle); return; } connection->second->UpdateConnectionParameters(conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } void accept_le_connection_from(const hci::AddressWithType& address_with_type, void accept_le_connection_from(const hci::AddressWithType& address_with_type, bool is_direct, std::promise<bool> promise) { bool is_direct, std::promise<bool> promise) { if (shadow_acceptlist_.IsFull()) { if (shadow_acceptlist_.IsFull()) { Loading Loading @@ -1768,6 +1790,15 @@ void shim::legacy::Acl::DisconnectLe(uint16_t handle, tHCI_STATUS reason, comment); comment); } } void shim::legacy::Acl::UpdateConnectionParameters( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { handler_->CallOn(pimpl_.get(), &Acl::impl::update_connection_parameters, handle, conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval, bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval, uint16_t min_interval) { uint16_t min_interval) { handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval, handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval, Loading
system/main/shim/acl.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -84,6 +84,10 @@ class Acl : public hci::acl_manager::ConnectionCallbacks, std::string comment) override; std::string comment) override; void DisconnectLe(uint16_t handle, tHCI_REASON reason, void DisconnectLe(uint16_t handle, tHCI_REASON reason, std::string comment) override; std::string comment) override; void UpdateConnectionParameters(uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) override; // Address Resolution List // Address Resolution List void AddToAddressResolution(const hci::AddressWithType& address_with_type, void AddToAddressResolution(const hci::AddressWithType& address_with_type, Loading
system/main/shim/acl_api.cc +9 −0 Original line number Original line Diff line number Diff line Loading @@ -76,6 +76,15 @@ void bluetooth::shim::ACL_Flush(uint16_t handle) { Stack::GetInstance()->GetAcl()->Flush(handle); Stack::GetInstance()->GetAcl()->Flush(handle); } } void bluetooth::shim::ACL_SendConnectionParameterUpdateRequest( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len) { Stack::GetInstance()->GetAcl()->UpdateConnectionParameters( handle, conn_int_min, conn_int_max, conn_latency, conn_timeout, min_ce_len, max_ce_len); } void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) { void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) { hci::LeAddressManager::AddressPolicy address_policy = hci::LeAddressManager::AddressPolicy address_policy = is_le_privacy_enabled is_le_privacy_enabled Loading
system/main/shim/acl_api.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,10 @@ void ACL_ClearFilterAcceptList(); void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max, void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout); uint16_t sup_tout); void ACL_SendConnectionParameterUpdateRequest( uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max, uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len, uint16_t max_ce_len); void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min, void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout); uint16_t cont_num, uint16_t sup_tout); Loading