static GSList *scanner_list = NULL;
static gboolean is_le_set_scan_parameter = FALSE;
static gboolean is_le_scanning = FALSE;
+static gboolean is_le_actual_scanning_state = FALSE;
static gboolean is_le_scan_hold = FALSE;
static gboolean scan_filter_enabled = FALSE;
static gboolean scan_stop_requested = FALSE;
break;
}
case OAL_EVENT_BLE_DISCOVERY_STARTED: {
+ is_le_actual_scanning_state = TRUE;
+
__bt_set_le_scan_status(TRUE);
__bt_adapter_le_handle_pending_request_info(
BLUETOOTH_ERROR_NONE,
break;
}
case OAL_EVENT_BLE_DISCOVERY_STOPPED: {
+ is_le_actual_scanning_state = FALSE;
+
if (!_bt_is_le_scanning()) {
BT_ERR("LE discovery start failed");
__bt_adapter_le_handle_pending_request_info(
scanner->is_scanning = TRUE;
/* Check scanning is in progress or not by other users */
- if (_bt_is_le_scanning()) {
+ if (is_le_actual_scanning_state == TRUE) {
int value = 1;
BT_INFO("LE Full Scan is already on progress");
g_idle_add(__send_le_scan_reply, (void *)(intptr_t)value);
result = BLUETOOTH_ERROR_NONE;
} else {
if (is_le_scan_hold == TRUE) {
+ /* Don't change any status, because the stack stops LE discovery internaly */
BT_INFO("Just remove LE scan hold info");
_bt_set_le_scan_stop_requested(FALSE);
is_le_scan_hold = FALSE;
- result = BLUETOOTH_ERROR_INTERNAL;
+ scanner->is_scanning = TRUE;
+ return BLUETOOTH_ERROR_DEVICE_BUSY;
} else if (_bt_is_mesh_initialized()) {
/* Do not stop LE scan if BLE mesh running */
int value = 0;
for (l = scanner_list; l != NULL; l = g_slist_next(l)) {
scanner = l->data;
+
scanner->is_scanning = FALSE;
}
}