Loading system/gd/hci/facade/le_scanning_manager_facade.cc +24 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,30 @@ class LeScanningManagerFacadeService : public LeScanningManagerFacade::Service, void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status){}; void OnPeriodicSyncStarted( int reg_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) override { LOG_INFO("OnPeriodicSyncStarted in LeScanningManagerFacadeService"); }; void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) override { LOG_INFO("OnPeriodicSyncReport in LeScanningManagerFacadeService"); }; void OnPeriodicSyncLost(uint16_t sync_handle) override { LOG_INFO("OnPeriodicSyncLost in LeScanningManagerFacadeService"); }; void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) override { LOG_INFO("OnPeriodicSyncTransferred in LeScanningManagerFacadeService"); }; LeScanningManager* le_scanning_manager_; os::Handler* facade_handler_; ::bluetooth::grpc::GrpcEventQueue<AdvertisingReportMsg> advertising_reports_{"advertising reports"}; Loading system/gd/hci/le_scanning_callback.h +12 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,18 @@ class ScanningCallback { virtual void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) = 0; virtual void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) = 0; virtual void OnPeriodicSyncStarted( int request_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) = 0; virtual void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) = 0; virtual void OnPeriodicSyncLost(uint16_t sync_handle) = 0; virtual void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) = 0; }; class AdvertisingPacketContentFilterCommand { Loading system/gd/hci/le_scanning_manager.cc +114 −10 Original line number Diff line number Diff line Loading @@ -136,10 +136,10 @@ class AdvertisingCache { }; class NullScanningCallback : public ScanningCallback { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) override { LOG_INFO("OnScannerRegistered in NullScanningCallback"); } void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) { void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) override { LOG_INFO("OnSetScannerParameterComplete in NullScanningCallback"); } void OnScanResult( Loading @@ -152,31 +152,52 @@ class NullScanningCallback : public ScanningCallback { int8_t tx_power, int8_t rssi, uint16_t periodic_advertising_interval, std::vector<uint8_t> advertising_data) { std::vector<uint8_t> advertising_data) override { LOG_INFO("OnScanResult in NullScanningCallback"); } void OnTrackAdvFoundLost(AdvertisingFilterOnFoundOnLostInfo on_found_on_lost_info) { void OnTrackAdvFoundLost(AdvertisingFilterOnFoundOnLostInfo on_found_on_lost_info) override { LOG_INFO("OnTrackAdvFoundLost in NullScanningCallback"); } void OnBatchScanReports(int client_if, int status, int report_format, int num_records, std::vector<uint8_t> data) { void OnBatchScanReports( int client_if, int status, int report_format, int num_records, std::vector<uint8_t> data) override { LOG_INFO("OnBatchScanReports in NullScanningCallback"); } void OnBatchScanThresholdCrossed(int client_if) { void OnBatchScanThresholdCrossed(int client_if) override { LOG_INFO("OnBatchScanThresholdCrossed in NullScanningCallback"); } void OnTimeout() { void OnTimeout() override { LOG_INFO("OnTimeout in NullScanningCallback"); } void OnFilterEnable(Enable enable, uint8_t status) { void OnFilterEnable(Enable enable, uint8_t status) override { LOG_INFO("OnFilterEnable in NullScanningCallback"); } void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) { void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) override { LOG_INFO("OnFilterParamSetup in NullScanningCallback"); } void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) { ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) override { LOG_INFO("OnFilterConfigCallback in NullScanningCallback"); } void OnPeriodicSyncStarted( int reg_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) override { LOG_INFO("OnPeriodicSyncStarted in NullScanningCallback"); }; void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) override { LOG_INFO("OnPeriodicSyncReport in NullScanningCallback"); }; void OnPeriodicSyncLost(uint16_t sync_handle) override { LOG_INFO("OnPeriodicSyncLost in NullScanningCallback"); }; void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) override { LOG_INFO("OnPeriodicSyncTransferred in NullScanningCallback"); }; }; enum class BatchScanState { Loading Loading @@ -234,6 +255,8 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback } is_filter_support_ = controller_->IsSupported(OpCode::LE_ADV_FILTER); is_batch_scan_support_ = controller->IsSupported(OpCode::LE_BATCH_SCAN); is_periodic_advertising_sync_transfer_sender_support_ = controller_->SupportsBlePeriodicAdvertisingSyncTransferSender(); total_num_of_advt_tracked_ = controller->GetVendorCapabilities().total_num_of_advt_tracked_; if (is_batch_scan_support_) { vendor_specific_event_manager_->RegisterEventHandler( Loading Loading @@ -1043,6 +1066,58 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback module_handler_->BindOnceOn(this, &impl::on_batch_scan_read_result_complete, scanner_id, total_num_of_records)); } void start_sync( uint8_t sid, const AddressWithType& address_with_type, uint16_t skip, uint16_t timeout, int request_id) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncStarted(request_id, status, -1, sid, address_with_type, 0, 0); return; } } void stop_sync(uint16_t handle) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); return; } } void cancel_create_sync(uint8_t sid, const Address& address) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); return; } } void transfer_sync(const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncTransferred(pa_source, status, address); return; } } void transfer_set_info(const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncTransferred(pa_source, status, address); return; } } void sync_tx_parameters(const Address& address, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); AddressWithType address_with_type(address, AddressType::RANDOM_DEVICE_ADDRESS); scanning_callbacks_->OnPeriodicSyncStarted(reg_id, status, -1, -1, address_with_type, 0, 0); return; } } void track_advertiser(uint8_t filter_index, ScannerId scanner_id) { if (total_num_of_advt_tracked_ <= 0) { LOG_WARN("advertisement tracking is not supported"); Loading Loading @@ -1323,6 +1398,7 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback AdvertisingCache advertising_cache_; bool is_filter_support_ = false; bool is_batch_scan_support_ = false; bool is_periodic_advertising_sync_transfer_sender_support_ = false; LeScanType le_scan_type_ = LeScanType::ACTIVE; uint32_t interval_ms_{1000}; Loading Loading @@ -1454,6 +1530,34 @@ void LeScanningManager::BatchScanReadReport(ScannerId scanner_id, BatchScanMode CallOn(pimpl_.get(), &impl::batch_scan_read_results, scanner_id, 0, scan_mode); } void LeScanningManager::StartSync( uint8_t sid, const AddressWithType& address_with_type, uint16_t skip, uint16_t timeout, int reg_id) { CallOn(pimpl_.get(), &impl::start_sync, sid, address_with_type, skip, timeout, reg_id); } void LeScanningManager::StopSync(uint16_t handle) { CallOn(pimpl_.get(), &impl::stop_sync, handle); } void LeScanningManager::CancelCreateSync(uint8_t sid, const Address& address) { CallOn(pimpl_.get(), &impl::cancel_create_sync, sid, address); } void LeScanningManager::TransferSync( const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source) { CallOn(pimpl_.get(), &impl::transfer_sync, address, service_data, sync_handle, pa_source); } void LeScanningManager::TransferSetInfo( const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source) { CallOn(pimpl_.get(), &impl::transfer_set_info, address, service_data, adv_handle, pa_source); } void LeScanningManager::SyncTxParameters( const Address& address, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id) { CallOn(pimpl_.get(), &impl::sync_tx_parameters, address, mode, skip, timeout, reg_id); } void LeScanningManager::TrackAdvertiser(uint8_t filter_index, ScannerId scanner_id) { CallOn(pimpl_.get(), &impl::track_advertiser, filter_index, scanner_id); } Loading system/gd/hci/le_scanning_manager.h +12 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,18 @@ class LeScanningManager : public bluetooth::Module { virtual void BatchScanDisable(); virtual void BatchScanReadReport(ScannerId scanner_id, BatchScanMode scan_mode); virtual void StartSync(uint8_t sid, const AddressWithType& address, uint16_t skip, uint16_t timeout, int reg_id); virtual void StopSync(uint16_t handle); virtual void CancelCreateSync(uint8_t sid, const Address& address); virtual void TransferSync(const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source); virtual void TransferSetInfo(const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source); virtual void SyncTxParameters(const Address& addr, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id); virtual void TrackAdvertiser(uint8_t filter_index, ScannerId scanner_id); virtual void RegisterScanningCallback(ScanningCallback* scanning_callback); Loading system/gd/hci/le_scanning_manager_mock.h +10 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ class MockScanningCallback : public ScanningCallback { MOCK_METHOD(void, OnFilterEnable, (Enable, uint8_t)); MOCK_METHOD(void, OnFilterParamSetup, (uint8_t, ApcfAction, uint8_t)); MOCK_METHOD(void, OnFilterConfigCallback, (ApcfFilterType, uint8_t, ApcfAction, uint8_t)); MOCK_METHOD(void, OnPeriodicSyncStarted, (int, uint8_t, uint16_t, uint8_t, AddressWithType, uint8_t, uint16_t)); MOCK_METHOD(void, OnPeriodicSyncReport, (uint16_t, int8_t, int8_t, uint8_t, std::vector<uint8_t>)); MOCK_METHOD(void, OnPeriodicSyncLost, (uint16_t)); MOCK_METHOD(void, OnPeriodicSyncTransferred, (int, uint8_t, Address)); }; class MockLeScanningManager : public LeScanningManager { Loading @@ -58,6 +62,12 @@ class MockLeScanningManager : public LeScanningManager { MOCK_METHOD(void, BatchScanReadReport, (ScannerId, BatchScanMode)); MOCK_METHOD(void, TrackAdvertiser, (uint8_t, ScannerId)); MOCK_METHOD(void, RegisterScanningCallback, (ScanningCallback*)); MOCK_METHOD(void, StartSync, (uint8_t, const AddressWithType&, uint16_t, uint16_t, int)); MOCK_METHOD(void, StopSync, (uint16_t)); MOCK_METHOD(void, CancelCreateSync, (uint8_t, const Address&)); MOCK_METHOD(void, TransferSync, (const Address&, uint16_t, uint16_t sync_handle, int pa_source)); MOCK_METHOD(void, TransferSetInfo, (const Address&, uint16_t, uint8_t, int)); MOCK_METHOD(void, SyncTxParameters, (const Address&, uint8_t, uint16_t, uint16_t, int)); }; } // namespace testing Loading Loading
system/gd/hci/facade/le_scanning_manager_facade.cc +24 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,30 @@ class LeScanningManagerFacadeService : public LeScanningManagerFacade::Service, void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status){}; void OnPeriodicSyncStarted( int reg_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) override { LOG_INFO("OnPeriodicSyncStarted in LeScanningManagerFacadeService"); }; void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) override { LOG_INFO("OnPeriodicSyncReport in LeScanningManagerFacadeService"); }; void OnPeriodicSyncLost(uint16_t sync_handle) override { LOG_INFO("OnPeriodicSyncLost in LeScanningManagerFacadeService"); }; void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) override { LOG_INFO("OnPeriodicSyncTransferred in LeScanningManagerFacadeService"); }; LeScanningManager* le_scanning_manager_; os::Handler* facade_handler_; ::bluetooth::grpc::GrpcEventQueue<AdvertisingReportMsg> advertising_reports_{"advertising reports"}; Loading
system/gd/hci/le_scanning_callback.h +12 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,18 @@ class ScanningCallback { virtual void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) = 0; virtual void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) = 0; virtual void OnPeriodicSyncStarted( int request_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) = 0; virtual void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) = 0; virtual void OnPeriodicSyncLost(uint16_t sync_handle) = 0; virtual void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) = 0; }; class AdvertisingPacketContentFilterCommand { Loading
system/gd/hci/le_scanning_manager.cc +114 −10 Original line number Diff line number Diff line Loading @@ -136,10 +136,10 @@ class AdvertisingCache { }; class NullScanningCallback : public ScanningCallback { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) override { LOG_INFO("OnScannerRegistered in NullScanningCallback"); } void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) { void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) override { LOG_INFO("OnSetScannerParameterComplete in NullScanningCallback"); } void OnScanResult( Loading @@ -152,31 +152,52 @@ class NullScanningCallback : public ScanningCallback { int8_t tx_power, int8_t rssi, uint16_t periodic_advertising_interval, std::vector<uint8_t> advertising_data) { std::vector<uint8_t> advertising_data) override { LOG_INFO("OnScanResult in NullScanningCallback"); } void OnTrackAdvFoundLost(AdvertisingFilterOnFoundOnLostInfo on_found_on_lost_info) { void OnTrackAdvFoundLost(AdvertisingFilterOnFoundOnLostInfo on_found_on_lost_info) override { LOG_INFO("OnTrackAdvFoundLost in NullScanningCallback"); } void OnBatchScanReports(int client_if, int status, int report_format, int num_records, std::vector<uint8_t> data) { void OnBatchScanReports( int client_if, int status, int report_format, int num_records, std::vector<uint8_t> data) override { LOG_INFO("OnBatchScanReports in NullScanningCallback"); } void OnBatchScanThresholdCrossed(int client_if) { void OnBatchScanThresholdCrossed(int client_if) override { LOG_INFO("OnBatchScanThresholdCrossed in NullScanningCallback"); } void OnTimeout() { void OnTimeout() override { LOG_INFO("OnTimeout in NullScanningCallback"); } void OnFilterEnable(Enable enable, uint8_t status) { void OnFilterEnable(Enable enable, uint8_t status) override { LOG_INFO("OnFilterEnable in NullScanningCallback"); } void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) { void OnFilterParamSetup(uint8_t available_spaces, ApcfAction action, uint8_t status) override { LOG_INFO("OnFilterParamSetup in NullScanningCallback"); } void OnFilterConfigCallback( ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) { ApcfFilterType filter_type, uint8_t available_spaces, ApcfAction action, uint8_t status) override { LOG_INFO("OnFilterConfigCallback in NullScanningCallback"); } void OnPeriodicSyncStarted( int reg_id, uint8_t status, uint16_t sync_handle, uint8_t advertising_sid, AddressWithType address_with_type, uint8_t phy, uint16_t interval) override { LOG_INFO("OnPeriodicSyncStarted in NullScanningCallback"); }; void OnPeriodicSyncReport( uint16_t sync_handle, int8_t tx_power, int8_t rssi, uint8_t status, std::vector<uint8_t> data) override { LOG_INFO("OnPeriodicSyncReport in NullScanningCallback"); }; void OnPeriodicSyncLost(uint16_t sync_handle) override { LOG_INFO("OnPeriodicSyncLost in NullScanningCallback"); }; void OnPeriodicSyncTransferred(int pa_source, uint8_t status, Address address) override { LOG_INFO("OnPeriodicSyncTransferred in NullScanningCallback"); }; }; enum class BatchScanState { Loading Loading @@ -234,6 +255,8 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback } is_filter_support_ = controller_->IsSupported(OpCode::LE_ADV_FILTER); is_batch_scan_support_ = controller->IsSupported(OpCode::LE_BATCH_SCAN); is_periodic_advertising_sync_transfer_sender_support_ = controller_->SupportsBlePeriodicAdvertisingSyncTransferSender(); total_num_of_advt_tracked_ = controller->GetVendorCapabilities().total_num_of_advt_tracked_; if (is_batch_scan_support_) { vendor_specific_event_manager_->RegisterEventHandler( Loading Loading @@ -1043,6 +1066,58 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback module_handler_->BindOnceOn(this, &impl::on_batch_scan_read_result_complete, scanner_id, total_num_of_records)); } void start_sync( uint8_t sid, const AddressWithType& address_with_type, uint16_t skip, uint16_t timeout, int request_id) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncStarted(request_id, status, -1, sid, address_with_type, 0, 0); return; } } void stop_sync(uint16_t handle) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); return; } } void cancel_create_sync(uint8_t sid, const Address& address) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); return; } } void transfer_sync(const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncTransferred(pa_source, status, address); return; } } void transfer_set_info(const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); scanning_callbacks_->OnPeriodicSyncTransferred(pa_source, status, address); return; } } void sync_tx_parameters(const Address& address, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id) { if (!is_periodic_advertising_sync_transfer_sender_support_) { LOG_WARN("PAST sender not supported on this device"); int status = static_cast<int>(ErrorCode::UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE); AddressWithType address_with_type(address, AddressType::RANDOM_DEVICE_ADDRESS); scanning_callbacks_->OnPeriodicSyncStarted(reg_id, status, -1, -1, address_with_type, 0, 0); return; } } void track_advertiser(uint8_t filter_index, ScannerId scanner_id) { if (total_num_of_advt_tracked_ <= 0) { LOG_WARN("advertisement tracking is not supported"); Loading Loading @@ -1323,6 +1398,7 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback AdvertisingCache advertising_cache_; bool is_filter_support_ = false; bool is_batch_scan_support_ = false; bool is_periodic_advertising_sync_transfer_sender_support_ = false; LeScanType le_scan_type_ = LeScanType::ACTIVE; uint32_t interval_ms_{1000}; Loading Loading @@ -1454,6 +1530,34 @@ void LeScanningManager::BatchScanReadReport(ScannerId scanner_id, BatchScanMode CallOn(pimpl_.get(), &impl::batch_scan_read_results, scanner_id, 0, scan_mode); } void LeScanningManager::StartSync( uint8_t sid, const AddressWithType& address_with_type, uint16_t skip, uint16_t timeout, int reg_id) { CallOn(pimpl_.get(), &impl::start_sync, sid, address_with_type, skip, timeout, reg_id); } void LeScanningManager::StopSync(uint16_t handle) { CallOn(pimpl_.get(), &impl::stop_sync, handle); } void LeScanningManager::CancelCreateSync(uint8_t sid, const Address& address) { CallOn(pimpl_.get(), &impl::cancel_create_sync, sid, address); } void LeScanningManager::TransferSync( const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source) { CallOn(pimpl_.get(), &impl::transfer_sync, address, service_data, sync_handle, pa_source); } void LeScanningManager::TransferSetInfo( const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source) { CallOn(pimpl_.get(), &impl::transfer_set_info, address, service_data, adv_handle, pa_source); } void LeScanningManager::SyncTxParameters( const Address& address, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id) { CallOn(pimpl_.get(), &impl::sync_tx_parameters, address, mode, skip, timeout, reg_id); } void LeScanningManager::TrackAdvertiser(uint8_t filter_index, ScannerId scanner_id) { CallOn(pimpl_.get(), &impl::track_advertiser, filter_index, scanner_id); } Loading
system/gd/hci/le_scanning_manager.h +12 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,18 @@ class LeScanningManager : public bluetooth::Module { virtual void BatchScanDisable(); virtual void BatchScanReadReport(ScannerId scanner_id, BatchScanMode scan_mode); virtual void StartSync(uint8_t sid, const AddressWithType& address, uint16_t skip, uint16_t timeout, int reg_id); virtual void StopSync(uint16_t handle); virtual void CancelCreateSync(uint8_t sid, const Address& address); virtual void TransferSync(const Address& address, uint16_t service_data, uint16_t sync_handle, int pa_source); virtual void TransferSetInfo(const Address& address, uint16_t service_data, uint8_t adv_handle, int pa_source); virtual void SyncTxParameters(const Address& addr, uint8_t mode, uint16_t skip, uint16_t timeout, int reg_id); virtual void TrackAdvertiser(uint8_t filter_index, ScannerId scanner_id); virtual void RegisterScanningCallback(ScanningCallback* scanning_callback); Loading
system/gd/hci/le_scanning_manager_mock.h +10 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ class MockScanningCallback : public ScanningCallback { MOCK_METHOD(void, OnFilterEnable, (Enable, uint8_t)); MOCK_METHOD(void, OnFilterParamSetup, (uint8_t, ApcfAction, uint8_t)); MOCK_METHOD(void, OnFilterConfigCallback, (ApcfFilterType, uint8_t, ApcfAction, uint8_t)); MOCK_METHOD(void, OnPeriodicSyncStarted, (int, uint8_t, uint16_t, uint8_t, AddressWithType, uint8_t, uint16_t)); MOCK_METHOD(void, OnPeriodicSyncReport, (uint16_t, int8_t, int8_t, uint8_t, std::vector<uint8_t>)); MOCK_METHOD(void, OnPeriodicSyncLost, (uint16_t)); MOCK_METHOD(void, OnPeriodicSyncTransferred, (int, uint8_t, Address)); }; class MockLeScanningManager : public LeScanningManager { Loading @@ -58,6 +62,12 @@ class MockLeScanningManager : public LeScanningManager { MOCK_METHOD(void, BatchScanReadReport, (ScannerId, BatchScanMode)); MOCK_METHOD(void, TrackAdvertiser, (uint8_t, ScannerId)); MOCK_METHOD(void, RegisterScanningCallback, (ScanningCallback*)); MOCK_METHOD(void, StartSync, (uint8_t, const AddressWithType&, uint16_t, uint16_t, int)); MOCK_METHOD(void, StopSync, (uint16_t)); MOCK_METHOD(void, CancelCreateSync, (uint8_t, const Address&)); MOCK_METHOD(void, TransferSync, (const Address&, uint16_t, uint16_t sync_handle, int pa_source)); MOCK_METHOD(void, TransferSetInfo, (const Address&, uint16_t, uint8_t, int)); MOCK_METHOD(void, SyncTxParameters, (const Address&, uint8_t, uint16_t, uint16_t, int)); }; } // namespace testing Loading