BLE: Add callback for scan started and stoped.

pull/13759/head
Vincent Coubard 2020-09-09 22:43:43 +01:00
parent b8549ec91d
commit d8c6820cbd
5 changed files with 54 additions and 10 deletions

View File

@ -683,16 +683,34 @@ void PalGap::gap_handler(const wsfMsgHdr_t *msg)
} break;
#endif // BLE_FEATURE_EXTENDED_ADVERTISING && BLE_ROLE_BROADCASTER
#if BLE_FEATURE_EXTENDED_ADVERTISING && BLE_ROLE_OBSERVER
#if BLE_ROLE_OBSERVER
case DM_SCAN_START_IND:
if (!handler) { break; }
handler->on_scan_started(msg->status == HCI_SUCCESS);
break;
case DM_SCAN_STOP_IND:
if (!handler) { break; }
handler->on_scan_stopped(msg->status == HCI_SUCCESS);
break;
#if BLE_FEATURE_EXTENDED_ADVERTISING
case DM_EXT_SCAN_START_IND:
if (!handler) { break; }
handler->on_scan_started(msg->status == HCI_SUCCESS);
break;
case DM_EXT_SCAN_STOP_IND: {
if (!handler) {
break;
if (!handler) { break; }
if (get_gap().ext_scan_stopping) {
get_gap().ext_scan_stopping = false;
handler->on_scan_stopped(msg->status == HCI_SUCCESS);
} else {
handler->on_scan_timeout();
}
//const hciLeScanTimeoutEvt_t *evt = (const hciLeScanTimeoutEvt_t *) msg;
handler->on_scan_timeout();
}
break;
} break;
case DM_EXT_SCAN_REPORT_IND: {
if (!handler) {
@ -718,9 +736,9 @@ void PalGap::gap_handler(const wsfMsgHdr_t *msg)
evt->len,
evt->pData
);
}
break;
#endif // BLE_FEATURE_EXTENDED_ADVERTISING && BLE_ROLE_OBSERVER
} break;
#endif // BLE_FEATURE_EXTENDED_ADVERTISING
#endif // BLE_ROLE_OBSERVER
#if BLE_ROLE_CENTRAL || BLE_ROLE_PERIPHERAL
case DM_REM_CONN_PARAM_REQ_IND: {
@ -1243,6 +1261,7 @@ ble_error_t PalGap::extended_scan_enable(
if (enable) {
uint32_t duration_ms = duration * 10;
DmScanStart(
scanning_phys.value(),
DM_DISC_MODE_NONE,
@ -1253,6 +1272,7 @@ ble_error_t PalGap::extended_scan_enable(
);
} else {
DmScanStop();
ext_scan_stopping = true;
}
return BLE_ERROR_NONE;

View File

@ -535,6 +535,7 @@ private:
uint8_t extended_scan_type[3];
phy_set_t scanning_phys;
direct_adv_cb_t direct_adv_cb[DM_NUM_ADV_SETS];
bool ext_scan_stopping = false;
/**
* Callback called when an event is emitted by the LE subsystem.

View File

@ -1051,6 +1051,14 @@ Gap::GapShutdownCallbackChain_t &Gap::onShutdown()
return shutdownCallChain;
}
void Gap::on_scan_started(bool success)
{
}
void Gap::on_scan_stopped(bool success)
{
}
void Gap::on_scan_timeout()
{

View File

@ -525,6 +525,10 @@ private:
uint16_t supervision_timeout
) override;
void on_scan_started(bool success) override;
void on_scan_stopped(bool success) override;
void on_scan_timeout() override;
void process_legacy_scan_timeout();

View File

@ -194,6 +194,17 @@ public:
sync_handle_t sync_handle
) = 0;
/**
* Called when scanning start
*/
virtual void on_scan_started(bool success) = 0;
/**
* Called when scanning stop
*/
virtual void on_scan_stopped(bool success) = 0;
/** Called when scanning times out.
*/
virtual void on_scan_timeout( ) = 0;