static DBusGConnection *manager_conn = NULL;
static DBusGConnection *obexd_conn = NULL;
static DBusGConnection *opc_obexd_conn = NULL;
+static GList *g_list = NULL;
static guint event_id;
dev_info->address = g_strdup(address);
} else if (strcasecmp(key, "Class") == 0) {
dbus_message_iter_get_basic(&iter_dict_val, &dev_info->class);
- } else if (strcasecmp(key, "name") == 0) {
+ } else if (strcasecmp(key, "Name") == 0) {
dbus_message_iter_get_basic(&iter_dict_val, &value);
if (dev_info->name == NULL)
dev_info->name = g_strdup(value);
} else if (strcasecmp(key, "Connected") == 0) {
dbus_message_iter_get_basic(&iter_dict_val,
&dev_info->connected);
- } else if (strcasecmp(key, "paired") == 0) {
+ } else if (strcasecmp(key, "Paired") == 0) {
dbus_message_iter_get_basic(&iter_dict_val,
&dev_info->paired);
} else if (strcasecmp(key, "Trusted") == 0) {
return BLUETOOTH_ERROR_NONE;
}
-void _bt_handle_adapter_event(DBusMessage *msg)
-{
- int result = BLUETOOTH_ERROR_NONE;
- DBusMessageIter item_iter;
- const char *member = dbus_message_get_member(msg);
-
- ret_if(member == NULL);
-
- if (strcasecmp(member, "DeviceCreated") == 0) {
- const char *object_path = NULL;
- char *address;
- bt_remote_dev_info_t *remote_dev_info;
-
- ret_if(_bt_is_device_creating() == FALSE);
-
- /* Bonding from remote device */
- address = g_malloc0(BT_ADDRESS_STRING_SIZE);
-
- dbus_message_iter_init(msg, &item_iter);
- dbus_message_iter_get_basic(&item_iter, &object_path);
- dbus_message_iter_next(&item_iter);
-
- _bt_convert_device_path_to_address(object_path, address);
-
- remote_dev_info = _bt_get_remote_device_info(address);
- if (remote_dev_info == NULL) {
- g_free(address);
- return;
- }
-
- _bt_free_device_info(remote_dev_info);
- g_free(address);
- } else if (strcasecmp(member, "InterfacesRemoved") == 0) {
- const char *object_path = NULL;
- char *address;
-
- /* Bonding from remote device */
- address = g_malloc0(BT_ADDRESS_STRING_SIZE);
-
- dbus_message_iter_init(msg, &item_iter);
- dbus_message_iter_get_basic(&item_iter, &object_path);
- dbus_message_iter_next(&item_iter);
-
- _bt_convert_device_path_to_address(object_path, address);
-
- _bt_send_event(BT_ADAPTER_EVENT,
- BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_STRING, &address,
- DBUS_TYPE_INVALID);
-
- g_free(address);
- }
-}
-
gboolean _bt_stop_discovery_timeout_cb(gpointer user_data)
{
DBusGProxy *adapter_proxy;
void __bt_adapter_property_changed_event(DBusMessageIter *msg_iter, const char *path)
{
- DBusGProxy *adapter_proxy;
int mode = 0;
int result = BLUETOOTH_ERROR_NONE;
DBusMessageIter value_iter;
BLUETOOTH_EVENT_DISCOVERY_STARTED,
DBUS_TYPE_INT32, &result,
DBUS_TYPE_INVALID);
+ _bt_get_temp_remote_devinfo();
} else {
if (event_id > 0){
g_source_remove(event_id);
}
__bt_discovery_finished();
}
- } else if (strcasecmp(property, "Name") == 0) {
+ } else if (strcasecmp(property, "Alias") == 0) {
char *name = NULL;
dbus_message_iter_recurse(&dict_iter, &value_iter);
DBUS_TYPE_INT32, &result,
DBUS_TYPE_STRING, &name,
DBUS_TYPE_INVALID);
+ } else if (strcasecmp(property, "Powered") == 0) {
+ gboolean power = FALSE;
+
+ dbus_message_iter_recurse(&dict_iter, &value_iter);
+ dbus_message_iter_get_basic(&value_iter, &power);
+
+ BT_DBG("power state changed: %d", power);
+
+ if (power == TRUE)
+ _bt_set_enabled();
+ else
+ _bt_set_disabled();
+
} else if (strcasecmp(property, "Discoverable") == 0) {
gboolean discoverable = FALSE;
if (discoverable == FALSE) {
if (_bt_get_discoverable_timeout_property() > 0) {
+ DBusGProxy *adapter_proxy;
g_value_init(&timeout, G_TYPE_UINT);
g_value_set_uint(&timeout, 0);
for (i = 0; i<remote_dev_info->uuid_count; i++) {
char *uuid = remote_dev_info->uuids[i];
if (strcasecmp(uuid, HID_UUID) == 0){
- int event = BLUETOOTH_EVENT_NONE;
-
- event = (connected == TRUE) ?
+ int event = (connected == TRUE) ?
BLUETOOTH_HID_CONNECTED :
BLUETOOTH_HID_DISCONNECTED;
dbus_message_iter_recurse(msg_iter, &item_iter);
- if (dbus_message_iter_get_arg_type(&item_iter)
- != DBUS_TYPE_DICT_ENTRY) {
- BT_ERR("This is bad format dbus\n");
- return;
- }
+ do {
+ if (dbus_message_iter_get_arg_type(&item_iter)
+ != DBUS_TYPE_DICT_ENTRY) {
+ BT_ERR("This is bad format dbus\n");
+ return;
+ }
- dbus_message_iter_recurse(&item_iter, &dict_iter);
+ dbus_message_iter_recurse(&item_iter, &dict_iter);
- dbus_message_iter_get_basic(&dict_iter, &property);
- ret_if(property == NULL);
+ dbus_message_iter_get_basic(&dict_iter, &property);
+ ret_if(property == NULL);
- ret_if(!dbus_message_iter_next(&dict_iter));
+ ret_if(!dbus_message_iter_next(&dict_iter));
- if (strcasecmp(property, "Connected") == 0) {
- gboolean connected = FALSE;
+ if (strcasecmp(property, "Connected") == 0) {
+ gboolean connected = FALSE;
- dbus_message_iter_recurse(&dict_iter, &value_iter);
- dbus_message_iter_get_basic(&value_iter, &connected);
+ dbus_message_iter_recurse(&dict_iter, &value_iter);
+ dbus_message_iter_get_basic(&value_iter, &connected);
- event = connected ? BLUETOOTH_EVENT_DEVICE_CONNECTED :
- BLUETOOTH_EVENT_DEVICE_DISCONNECTED;
+ event = connected ? BLUETOOTH_EVENT_DEVICE_CONNECTED :
+ BLUETOOTH_EVENT_DEVICE_DISCONNECTED;
- address = g_malloc0(BT_ADDRESS_STRING_SIZE);
+ address = g_malloc0(BT_ADDRESS_STRING_SIZE);
- _bt_convert_device_path_to_address(path, address);
+ _bt_convert_device_path_to_address(path, address);
- BT_DBG("connected: %d", connected);
- BT_DBG("address: %s", address);
+ BT_DBG("connected: %d", connected);
+ BT_DBG("address: %s", address);
- remote_dev_info = _bt_get_remote_device_info(address);
+ remote_dev_info = _bt_get_remote_device_info(address);
- if (remote_dev_info != NULL) {
- __bt_device_remote_connected_properties(
- remote_dev_info, address, connected);
- }
+ if (remote_dev_info != NULL) {
+ __bt_device_remote_connected_properties(
+ remote_dev_info, address, connected);
+ }
- /* Send event to application */
- _bt_send_event(BT_DEVICE_EVENT,
- event,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_STRING, &address,
- DBUS_TYPE_INVALID);
+ /* Send event to application */
+ _bt_send_event(BT_DEVICE_EVENT,
+ event,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &address,
+ DBUS_TYPE_INVALID);
- g_free(address);
+ g_free(address);
- } else if (strcasecmp(property, "Paired") == 0) {
- gboolean paired = FALSE;
- bt_remote_dev_info_t *remote_dev_info;
+ } else if (strcasecmp(property, "Paired") == 0) {
+ gboolean paired = FALSE;
+ GList *node;
- dbus_message_iter_recurse(&dict_iter, &value_iter);
- dbus_message_iter_get_basic(&value_iter, &paired);
+ dbus_message_iter_recurse(&dict_iter, &value_iter);
+ dbus_message_iter_get_basic(&value_iter, &paired);
- ret_if(paired == FALSE);
+ ret_if(paired == FALSE);
- /* BlueZ sends paired signal for each paired device */
- /* during activation, We should ignore this, otherwise*/
- /* application thinks that a new device got paired */
- if (_bt_adapter_get_status() != BT_ACTIVATED) {
- BT_DBG("BT is not activated, so ignore this");
- return;
- }
+ /* BlueZ sends paired signal for each paired device */
+ /* during activation, We should ignore this, otherwise*/
+ /* application thinks that a new device got paired */
+ if (_bt_adapter_get_status() != BT_ACTIVATED) {
+ BT_DBG("BT is not activated, so ignore this");
+ return;
+ }
- if (_bt_is_device_creating() == TRUE) {
- BT_DBG("Try to Pair by me");
- return;
- }
+ address = g_malloc0(BT_ADDRESS_STRING_SIZE);
- address = g_malloc0(BT_ADDRESS_STRING_SIZE);
+ _bt_convert_device_path_to_address(path, address);
- _bt_convert_device_path_to_address(path, address);
+ remote_dev_info = _bt_get_remote_device_info(address);
+ if (remote_dev_info == NULL) {
+ g_free(address);
+ return;
+ }
- remote_dev_info = _bt_get_remote_device_info(address);
- if (remote_dev_info == NULL) {
- g_free(address);
- return;
- }
+ node = g_list_first(g_list);
- _bt_send_event(BT_ADAPTER_EVENT,
- BLUETOOTH_EVENT_BONDING_FINISHED,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_STRING, &address,
- DBUS_TYPE_UINT32, &remote_dev_info->class,
- DBUS_TYPE_INT16, &remote_dev_info->rssi,
- DBUS_TYPE_STRING, &remote_dev_info->name,
- DBUS_TYPE_BOOLEAN, &remote_dev_info->paired,
- DBUS_TYPE_BOOLEAN, &remote_dev_info->connected,
- DBUS_TYPE_BOOLEAN, &remote_dev_info->trust,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
- &remote_dev_info->uuids, remote_dev_info->uuid_count,
- DBUS_TYPE_INVALID);
+ while (node != NULL) {
+ bt_remote_dev_info_t *dev_info;
+ dev_info = (bt_remote_dev_info_t *)node->data;
+ if (strcasecmp(dev_info->address, address) == 0) {
+ g_list = g_list_remove(g_list, dev_info);
+ _bt_free_device_info(dev_info);
+ }
+ node = g_list_next(node);
+ }
- _bt_free_device_info(remote_dev_info);
- g_free(address);
- }
+ if (_bt_is_device_creating() == TRUE) {
+ BT_DBG("Try to Pair by me or already paired");
+ } else {
+ _bt_send_event(BT_ADAPTER_EVENT,
+ BLUETOOTH_EVENT_BONDING_FINISHED,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &address,
+ DBUS_TYPE_UINT32, &remote_dev_info->class,
+ DBUS_TYPE_INT16, &remote_dev_info->rssi,
+ DBUS_TYPE_STRING, &remote_dev_info->name,
+ DBUS_TYPE_BOOLEAN, &remote_dev_info->paired,
+ DBUS_TYPE_BOOLEAN, &remote_dev_info->connected,
+ DBUS_TYPE_BOOLEAN, &remote_dev_info->trust,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
+ &remote_dev_info->uuids, remote_dev_info->uuid_count,
+ DBUS_TYPE_INVALID);
+ }
+
+ _bt_free_device_info(remote_dev_info);
+ g_free(address);
+ }
+ } while (dbus_message_iter_next(&item_iter));
}
void __bt_obex_property_changed_event(DBusMessageIter *msg_iter, const char *path)
ret_if(property == NULL);
if (strcasecmp(property, "Connected") == 0) {
- int event = BLUETOOTH_EVENT_NONE;
+ int event;
char *address;
dbus_message_iter_next(&item_iter);
void _bt_handle_device_event(DBusMessage *msg)
{
- int event;
int result = BLUETOOTH_ERROR_NONE;
DBusMessageIter item_iter;
DBusMessageIter value_iter;
ret_if(property == NULL);
if (strcasecmp(property, "Connected") == 0) {
+ int event;
gboolean connected = FALSE;
dbus_message_iter_next(&item_iter);
dbus_message_iter_recurse(&item_iter, &value_iter);
ret_if(!dbus_message_iter_next(&dict_iter));
if (strcasecmp(property, "Connected") == 0) {
- int event = BLUETOOTH_EVENT_NONE;
+ int event;
char *address;
dbus_message_iter_recurse(&dict_iter, &value_iter);
return BLUETOOTH_ERROR_NONE;
}
+static void __bt_devices_list_free()
+{
+ GList *node;
+
+ node = g_list_first(g_list);
+
+ while (node != NULL){
+ bt_remote_dev_info_t *dev_info;
+ dev_info = (bt_remote_dev_info_t *)node->data;
+
+ g_list = g_list_remove(g_list, dev_info);
+ _bt_free_device_info(dev_info);
+
+ node = g_list_next(node);
+ }
+}
+
static DBusHandlerResult __bt_manager_event_filter(DBusConnection *conn,
DBusMessage *msg, void *data)
{
retv_if(member == NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+ BT_DBG("interface: %s | member: %s", dbus_message_get_interface(msg), member);
+
if (strcasecmp(member, "InterfacesAdded") == 0) {
char *object_path = NULL;
- BT_DBG("InterfacesAdded");
-
if (__bt_get_object_path(msg, &object_path)) {
BT_ERR("Fail to get the path");
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
- if (strcasecmp(object_path, BT_BLUEZ_HCI_PATH) == 0) {
- _bt_handle_adapter_added();
- } else {
- bt_event = __bt_parse_event(msg);
-
- if (bt_event == BT_DEVICE_EVENT) {
- bt_remote_dev_info_t *dev_info;
- int result = BLUETOOTH_ERROR_NONE;
+ bt_event = __bt_parse_event(msg);
- retv_if(_bt_is_discovering() == FALSE,
- DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+ if (bt_event == BT_DEVICE_EVENT) {
+ bt_remote_dev_info_t *dev_info;
+ int result = BLUETOOTH_ERROR_NONE;
- dev_info = __bt_parse_interface(msg);
+ retv_if(_bt_is_discovering() == FALSE,
+ DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
- if (dev_info == NULL) {
- BT_ERR("Fail to parse the properies");
- return
- DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
+ dev_info = __bt_parse_interface(msg);
- if (dev_info->name == NULL)
- dev_info->name = g_strdup("");
+ if (dev_info == NULL) {
+ BT_ERR("Fail to parse the properies");
+ return
+ DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
- _bt_send_event(BT_ADAPTER_EVENT,
- BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_STRING, &dev_info->address,
- DBUS_TYPE_UINT32, &dev_info->class,
- DBUS_TYPE_INT16, &dev_info->rssi,
- DBUS_TYPE_STRING, &dev_info->name,
- DBUS_TYPE_BOOLEAN, &dev_info->paired,
- DBUS_TYPE_BOOLEAN,
- &dev_info->connected,
- DBUS_TYPE_BOOLEAN, &dev_info->trust,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
- &dev_info->uuids, dev_info->uuid_count,
- DBUS_TYPE_INVALID);
+ if (dev_info->name == NULL)
+ dev_info->name = g_strdup("");
+ _bt_send_event(BT_ADAPTER_EVENT,
+ BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &dev_info->address,
+ DBUS_TYPE_UINT32, &dev_info->class,
+ DBUS_TYPE_INT16, &dev_info->rssi,
+ DBUS_TYPE_STRING, &dev_info->name,
+ DBUS_TYPE_BOOLEAN, &dev_info->paired,
+ DBUS_TYPE_BOOLEAN,
+ &dev_info->connected,
+ DBUS_TYPE_BOOLEAN, &dev_info->trust,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
+ &dev_info->uuids, dev_info->uuid_count,
+ DBUS_TYPE_INVALID);
+ if (!dev_info->paired)
+ g_list = g_list_append(g_list, dev_info);
+ else
_bt_free_device_info(dev_info);
- }else if (bt_event == BT_MEDIA_TRANSFER_EVENT) {
- __bt_parse_audio_properties(msg);
- }
+ } else if (bt_event == BT_MEDIA_TRANSFER_EVENT) {
+ __bt_parse_audio_properties(msg);
}
+
} else if (strcasecmp(member, "InterfacesRemoved") == 0) {
- BT_DBG("InterfacesRemoved");
+
bt_event = __bt_parse_remove_event(msg);
if (bt_event == BT_MEDIA_TRANSFER_EVENT){
_bt_parse_audio_remove_properties(msg);
- }else{
- _bt_handle_adapter_event(msg);
- }
+ } else if (bt_event == BT_DEVICE_EVENT) {
+ char *object_path = NULL;
+ if (__bt_get_object_path(msg, &object_path)) {
+ BT_ERR("Fail to get the path");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+
+ if (strncasecmp(object_path, BT_BLUEZ_HCI_DEV_PATH, strlen(BT_BLUEZ_HCI_DEV_PATH)) == 0) {
+ int result = BLUETOOTH_ERROR_NONE;
+ char *address;
+ bt_remote_dev_info_t *dev_info;
+ GList * node;
+ gboolean is_in_glist = FALSE;
+
+ BT_DBG("device interface removed | path: %s", object_path);
+
+ /* Remove bonding from remote device */
+ address = g_malloc0(BT_ADDRESS_STRING_SIZE);
+
+ _bt_convert_device_path_to_address(object_path, address);
+
+ node = g_list_first(g_list);
+
+ while (node != NULL) {
+ dev_info = (bt_remote_dev_info_t *)node->data;
+ if (strcasecmp(dev_info->address, address) == 0) {
+ is_in_glist = TRUE;
+
+ BT_DBG("Bluez removes device %s, send device disappear event", dev_info->name);
+ _bt_send_event(BT_ADAPTER_EVENT,
+ BLUETOOTH_EVENT_REMOTE_DEVICE_DISAPPEARED,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &dev_info->address,
+ DBUS_TYPE_UINT32, &dev_info->class,
+ DBUS_TYPE_INT16, &dev_info->rssi,
+ DBUS_TYPE_STRING, &dev_info->name,
+ DBUS_TYPE_BOOLEAN, &dev_info->paired,
+ DBUS_TYPE_BOOLEAN, &dev_info->connected,
+ DBUS_TYPE_BOOLEAN, &dev_info->trust,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
+ &dev_info->uuids, dev_info->uuid_count,
+ DBUS_TYPE_INVALID);
+
+ g_list = g_list_remove(g_list, dev_info);
+ _bt_free_device_info(dev_info);
+ break;
+ }
+ node = g_list_next(node);
+ }
+ /* if device is not in glist, we need to trig destroy bonding event */
+ if (!is_in_glist) {
+ BT_DBG("send bt bond destroy event");
+ _bt_send_event(BT_ADAPTER_EVENT,
+ BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &address,
+ DBUS_TYPE_INVALID);
+ }
+ g_free(address);
+ }
+ } else {
+ char *object_path = NULL;
+ if (__bt_get_object_path(msg, &object_path)) {
+ BT_ERR("Fail to get the path");
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ }
+ }
} else if (strcasecmp(member, "NameOwnerChanged") == 0) {
gboolean value;
char *name = NULL;
char *previous = NULL;
char *current = NULL;
+ BT_DBG("NameOwnerChanged");
+
if (__bt_get_owner_info(msg, &name, &previous, ¤t)) {
BT_ERR("Fail to get the owner info");
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
if (strcasecmp(name, "org.bluez") == 0) {
BT_DBG("Bluetoothd is terminated");
_bt_handle_adapter_removed();
+ __bt_devices_list_free();
}
_bt_obex_server_check_allocation(&value);
}
} else if (dbus_message_has_interface(msg, BT_PROPERTIES_INTERFACE)) {
_bt_handle_property_changed_event(msg);
- } else if (dbus_message_has_interface(msg, BT_ADAPTER_INTERFACE)) {
- _bt_handle_adapter_event(msg);
} else if (dbus_message_has_interface(msg, BT_INPUT_INTERFACE)) {
_bt_handle_input_event(msg);
} else if (dbus_message_has_interface(msg, BT_NETWORK_SERVER_INTERFACE)) {
void _bt_get_temp_remote_devinfo(void)
{
- GArray *devinfo = NULL;
- bt_remote_dev_info_t dev_info;
- int result, size, i;
+ bt_remote_dev_info_t *dev_info;
+ GList *node;
+ int result = BLUETOOTH_ERROR_NONE;
- devinfo = g_array_new(FALSE, FALSE, sizeof(gchar));
+ node = g_list_first(g_list);
- result = _bt_get_remote_found_devices(&devinfo);
+ while (node != NULL) {
+ dev_info = (bt_remote_dev_info_t *)node->data;
- if (result != BLUETOOTH_ERROR_NONE)
- {
- BT_DBG("_bt_get_temp_remote_devinfo failed with [%d]",result);
- }
- else
- {
- size = devinfo->len;
- size = (devinfo->len) / sizeof(bt_remote_dev_info_t);
-
- for (i=0; i<size; i++)
- {
- dev_info = g_array_index(devinfo,
- bt_remote_dev_info_t, i);
+ _bt_send_event(BT_ADAPTER_EVENT,
+ BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,
+ DBUS_TYPE_INT32, &result,
+ DBUS_TYPE_STRING, &dev_info->address,
+ DBUS_TYPE_UINT32, &dev_info->class,
+ DBUS_TYPE_INT16, &dev_info->rssi,
+ DBUS_TYPE_STRING, &dev_info->name,
+ DBUS_TYPE_BOOLEAN, &dev_info->paired,
+ DBUS_TYPE_BOOLEAN, &dev_info->connected,
+ DBUS_TYPE_BOOLEAN, &dev_info->trust,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
+ &dev_info->uuids, dev_info->uuid_count,
+ DBUS_TYPE_INVALID);
- _bt_send_event(BT_ADAPTER_EVENT,
- BLUETOOTH_EVENT_REMOTE_DEVICE_FOUND,
- DBUS_TYPE_INT32, &result,
- DBUS_TYPE_STRING, &dev_info.address,
- DBUS_TYPE_UINT32, &dev_info.class,
- DBUS_TYPE_INT16, &dev_info.rssi,
- DBUS_TYPE_STRING, &dev_info.name,
- DBUS_TYPE_BOOLEAN, &dev_info.paired,
- DBUS_TYPE_BOOLEAN, &dev_info.connected,
- DBUS_TYPE_BOOLEAN, &dev_info.trust,
- DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
- &dev_info.uuids, dev_info.uuid_count,
- DBUS_TYPE_INVALID);
- }
+ node = g_list_next(node);
}
-
- g_array_free(devinfo, TRUE);
}