BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- _bt_set_le_scan_status(FALSE);
+ if (result == BLUETOOTH_ERROR_NONE)
+ _bt_set_le_scan_status(FALSE);
return result;
}
#define HAL_PROP_DEVICE_BLE_ADV_DATA 0x17
#define HAL_PROP_ADAPTER_LOCAL_LE_FEAT 0x18
#define HAL_PROP_DEVICE_IS_ALIAS_SET 0x19
-#define HAL_PROP_ADAPTER_LE_DISCOVERY_FINISHED 0x1a
+#define HAL_PROP_ADAPTER_LE_DISCOVERY_STARTED 0x1a
+#define HAL_PROP_ADAPTER_LE_DISCOVERY_STOPPED 0x1b
struct hal_prop_device_info {
uint8_t version;
is_le_discovering = g_variant_get_boolean(value);
DBG("##LE Discovering = [%d]", is_le_discovering);
- if (is_le_discovering)
+ if (is_le_discovering) {
+ /* Send LE discovering started event */
+ size += __bt_insert_hal_properties(buf + size,
+ HAL_PROP_ADAPTER_LE_DISCOVERY_STARTED, 0, NULL);
+ ev->num_props++;
continue;
+ }
adapter_proxy = _bt_hal_get_adapter_proxy();
if (adapter_proxy == NULL) {
/* Send LE discovering finished event */
size += __bt_insert_hal_properties(buf + size,
- HAL_PROP_ADAPTER_LE_DISCOVERY_FINISHED, sizeof(gboolean), &is_le_discovering);
+ HAL_PROP_ADAPTER_LE_DISCOVERY_STOPPED, 0, NULL);
ev->num_props++;
} else if (!g_strcmp0(key, "Modalias")) {
char *modalias = NULL;
BT_PROPERTY_REMOTE_IS_ALIAS_SET,
/**
- * Description - Bluetooth Adapter LE Discovery finished
- * Data type - gboolean
+ * Description - Bluetooth Adapter LE Discovery started
*/
- BT_PROPERTY_ADAPTER_LE_DISCOVERY_FINISHED,
+ BT_PROPERTY_ADAPTER_LE_DISCOVERY_STARTED,
+
+ /**
+ * Description - Bluetooth Adapter LE Discovery stopped
+ */
+ BT_PROPERTY_ADAPTER_LE_DISCOVERY_STOPPED,
BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP = 0xFF,
} bt_property_type_t;
sizeof(event_adapter_le_features_t));
break;
}
- case BT_PROPERTY_ADAPTER_LE_DISCOVERY_FINISHED: {
- gboolean le_discovering = *(gboolean *)properties[i].val;
- if (le_discovering == FALSE) {
- BT_INFO("LE Discovery finished");
- send_event(OAL_EVENT_BLE_DISCOVERY_FINISHED, NULL, 0);
- }
+ case BT_PROPERTY_ADAPTER_LE_DISCOVERY_STARTED: {
+ BT_INFO("LE Discovery started");
+ send_event(OAL_EVENT_BLE_DISCOVERY_STARTED, NULL, 0);
+ break;
+ }
+ case BT_PROPERTY_ADAPTER_LE_DISCOVERY_STOPPED: {
+ BT_INFO("LE Discovery stopped");
+ send_event(OAL_EVENT_BLE_DISCOVERY_STOPPED, NULL, 0);
break;
}
default:
BT_ERR("Error:Start LE Discovery failed: %s", status2string(ret));
return convert_to_oal_status(ret);
}
- send_event(OAL_EVENT_BLE_DISCOVERY_STARTED, NULL, 0);
return OAL_STATUS_SUCCESS;
}
if (ret != BT_STATUS_SUCCESS) {
BT_ERR("Error:Stop LE Discovery failed: %s", status2string(ret));
return convert_to_oal_status(ret);
- } else
- send_event(OAL_EVENT_BLE_DISCOVERY_STOPPED, NULL, 0);
+ }
return OAL_STATUS_SUCCESS;
}
g_variant_new("(i)", result));
}
-
static void __bt_set_le_scan_status(gboolean mode)
{
+ BT_DBG("Set scanning status: %s", mode == TRUE ? "TRUE" : "FALSE");
is_le_scanning = mode;
}
}
case OAL_EVENT_BLE_DISCOVERY_STARTED: {
__bt_set_le_scan_status(TRUE);
-
__bt_adapter_le_handle_pending_request_info(
BLUETOOTH_ERROR_NONE,
BT_START_LE_DISCOVERY, NULL, 0);
}
__bt_set_le_scan_status(FALSE);
+ _bt_disable_all_scanner_status();
__bt_adapter_le_handle_pending_request_info(
BLUETOOTH_ERROR_NONE,
BT_STOP_LE_DISCOVERY, NULL, 0);
break;
}
- case OAL_EVENT_BLE_DISCOVERY_FINISHED: {
- _bt_disable_all_scanner_status();
- break;
- }
default:
break;
}
scanner_list = g_slist_append(scanner_list, scanner);
}
+ /* Check scanning is finished or not */
if (scanner->stop_pending == TRUE) {
BT_DBG("Waiting LEDiscoveryFinished");
g_timeout_add(500, (GSourceFunc)__start_le_scan_timeout, scanner->sender);
return BLUETOOTH_ERROR_NONE;
}
+ /* Check scanning is in progress or not */
if (scanner->is_scanning) {
BT_ERR("BT is already in LE scanning");
return BLUETOOTH_ERROR_IN_PROGRESS;
}
+ /* Check scanning is in progress or not by other users */
if (_bt_is_le_scanning()) {
int value = 1;
GSList *l;
int ret;
+ /* Check scanning is in progress or not */
scan_sender = __bt_find_scanner_from_list(sender);
if (scan_sender == NULL || scan_sender->is_scanning == FALSE)
return BLUETOOTH_ERROR_NOT_IN_OPERATION;