static void extract_manager_properties(DBusMessage *message) { DBusMessageIter iter, array; dbus_message_iter_init(message, &iter); dbus_message_iter_recurse(&iter, &array); extract_properties(&array); }
//TaggedSection function bodies================================================= TaggedSection::TaggedSection(data_tag pProps, bool mMain) : IsMainSection(mMain) { //set the data separator for output filtering Separator = "\t"; //extract section properties extract_properties(pProps, Properties); if (IsMainSection) //set tag type for subsections__________________________________________ { TAG_TYPE = get_property_value(Properties, SECTION_TYPE); OPEN_TAG = construct_open(TAG_TYPE); CLOSE_TAG = construct_close(TAG_TYPE); } //______________________________________________________________________ }
static void adapter_properties_reply(DBusPendingCall *call, void *user_data) { char *path = user_data; struct connman_device *device; DBusMessage *reply; DBusMessageIter networks; const char *address = NULL, *name = NULL; dbus_bool_t powered = FALSE, scanning = FALSE; struct ether_addr addr; char ident[13]; DBG("path %s", path); reply = dbus_pending_call_steal_reply(call); if (path == NULL) goto done; extract_properties(reply, NULL, &address, &name, NULL, &powered, &scanning, NULL, &networks); if (address == NULL) goto done; if (g_strcmp0(address, "00:00:00:00:00:00") == 0) goto done; device = g_hash_table_lookup(bluetooth_devices, path); if (device != NULL) goto update; ether_aton_r(address, &addr); snprintf(ident, 13, "%02x%02x%02x%02x%02x%02x", addr.ether_addr_octet[0], addr.ether_addr_octet[1], addr.ether_addr_octet[2], addr.ether_addr_octet[3], addr.ether_addr_octet[4], addr.ether_addr_octet[5]); device = connman_device_create("bluetooth_legacy", CONNMAN_DEVICE_TYPE_BLUETOOTH); if (device == NULL) goto done; g_hash_table_insert(bluetooth_devices, g_strdup(path), device); connman_device_set_ident(device, ident); connman_device_set_string(device, "Path", path); if (connman_device_register(device) < 0) { connman_device_unref(device); g_hash_table_remove(bluetooth_devices, path); goto done; } update: connman_device_set_string(device, "Address", address); connman_device_set_string(device, "Name", name); connman_device_set_string(device, "Path", path); connman_device_set_powered(device, powered); connman_device_set_scanning(device, scanning); if (powered == FALSE) { remove_device_networks(device); add_pending_networks(path, &networks); } else check_networks(&networks); done: dbus_message_unref(reply); dbus_pending_call_unref(call); }
static void network_properties_reply(DBusPendingCall *call, void *user_data) { char *path = user_data; struct connman_device *device; struct connman_network *network; DBusMessage *reply; DBusMessageIter uuids; const char *parent = NULL, *address = NULL, *name = NULL; struct ether_addr addr; char ident[13]; reply = dbus_pending_call_steal_reply(call); extract_properties(reply, &parent, &address, NULL, &name, NULL, NULL, &uuids, NULL); if (parent == NULL) goto done; device = g_hash_table_lookup(bluetooth_devices, parent); if (device == NULL) goto done; if (address == NULL) goto done; ether_aton_r(address, &addr); snprintf(ident, 13, "%02x%02x%02x%02x%02x%02x", addr.ether_addr_octet[0], addr.ether_addr_octet[1], addr.ether_addr_octet[2], addr.ether_addr_octet[3], addr.ether_addr_octet[4], addr.ether_addr_octet[5]); if (has_pan(&uuids) == FALSE) goto done; network = connman_device_get_network(device, ident); if (network != NULL) goto done; network = connman_network_create(ident, CONNMAN_NETWORK_TYPE_BLUETOOTH_PAN); if (network == NULL) goto done; connman_network_set_string(network, "Path", path); connman_network_set_name(network, name); g_hash_table_replace(bluetooth_networks, g_strdup(path), network); connman_device_add_network(device, network); connman_network_set_group(network, ident); done: dbus_message_unref(reply); dbus_pending_call_unref(call); }