summaryrefslogtreecommitdiff
path: root/plugins/dundee.c
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2012-06-01 16:11:26 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-06-04 16:20:51 +0300
commit9ab7ed03f468a89f6cc0812086294424e26380b4 (patch)
treebe78ee7f582eec05a310cb9785122c44e25d0c77 /plugins/dundee.c
parente688cd48b45a3afcd087aa26af98346fab974861 (diff)
downloadconnman-9ab7ed03f468a89f6cc0812086294424e26380b4.tar.gz
connman-9ab7ed03f468a89f6cc0812086294424e26380b4.tar.bz2
connman-9ab7ed03f468a89f6cc0812086294424e26380b4.zip
dundee: Register connman_network at core
Diffstat (limited to 'plugins/dundee.c')
-rw-r--r--plugins/dundee.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/dundee.c b/plugins/dundee.c
index f903a35a..ef23d373 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,