@@ -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) {
@@ -1484,6 +1482,12 @@ BLE_DEPRECATED_API_USE_END()
1484
1482
1485
1483
void GenericGap::on_scan_timeout ()
1486
1484
{
1485
+ /* if timeout happened on a 4.2 chip we need to stop the scan manually */
1486
+ if (is_extended_advertising_available ()) {
1487
+ _pal_gap.scan_enable (false , false );
1488
+ set_random_address_rotation (false );
1489
+ }
1490
+
1487
1491
if (!_scan_enabled) {
1488
1492
return ;
1489
1493
}
@@ -2969,8 +2973,6 @@ ble_error_t GenericGap::startScan(
2969
2973
}
2970
2974
2971
2975
if (is_extended_advertising_available ()) {
2972
- _scan_enabled = true ;
2973
-
2974
2976
ble_error_t err = _pal_gap.extended_scan_enable (
2975
2977
/* enable */ true ,
2976
2978
filtering,
@@ -2979,9 +2981,10 @@ ble_error_t GenericGap::startScan(
2979
2981
);
2980
2982
2981
2983
if (err) {
2982
- _scan_enabled = false ;
2983
2984
return err;
2984
2985
}
2986
+
2987
+ _scan_enabled = true ;
2985
2988
} else {
2986
2989
if (period.value () != 0 ) {
2987
2990
return BLE_ERROR_INVALID_PARAM;
@@ -2996,6 +2999,8 @@ ble_error_t GenericGap::startScan(
2996
2999
return err;
2997
3000
}
2998
3001
3002
+ _scan_enabled = true ;
3003
+
2999
3004
_scan_timeout.detach ();
3000
3005
if (duration.value ()) {
3001
3006
_scan_timeout.attach_us (
0 commit comments