Loading system/bta/include/bta_ras_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public: virtual void OnConnected( const RawAddress& address, uint16_t att_handle, const std::vector<VendorSpecificCharacteristic>& vendor_specific_characteristics) = 0; virtual void OnDisconnected(const RawAddress& address) = 0; virtual void OnWriteVendorSpecificReplyComplete(const RawAddress& address, bool success) = 0; virtual void OnRemoteData(const RawAddress& address, const std::vector<uint8_t>& data) = 0; }; Loading system/bta/ras/ras_client.cc +1 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public: BTA_GATTC_Close(evt.conn_id); return; } callbacks_->OnDisconnected(tracker->address_for_cs_); trackers_.remove(tracker); } Loading system/gd/hci/distance_measurement_manager.cc +21 −2 Original line number Diff line number Diff line Loading @@ -330,9 +330,7 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { log::warn("Can't find CS tracker for {}", address); } else { cs_trackers_[connection_handle].repeating_alarm->Cancel(); cs_trackers_[connection_handle].repeating_alarm.reset(); send_le_cs_procedure_enable(connection_handle, Enable::DISABLED); cs_trackers_.erase(connection_handle); } } break; } Loading Loading @@ -364,6 +362,23 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { start_distance_measurement_with_cs(tracker.address, connection_handle); } void handle_ras_disconnected_event(const Address address) { log::info("address:{}", address); for (auto it = cs_trackers_.begin(); it != cs_trackers_.end();) { if (it->second.address == address) { if (it->second.repeating_alarm != nullptr) { it->second.repeating_alarm->Cancel(); it->second.repeating_alarm.reset(); } distance_measurement_callbacks_->OnDistanceMeasurementStopped( address, REASON_NO_LE_CONNECTION, METHOD_CS); it = cs_trackers_.erase(it); // erase and get the next iterator } else { ++it; } } } void handle_vendor_specific_reply( const Address address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic> vendor_specific_reply) { Loading Loading @@ -1495,6 +1510,10 @@ void DistanceMeasurementManager::HandleRasConnectedEvent( vendor_specific_data); } void DistanceMeasurementManager::HandleRasDisconnectedEvent(const Address& address) { CallOn(pimpl_.get(), &impl::handle_ras_disconnected_event, address); } void DistanceMeasurementManager::HandleVendorSpecificReply( const Address& address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_reply) { Loading system/gd/hci/distance_measurement_manager.h +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public: void HandleRasConnectedEvent( const Address& address, uint16_t connection_handle, uint16_t att_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_data); void HandleRasDisconnectedEvent(const Address& address); void HandleVendorSpecificReply( const Address& address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_reply); Loading system/main/shim/distance_measurement_manager.cc +5 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,11 @@ public: hal_vendor_specific_characteristics); } void OnDisconnected(const RawAddress& address) { bluetooth::shim::GetDistanceMeasurementManager()->HandleRasDisconnectedEvent( bluetooth::ToGdAddress(address)); } void OnWriteVendorSpecificReplyComplete(const RawAddress& address, bool success) { bluetooth::shim::GetDistanceMeasurementManager()->HandleVendorSpecificReplyComplete( bluetooth::ToGdAddress(address), GetConnectionHandle(address), success); Loading Loading
system/bta/include/bta_ras_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public: virtual void OnConnected( const RawAddress& address, uint16_t att_handle, const std::vector<VendorSpecificCharacteristic>& vendor_specific_characteristics) = 0; virtual void OnDisconnected(const RawAddress& address) = 0; virtual void OnWriteVendorSpecificReplyComplete(const RawAddress& address, bool success) = 0; virtual void OnRemoteData(const RawAddress& address, const std::vector<uint8_t>& data) = 0; }; Loading
system/bta/ras/ras_client.cc +1 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public: BTA_GATTC_Close(evt.conn_id); return; } callbacks_->OnDisconnected(tracker->address_for_cs_); trackers_.remove(tracker); } Loading
system/gd/hci/distance_measurement_manager.cc +21 −2 Original line number Diff line number Diff line Loading @@ -330,9 +330,7 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { log::warn("Can't find CS tracker for {}", address); } else { cs_trackers_[connection_handle].repeating_alarm->Cancel(); cs_trackers_[connection_handle].repeating_alarm.reset(); send_le_cs_procedure_enable(connection_handle, Enable::DISABLED); cs_trackers_.erase(connection_handle); } } break; } Loading Loading @@ -364,6 +362,23 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { start_distance_measurement_with_cs(tracker.address, connection_handle); } void handle_ras_disconnected_event(const Address address) { log::info("address:{}", address); for (auto it = cs_trackers_.begin(); it != cs_trackers_.end();) { if (it->second.address == address) { if (it->second.repeating_alarm != nullptr) { it->second.repeating_alarm->Cancel(); it->second.repeating_alarm.reset(); } distance_measurement_callbacks_->OnDistanceMeasurementStopped( address, REASON_NO_LE_CONNECTION, METHOD_CS); it = cs_trackers_.erase(it); // erase and get the next iterator } else { ++it; } } } void handle_vendor_specific_reply( const Address address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic> vendor_specific_reply) { Loading Loading @@ -1495,6 +1510,10 @@ void DistanceMeasurementManager::HandleRasConnectedEvent( vendor_specific_data); } void DistanceMeasurementManager::HandleRasDisconnectedEvent(const Address& address) { CallOn(pimpl_.get(), &impl::handle_ras_disconnected_event, address); } void DistanceMeasurementManager::HandleVendorSpecificReply( const Address& address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_reply) { Loading
system/gd/hci/distance_measurement_manager.h +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public: void HandleRasConnectedEvent( const Address& address, uint16_t connection_handle, uint16_t att_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_data); void HandleRasDisconnectedEvent(const Address& address); void HandleVendorSpecificReply( const Address& address, uint16_t connection_handle, const std::vector<hal::VendorSpecificCharacteristic>& vendor_specific_reply); Loading
system/main/shim/distance_measurement_manager.cc +5 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,11 @@ public: hal_vendor_specific_characteristics); } void OnDisconnected(const RawAddress& address) { bluetooth::shim::GetDistanceMeasurementManager()->HandleRasDisconnectedEvent( bluetooth::ToGdAddress(address)); } void OnWriteVendorSpecificReplyComplete(const RawAddress& address, bool success) { bluetooth::shim::GetDistanceMeasurementManager()->HandleVendorSpecificReplyComplete( bluetooth::ToGdAddress(address), GetConnectionHandle(address), success); Loading