le_adv_slot = NULL;
}
-int _bt_service_adapter_le_init(void)
-{
- le_adv_slot = g_malloc0(sizeof(bt_adapter_le_adv_slot_t) * le_feature_info.adv_inst_max);
-
- return BLUETOOTH_ERROR_NONE;
-}
-
-void _bt_service_adapter_le_deinit(void)
-{
- __bt_free_le_adv_slot();
-}
-
gboolean _bt_update_le_feature_support(const char *item, const char *value)
{
if (item == NULL || value == NULL)
return FALSE;
+ if (!le_adv_slot)
+ _bt_service_adapter_le_init();
+
if (g_strcmp0(item, "adv_inst_max") == 0) {
int slot_num;
scanner = __bt_find_scanner_from_list(sender);
if (scanner == NULL) {
scanner = g_malloc0(sizeof(bt_adapter_le_scanner_t));
- scanner->sender = strdup(sender);
+ scanner->sender = g_strdup(sender);
scanner_list = g_slist_append(scanner_list, scanner);
}
if (scanner == NULL) {
scanner = g_malloc0(sizeof(bt_adapter_le_scanner_t));
- scanner->sender = strdup(sender);
+ scanner->sender = g_strdup(sender);
scanner_list = g_slist_append(scanner_list, scanner);
}
}
}
+static void __bt_free_le_scanner(void)
+{
+ GSList *l;
+ bt_adapter_le_scanner_t *scanner;
+
+ for (l = scanner_list; l != NULL; l = g_slist_next(l)) {
+ scanner = l->data;
+ g_free(scanner->sender);
+ g_slist_free_full(scanner->filter_list, g_free);
+ g_free(scanner);
+ }
+
+ g_slist_free(scanner_list);
+ scanner_list = NULL;
+
+ scan_filter_enabled = FALSE;
+ is_le_scanning = FALSE;
+ is_le_set_scan_parameter = FALSE;
+}
+
void _bt_set_le_scan_status(gboolean mode)
{
is_le_scanning = mode;
return BLUETOOTH_ERROR_NONE;
}
+
+int _bt_service_adapter_le_init(void)
+{
+ le_adv_slot = g_malloc0(sizeof(bt_adapter_le_adv_slot_t) * le_feature_info.adv_inst_max);
+
+ return BLUETOOTH_ERROR_NONE;
+}
+
+void _bt_service_adapter_le_deinit(void)
+{
+ __bt_free_le_adv_slot();
+ __bt_free_le_scanner();
+}
g_variant_get(val, "b", &discovering);
/* Send event to application */
BT_DBG("Discovering %d", discovering);
+ if (_bt_adapter_get_status() != BT_ACTIVATED)
+ return;
+
if (discovering == TRUE) {
_bt_set_discovery_status(TRUE);
param = g_variant_new("(i)", result);
gboolean le_discovering = FALSE;
g_variant_get(val, "b", &le_discovering);
+ BT_DBG("LEDiscovering %d", le_discovering);
+ if (_bt_adapter_get_status() != BT_ACTIVATED ||
+ _bt_adapter_get_le_status() != BT_LE_ACTIVATED)
+ return;
+
/* Send event to application */
if (le_discovering == TRUE) {
_bt_set_le_scan_status(TRUE);
}
_bt_handle_adapter_removed();
__bt_devices_list_free();
+ _bt_service_adapter_le_deinit();
}
_bt_obex_server_check_allocation(&value);