From bed7677c81db107dfaf0f7cc3f68b9a5bdde1a1c Mon Sep 17 00:00:00 2001 From: paul-szczepanek-arm <33840200+paul-szczepanek-arm@users.noreply.github.com> Date: Mon, 26 Nov 2018 16:51:28 +0000 Subject: [PATCH] stop advertising before reseting --- .../FEATURE_BLE/source/generic/GenericGap.cpp | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/features/FEATURE_BLE/source/generic/GenericGap.cpp b/features/FEATURE_BLE/source/generic/GenericGap.cpp index 881f533f4e..3db249fd27 100644 --- a/features/FEATURE_BLE/source/generic/GenericGap.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGap.cpp @@ -1349,11 +1349,32 @@ ble_error_t GenericGap::reset(void) _advertising_timeout.detach(); _scan_timeout.detach(); + /* stop all advertising sets */ + for (size_t i = 0; i < MAX_ADVERTISING_SETS; ++i) { + if (_active_sets.get(i)) { + _pal_gap.extended_advertising_enable( + /* enable */ false, + /* number of advertising sets */ 1, + (advertising_handle_t*)&i, + NULL, + NULL + ); + } + if (_active_periodic_sets.get(i)) { + _pal_gap.periodic_advertising_enable( + /* enable */ false, + (advertising_handle_t)i + ); + } + } + + /* clear state of all advertising sets */ _existing_sets.clear(); + _existing_sets.set(LEGACY_ADVERTISING_HANDLE); _active_sets.clear(); _active_periodic_sets.clear(); - _existing_sets.set(LEGACY_ADVERTISING_HANDLE); + /* clear advertising set data on the controller */ _pal_gap.clear_advertising_sets(); return BLE_ERROR_NONE;