@@ -570,31 +570,28 @@ 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
595
591
set_random_address_rotation (false );
596
592
597
593
_scan_timeout.detach ();
594
+
598
595
return BLE_ERROR_NONE;
599
596
}
600
597
@@ -1210,6 +1207,8 @@ ble_error_t GenericGap::startRadioScan(const GapScanningParams &scanningParams)
1210
1207
return err;
1211
1208
}
1212
1209
1210
+ _scan_enabled = true ;
1211
+
1213
1212
_scan_timeout.detach ();
1214
1213
uint16_t timeout = scanningParams.getTimeout ();
1215
1214
if (timeout) {
@@ -1488,6 +1487,12 @@ void GenericGap::on_scan_timeout()
1488
1487
return ;
1489
1488
}
1490
1489
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
+
1491
1496
_scan_enabled = false ;
1492
1497
1493
1498
if (!_eventHandler) {
@@ -2969,8 +2974,6 @@ ble_error_t GenericGap::startScan(
2969
2974
}
2970
2975
2971
2976
if (is_extended_advertising_available ()) {
2972
- _scan_enabled = true ;
2973
-
2974
2977
ble_error_t err = _pal_gap.extended_scan_enable (
2975
2978
/* enable */ true ,
2976
2979
filtering,
@@ -2979,7 +2982,6 @@ ble_error_t GenericGap::startScan(
2979
2982
);
2980
2983
2981
2984
if (err) {
2982
- _scan_enabled = false ;
2983
2985
return err;
2984
2986
}
2985
2987
} else {
@@ -3005,6 +3007,8 @@ ble_error_t GenericGap::startScan(
3005
3007
}
3006
3008
}
3007
3009
3010
+ _scan_enabled = true ;
3011
+
3008
3012
return BLE_ERROR_NONE;
3009
3013
}
3010
3014
0 commit comments