Loading system/btif/src/btif_ble_scanner.cc +1 −1 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface { jni_thread_wrapper(FROM_HERE, std::move(cb)))); } void SetScanParameters(int scan_interval, int scan_window, void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) override { do_in_main_thread( FROM_HERE, base::Bind(&BTM_BleSetScanParams, scan_interval, scan_window, Loading system/gd/hci/facade/le_scanning_manager_facade.cc +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ class LeScanningManagerFacadeService : public LeScanningManagerFacade::Service, } void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status){}; void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status){}; void OnScanResult( uint16_t event_type, uint8_t address_type, Loading system/gd/hci/le_scanning_manager.cc +65 −29 Original line number Diff line number Diff line Loading @@ -137,6 +137,9 @@ class NullScanningCallback : public ScanningCallback { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) { LOG_INFO("OnScannerRegistered in NullScanningCallback"); } void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) { LOG_INFO("OnSetScannerParameterComplete in NullScanningCallback"); } void OnScanResult( uint16_t event_type, uint8_t address_type, Loading Loading @@ -486,22 +489,23 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback switch (api_type_) { case ScanApiType::EXTENDED: le_scanning_interface_->EnqueueCommand(hci::LeSetExtendedScanParametersBuilder::Create( le_scanning_interface_->EnqueueCommand( hci::LeSetExtendedScanParametersBuilder::Create( own_address_type_, filter_policy_, phys_in_use, parameter_vector), module_handler_->BindOnce(impl::check_status)); module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; case ScanApiType::ANDROID_HCI: le_scanning_interface_->EnqueueCommand( hci::LeExtendedScanParamsBuilder::Create(LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnce(impl::check_status)); hci::LeExtendedScanParamsBuilder::Create( LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; case ScanApiType::LEGACY: le_scanning_interface_->EnqueueCommand( hci::LeSetScanParametersBuilder::Create(LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnce(impl::check_status)); hci::LeSetScanParametersBuilder::Create( LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; } } Loading Loading @@ -603,7 +607,7 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback } } void set_scan_parameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { void set_scan_parameters(ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { uint32_t max_scan_interval = kLeScanIntervalMax; uint32_t max_scan_window = kLeScanWindowMax; if (api_type_ == ScanApiType::EXTENDED) { Loading @@ -613,19 +617,26 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback if (scan_type != LeScanType::ACTIVE && scan_type != LeScanType::PASSIVE) { LOG_ERROR("Invalid scan type"); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } if (scan_interval > max_scan_interval || scan_interval < kLeScanIntervalMin) { LOG_ERROR("Invalid scan_interval %d", scan_interval); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } if (scan_window > max_scan_window || scan_window < kLeScanWindowMin) { LOG_ERROR("Invalid scan_window %d", scan_window); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } le_scan_type_ = scan_type; interval_ms_ = scan_interval; window_ms_ = scan_window; scanning_callbacks_->OnSetScannerParameterComplete(scanner_id, ScanningCallback::SUCCESS); } void scan_filter_enable(bool enable) { Loading Loading @@ -1005,6 +1016,39 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback scanning_callbacks_ = scanning_callbacks; } void on_set_scan_parameter_complete(CommandCompleteView view) { switch (view.GetCommandOpCode()) { case (OpCode::LE_SET_SCAN_PARAMETERS): { auto status_view = LeSetScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive set scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; case (OpCode::LE_EXTENDED_SCAN_PARAMS): { auto status_view = LeExtendedScanParamsCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive extended scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; case (OpCode::LE_SET_EXTENDED_SCAN_PARAMETERS): { auto status_view = LeSetExtendedScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive set extended scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; default: LOG_ALWAYS_FATAL("Unhandled event %s", OpCodeText(view.GetCommandOpCode()).c_str()); } } void on_advertising_filter_complete(CommandCompleteView view) { ASSERT(view.IsValid()); auto status_view = LeAdvFilterCompleteView::Create(view); Loading Loading @@ -1243,27 +1287,18 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback case (OpCode::LE_SET_SCAN_ENABLE): { auto status_view = LeSetScanEnableCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); ASSERT_LOG( status_view.GetStatus() == ErrorCode::SUCCESS, "Receive set scan enable with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } break; case (OpCode::LE_SET_EXTENDED_SCAN_ENABLE): { auto status_view = LeSetExtendedScanEnableCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_SET_SCAN_PARAMETERS): { auto status_view = LeSetScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_EXTENDED_SCAN_PARAMS): { auto status_view = LeExtendedScanParamsCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_SET_EXTENDED_SCAN_PARAMETERS): { auto status_view = LeSetExtendedScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); ASSERT_LOG( status_view.GetStatus() == ErrorCode::SUCCESS, "Receive set extended scan enable with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } break; default: LOG_ALWAYS_FATAL("Unhandled event %s", OpCodeText(view.GetCommandOpCode()).c_str()); Loading Loading @@ -1312,8 +1347,9 @@ void LeScanningManager::Scan(bool start) { CallOn(pimpl_.get(), &impl::scan, start); } void LeScanningManager::SetScanParameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { CallOn(pimpl_.get(), &impl::set_scan_parameters, scan_type, scan_interval, scan_window); void LeScanningManager::SetScanParameters( ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { CallOn(pimpl_.get(), &impl::set_scan_parameters, scanner_id, scan_type, scan_interval, scan_window); } void LeScanningManager::ScanFilterEnable(bool enable) { Loading system/gd/hci/le_scanning_manager.h +3 −1 Original line number Diff line number Diff line Loading @@ -49,11 +49,13 @@ class ScanningCallback { SUCCESS, NO_RESOURCES = 0x80, INTERNAL_ERROR = 0x85, ILLEGAL_PARAMETER = 0x87, }; virtual ~ScanningCallback() = default; virtual void OnScannerRegistered( const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) = 0; virtual void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) = 0; virtual void OnScanResult( uint16_t event_type, uint8_t address_type, Loading Loading @@ -126,7 +128,7 @@ class LeScanningManager : public bluetooth::Module { void Scan(bool start); void SetScanParameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window); void SetScanParameters(ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window); /* Scan filter */ void ScanFilterEnable(bool enable); Loading system/gd/hci/le_scanning_manager_test.cc +1 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,7 @@ class LeScanningManagerTest : public ::testing::Test { OnScannerRegistered, (const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status), (override)); MOCK_METHOD(void, OnSetScannerParameterComplete, (ScannerId scanner_id, ScanningStatus status), (override)); MOCK_METHOD( void, OnScanResult, Loading Loading
system/btif/src/btif_ble_scanner.cc +1 −1 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface { jni_thread_wrapper(FROM_HERE, std::move(cb)))); } void SetScanParameters(int scan_interval, int scan_window, void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) override { do_in_main_thread( FROM_HERE, base::Bind(&BTM_BleSetScanParams, scan_interval, scan_window, Loading
system/gd/hci/facade/le_scanning_manager_facade.cc +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ class LeScanningManagerFacadeService : public LeScanningManagerFacade::Service, } void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status){}; void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status){}; void OnScanResult( uint16_t event_type, uint8_t address_type, Loading
system/gd/hci/le_scanning_manager.cc +65 −29 Original line number Diff line number Diff line Loading @@ -137,6 +137,9 @@ class NullScanningCallback : public ScanningCallback { void OnScannerRegistered(const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) { LOG_INFO("OnScannerRegistered in NullScanningCallback"); } void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) { LOG_INFO("OnSetScannerParameterComplete in NullScanningCallback"); } void OnScanResult( uint16_t event_type, uint8_t address_type, Loading Loading @@ -486,22 +489,23 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback switch (api_type_) { case ScanApiType::EXTENDED: le_scanning_interface_->EnqueueCommand(hci::LeSetExtendedScanParametersBuilder::Create( le_scanning_interface_->EnqueueCommand( hci::LeSetExtendedScanParametersBuilder::Create( own_address_type_, filter_policy_, phys_in_use, parameter_vector), module_handler_->BindOnce(impl::check_status)); module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; case ScanApiType::ANDROID_HCI: le_scanning_interface_->EnqueueCommand( hci::LeExtendedScanParamsBuilder::Create(LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnce(impl::check_status)); hci::LeExtendedScanParamsBuilder::Create( LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; case ScanApiType::LEGACY: le_scanning_interface_->EnqueueCommand( hci::LeSetScanParametersBuilder::Create(LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnce(impl::check_status)); hci::LeSetScanParametersBuilder::Create( LeScanType::ACTIVE, interval_ms_, window_ms_, own_address_type_, filter_policy_), module_handler_->BindOnceOn(this, &impl::on_set_scan_parameter_complete)); break; } } Loading Loading @@ -603,7 +607,7 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback } } void set_scan_parameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { void set_scan_parameters(ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { uint32_t max_scan_interval = kLeScanIntervalMax; uint32_t max_scan_window = kLeScanWindowMax; if (api_type_ == ScanApiType::EXTENDED) { Loading @@ -613,19 +617,26 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback if (scan_type != LeScanType::ACTIVE && scan_type != LeScanType::PASSIVE) { LOG_ERROR("Invalid scan type"); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } if (scan_interval > max_scan_interval || scan_interval < kLeScanIntervalMin) { LOG_ERROR("Invalid scan_interval %d", scan_interval); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } if (scan_window > max_scan_window || scan_window < kLeScanWindowMin) { LOG_ERROR("Invalid scan_window %d", scan_window); scanning_callbacks_->OnSetScannerParameterComplete( scanner_id, ScanningCallback::ScanningStatus::ILLEGAL_PARAMETER); return; } le_scan_type_ = scan_type; interval_ms_ = scan_interval; window_ms_ = scan_window; scanning_callbacks_->OnSetScannerParameterComplete(scanner_id, ScanningCallback::SUCCESS); } void scan_filter_enable(bool enable) { Loading Loading @@ -1005,6 +1016,39 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback scanning_callbacks_ = scanning_callbacks; } void on_set_scan_parameter_complete(CommandCompleteView view) { switch (view.GetCommandOpCode()) { case (OpCode::LE_SET_SCAN_PARAMETERS): { auto status_view = LeSetScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive set scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; case (OpCode::LE_EXTENDED_SCAN_PARAMS): { auto status_view = LeExtendedScanParamsCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive extended scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; case (OpCode::LE_SET_EXTENDED_SCAN_PARAMETERS): { auto status_view = LeSetExtendedScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); if (status_view.GetStatus() != ErrorCode::SUCCESS) { LOG_INFO( "Receive set extended scan parameter complete with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } } break; default: LOG_ALWAYS_FATAL("Unhandled event %s", OpCodeText(view.GetCommandOpCode()).c_str()); } } void on_advertising_filter_complete(CommandCompleteView view) { ASSERT(view.IsValid()); auto status_view = LeAdvFilterCompleteView::Create(view); Loading Loading @@ -1243,27 +1287,18 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback case (OpCode::LE_SET_SCAN_ENABLE): { auto status_view = LeSetScanEnableCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); ASSERT_LOG( status_view.GetStatus() == ErrorCode::SUCCESS, "Receive set scan enable with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } break; case (OpCode::LE_SET_EXTENDED_SCAN_ENABLE): { auto status_view = LeSetExtendedScanEnableCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_SET_SCAN_PARAMETERS): { auto status_view = LeSetScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_EXTENDED_SCAN_PARAMS): { auto status_view = LeExtendedScanParamsCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); } break; case (OpCode::LE_SET_EXTENDED_SCAN_PARAMETERS): { auto status_view = LeSetExtendedScanParametersCompleteView::Create(view); ASSERT(status_view.IsValid()); ASSERT(status_view.GetStatus() == ErrorCode::SUCCESS); ASSERT_LOG( status_view.GetStatus() == ErrorCode::SUCCESS, "Receive set extended scan enable with error code %s", ErrorCodeText(status_view.GetStatus()).c_str()); } break; default: LOG_ALWAYS_FATAL("Unhandled event %s", OpCodeText(view.GetCommandOpCode()).c_str()); Loading Loading @@ -1312,8 +1347,9 @@ void LeScanningManager::Scan(bool start) { CallOn(pimpl_.get(), &impl::scan, start); } void LeScanningManager::SetScanParameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { CallOn(pimpl_.get(), &impl::set_scan_parameters, scan_type, scan_interval, scan_window); void LeScanningManager::SetScanParameters( ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window) { CallOn(pimpl_.get(), &impl::set_scan_parameters, scanner_id, scan_type, scan_interval, scan_window); } void LeScanningManager::ScanFilterEnable(bool enable) { Loading
system/gd/hci/le_scanning_manager.h +3 −1 Original line number Diff line number Diff line Loading @@ -49,11 +49,13 @@ class ScanningCallback { SUCCESS, NO_RESOURCES = 0x80, INTERNAL_ERROR = 0x85, ILLEGAL_PARAMETER = 0x87, }; virtual ~ScanningCallback() = default; virtual void OnScannerRegistered( const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status) = 0; virtual void OnSetScannerParameterComplete(ScannerId scanner_id, ScanningStatus status) = 0; virtual void OnScanResult( uint16_t event_type, uint8_t address_type, Loading Loading @@ -126,7 +128,7 @@ class LeScanningManager : public bluetooth::Module { void Scan(bool start); void SetScanParameters(LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window); void SetScanParameters(ScannerId scanner_id, LeScanType scan_type, uint16_t scan_interval, uint16_t scan_window); /* Scan filter */ void ScanFilterEnable(bool enable); Loading
system/gd/hci/le_scanning_manager_test.cc +1 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,7 @@ class LeScanningManagerTest : public ::testing::Test { OnScannerRegistered, (const bluetooth::hci::Uuid app_uuid, ScannerId scanner_id, ScanningStatus status), (override)); MOCK_METHOD(void, OnSetScannerParameterComplete, (ScannerId scanner_id, ScanningStatus status), (override)); MOCK_METHOD( void, OnScanResult, Loading