From f34d31f3503e3b3ca3b854896494b0e6ab1fc80b Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Wed, 7 Apr 2021 16:40:46 +0100 Subject: [PATCH] remember if BLE scan paremeters are set --- connectivity/FEATURE_BLE/source/generic/GapImpl.cpp | 10 ++++++++++ connectivity/FEATURE_BLE/source/generic/GapImpl.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/connectivity/FEATURE_BLE/source/generic/GapImpl.cpp b/connectivity/FEATURE_BLE/source/generic/GapImpl.cpp index dfa04ad4fc..f4661bd6af 100644 --- a/connectivity/FEATURE_BLE/source/generic/GapImpl.cpp +++ b/connectivity/FEATURE_BLE/source/generic/GapImpl.cpp @@ -1221,6 +1221,7 @@ ble_error_t Gap::reset() #endif // BLE_FEATURE_PRIVACY #if BLE_ROLE_OBSERVER + _scan_parameters_set = false; _scan_timeout.detach(); #endif @@ -3562,6 +3563,8 @@ ble_error_t Gap::setScanParameters(const ScanParameters ¶ms) params.getCodedPhyConfiguration().getWindow().value() }; + _scan_parameters_set = true; + return _pal_gap.set_extended_scan_parameters( params.getOwnAddressType(), params.getFilter(), @@ -3581,6 +3584,8 @@ ble_error_t Gap::setScanParameters(const ScanParameters ¶ms) ScanParameters::phy_configuration_t legacy_configuration = params.get1mPhyConfiguration(); + _scan_parameters_set = true; + return _pal_gap.set_scan_parameters( legacy_configuration.isActiveScanningSet(), legacy_configuration.getInterval().value(), @@ -3613,6 +3618,11 @@ ble_error_t Gap::startScan( return BLE_STACK_BUSY; } + if (!_scan_parameters_set) { + tr_error("Scan parameters not set."); + return BLE_ERROR_OPERATION_NOT_PERMITTED; + } + _scan_requested_duration = duration; _scan_requested_filtering = filtering; _scan_requested_period = period; diff --git a/connectivity/FEATURE_BLE/source/generic/GapImpl.h b/connectivity/FEATURE_BLE/source/generic/GapImpl.h index 8fb38118db..5e8a08bcd4 100644 --- a/connectivity/FEATURE_BLE/source/generic/GapImpl.h +++ b/connectivity/FEATURE_BLE/source/generic/GapImpl.h @@ -991,6 +991,10 @@ private: bool _user_manage_connection_parameter_requests : 1; +#if BLE_ROLE_OBSERVER + bool _scan_parameters_set : 1 = false; +#endif // BLE_ROLE_OBSERVER + }; } // namespace impl