@@ -570,25 +570,21 @@ ble_error_t GenericGap::stopScan()
570
570
{
571
571
ble_error_t err;
572
572
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
+ }
577
576
578
- _scan_enabled = false ;
577
+ _scan_enabled = false ;
579
578
579
+ if (is_extended_advertising_available ()) {
580
580
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
- }
586
581
} else {
587
582
err = _pal_gap.scan_enable (false , false );
583
+ }
588
584
589
- if (err) {
590
- return err ;
591
- }
585
+ if (err) {
586
+ _scan_enabled = true ;
587
+ return err;
592
588
}
593
589
594
590
// Stop address rotation if required
@@ -1210,6 +1206,8 @@ ble_error_t GenericGap::startRadioScan(const GapScanningParams &scanningParams)
1210
1206
return err;
1211
1207
}
1212
1208
1209
+ _scan_enabled = true ;
1210
+
1213
1211
_scan_timeout.detach ();
1214
1212
uint16_t timeout = scanningParams.getTimeout ();
1215
1213
if (timeout) {
@@ -1482,6 +1480,12 @@ BLE_DEPRECATED_API_USE_END()
1482
1480
1483
1481
void GenericGap::on_scan_timeout ()
1484
1482
{
1483
+ /* if timeout happened on a 4.2 chip we need to stop the scan manually */
1484
+ if (is_extended_advertising_available ()) {
1485
+ _pal_gap.scan_enable (false , false );
1486
+ set_random_address_rotation (false );
1487
+ }
1488
+
1485
1489
if (!_scan_enabled) {
1486
1490
return ;
1487
1491
}
@@ -2906,8 +2910,6 @@ ble_error_t GenericGap::startScan(
2906
2910
}
2907
2911
2908
2912
if (is_extended_advertising_available ()) {
2909
- _scan_enabled = true ;
2910
-
2911
2913
ble_error_t err = _pal_gap.extended_scan_enable (
2912
2914
/* enable */ true ,
2913
2915
filtering,
@@ -2916,9 +2918,10 @@ ble_error_t GenericGap::startScan(
2916
2918
);
2917
2919
2918
2920
if (err) {
2919
- _scan_enabled = false ;
2920
2921
return err;
2921
2922
}
2923
+
2924
+ _scan_enabled = true ;
2922
2925
} else {
2923
2926
if (period.value () != 0 ) {
2924
2927
return BLE_ERROR_INVALID_PARAM;
@@ -2933,6 +2936,8 @@ ble_error_t GenericGap::startScan(
2933
2936
return err;
2934
2937
}
2935
2938
2939
+ _scan_enabled = true ;
2940
+
2936
2941
_scan_timeout.detach ();
2937
2942
if (duration.value ()) {
2938
2943
_scan_timeout.attach_us (
0 commit comments