From bf535af159afde0078d1078017e8702fda7c5b28 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:57:07 +0000 Subject: [PATCH] check feature support before calling extended functnions --- .../FEATURE_BLE/source/generic/GenericGap.cpp | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/features/FEATURE_BLE/source/generic/GenericGap.cpp b/features/FEATURE_BLE/source/generic/GenericGap.cpp index 3db249fd27..9c390487d2 100644 --- a/features/FEATURE_BLE/source/generic/GenericGap.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGap.cpp @@ -1349,34 +1349,42 @@ 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 - ); + if (is_extended_advertising_available()) { + /* 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(); + _active_sets.clear(); + _active_periodic_sets.clear(); + + /* clear advertising set data on the controller */ + _pal_gap.clear_advertising_sets(); + + _existing_sets.set(LEGACY_ADVERTISING_HANDLE); + + setExtendedAdvertisingParameters( + LEGACY_ADVERTISING_HANDLE, + AdvertisingParameters() + ); } - /* clear state of all advertising sets */ - _existing_sets.clear(); - _existing_sets.set(LEGACY_ADVERTISING_HANDLE); - _active_sets.clear(); - _active_periodic_sets.clear(); - - /* clear advertising set data on the controller */ - _pal_gap.clear_advertising_sets(); - return BLE_ERROR_NONE; }