From 9ab7ed03f468a89f6cc0812086294424e26380b4 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Fri, 1 Jun 2012 16:11:26 +0200 Subject: [PATCH] dundee: Register connman_network at core --- plugins/dundee.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/plugins/dundee.c b/plugins/dundee.c index f903a35..ef23d37 100644 --- a/plugins/dundee.c +++ b/plugins/dundee.c @@ -57,6 +57,7 @@ struct dundee_data { char *name; struct connman_device *device; + struct connman_network *network; connman_bool_t active; @@ -118,6 +119,12 @@ static void destroy_device(struct dundee_data *info) { connman_device_set_powered(info->device, FALSE); + if (info->network != NULL) { + connman_device_remove_network(info->device, info->network); + connman_network_unref(info->network); + info->network = NULL; + } + connman_device_unregister(info->device); connman_device_unref(info->device); @@ -137,6 +144,40 @@ static void device_destroy(gpointer data) g_free(info); } +static void create_network(struct dundee_data *info) +{ + struct connman_network *network; + const char *group; + + DBG("%s", info->path); + + network = connman_network_create(info->path, + CONNMAN_NETWORK_TYPE_BLUETOOTH_DUN); + if (network == NULL) + return; + + DBG("network %p", network); + + connman_network_set_data(network, info); + + connman_network_set_string(network, "Path", + info->path); + + connman_network_set_name(network, info->name); + + group = get_ident(info->path); + connman_network_set_group(network, group); + + connman_network_set_available(network, TRUE); + + if (connman_device_add_network(info->device, network) < 0) { + connman_network_unref(network); + return; + } + + info->network = network; +} + static int network_probe(struct connman_network *network) { DBG("network %p", network); @@ -360,6 +401,9 @@ static gboolean device_changed(DBusConnection *connection, info->name = g_strdup(name); DBG("%s Name %s", info->path, info->name); + + connman_network_set_name(info->network, info->name); + connman_network_update(info->network); } return TRUE; @@ -414,6 +458,7 @@ static void add_device(const char *path, DBusMessageIter *properties) g_hash_table_insert(dundee_devices, g_strdup(path), info); create_device(info); + create_network(info); } static gboolean device_added(DBusConnection *connection, DBusMessage *message, -- 2.7.4