Skip to content

Commit 94baadf

Browse files
authored
Merge pull request #9549 from paul-szczepanek-arm/fix-scan-timeout
BLE: fix missing scan timeout for 4.2 controllers using new API
2 parents 7c578cf + d9c919b commit 94baadf

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

features/FEATURE_BLE/source/generic/GenericGap.cpp

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -570,31 +570,28 @@ ble_error_t GenericGap::stopScan()
570570
{
571571
ble_error_t err;
572572

573-
if (is_extended_advertising_available()) {
574-
if (!_scan_enabled) {
575-
return BLE_ERROR_NONE;
576-
}
573+
if (!_scan_enabled) {
574+
return BLE_ERROR_NONE;
575+
}
577576

578-
_scan_enabled = false;
577+
_scan_enabled = false;
579578

579+
if (is_extended_advertising_available()) {
580580
err = _pal_gap.extended_scan_enable(false, pal::duplicates_filter_t::DISABLE, 0, 0);
581-
582-
if (err) {
583-
_scan_enabled = true;
584-
return err;
585-
}
586581
} else {
587582
err = _pal_gap.scan_enable(false, false);
583+
}
588584

589-
if (err) {
590-
return err;
591-
}
585+
if (err) {
586+
_scan_enabled = true;
587+
return err;
592588
}
593589

594590
// Stop address rotation if required
595591
set_random_address_rotation(false);
596592

597593
_scan_timeout.detach();
594+
598595
return BLE_ERROR_NONE;
599596
}
600597

@@ -1210,6 +1207,8 @@ ble_error_t GenericGap::startRadioScan(const GapScanningParams &scanningParams)
12101207
return err;
12111208
}
12121209

1210+
_scan_enabled = true;
1211+
12131212
_scan_timeout.detach();
12141213
uint16_t timeout = scanningParams.getTimeout();
12151214
if (timeout) {
@@ -1488,6 +1487,12 @@ void GenericGap::on_scan_timeout()
14881487
return;
14891488
}
14901489

1490+
/* if timeout happened on a 4.2 chip we need to stop the scan manually */
1491+
if (!is_extended_advertising_available()) {
1492+
_pal_gap.scan_enable(false, false);
1493+
set_random_address_rotation(false);
1494+
}
1495+
14911496
_scan_enabled = false;
14921497

14931498
if (!_eventHandler) {
@@ -2969,8 +2974,6 @@ ble_error_t GenericGap::startScan(
29692974
}
29702975

29712976
if (is_extended_advertising_available()) {
2972-
_scan_enabled = true;
2973-
29742977
ble_error_t err = _pal_gap.extended_scan_enable(
29752978
/* enable */true,
29762979
filtering,
@@ -2979,7 +2982,6 @@ ble_error_t GenericGap::startScan(
29792982
);
29802983

29812984
if (err) {
2982-
_scan_enabled = false;
29832985
return err;
29842986
}
29852987
} else {
@@ -3005,6 +3007,8 @@ ble_error_t GenericGap::startScan(
30053007
}
30063008
}
30073009

3010+
_scan_enabled = true;
3011+
30083012
return BLE_ERROR_NONE;
30093013
}
30103014

0 commit comments

Comments
 (0)