diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-11-13 07:50:18 +0900 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-11-13 07:50:18 +0900 |
commit | dff9239da62147966ce120a313f2d0dbe07dffe4 (patch) | |
tree | 2fbe4dc861d56d024f70205f4fa8536e5e17b203 /plugins/bluetooth.c | |
parent | ffd2b546e5eea2b361791bbe9062f1baf8530c35 (diff) | |
download | connman-dff9239da62147966ce120a313f2d0dbe07dffe4.tar.gz connman-dff9239da62147966ce120a313f2d0dbe07dffe4.tar.bz2 connman-dff9239da62147966ce120a313f2d0dbe07dffe4.zip |
Use technology information when reporting Tethering status
Diffstat (limited to 'plugins/bluetooth.c')
-rw-r--r-- | plugins/bluetooth.c | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 03a01dc6..985f0e64 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -948,6 +948,7 @@ static void tech_remove(struct connman_technology *technology) static void server_register_reply(DBusPendingCall *call, void *user_data) { + struct connman_technology *technology = user_data; DBusError error; DBusMessage *reply; @@ -968,11 +969,12 @@ static void server_register_reply(DBusPendingCall *call, void *user_data) dbus_message_unref(reply); dbus_pending_call_unref(call); - connman_technology_tethering_notify(NULL, TRUE); + connman_technology_tethering_notify(technology, TRUE); } static void server_unregister_reply(DBusPendingCall *call, void *user_data) { + struct connman_technology *technology = user_data; DBusError error; DBusMessage *reply; @@ -993,11 +995,12 @@ static void server_unregister_reply(DBusPendingCall *call, void *user_data) dbus_message_unref(reply); dbus_pending_call_unref(call); - connman_technology_tethering_notify(NULL, FALSE); + connman_technology_tethering_notify(technology, FALSE); } static void server_register(const char *path, const char *uuid, + struct connman_technology *technology, const char *bridge, connman_bool_t enabled) { DBusMessage *message; @@ -1037,60 +1040,59 @@ static void server_register(const char *path, const char *uuid, if (enabled == TRUE) dbus_pending_call_set_notify(call, server_register_reply, - NULL, NULL); + technology, NULL); else dbus_pending_call_set_notify(call, server_unregister_reply, - NULL, NULL); + technology, NULL); dbus_message_unref(message); } -static void enable_nap(gpointer key, gpointer value, - gpointer user_data) +struct tethering_info { + struct connman_technology *technology; + const char *bridge; +}; + +static void enable_nap(gpointer key, gpointer value, gpointer user_data) { + struct tethering_info *info = user_data; struct connman_device *device = value; - const char *bridge = user_data; const char *path; DBG(""); path = connman_device_get_string(device, "Path"); - server_register(path, "nap", bridge, TRUE); + server_register(path, "nap", info->technology, info->bridge, TRUE); } -static void disable_nap(gpointer key, gpointer value, - gpointer user_data) +static void disable_nap(gpointer key, gpointer value, gpointer user_data) { + struct tethering_info *info = user_data; struct connman_device *device = value; - const char *bridge = user_data; const char *path; DBG(""); path = connman_device_get_string(device, "Path"); - server_register(path, "nap", bridge, FALSE); + server_register(path, "nap", info->technology, info->bridge, FALSE); } static int tech_set_tethering(struct connman_technology *technology, const char *bridge, connman_bool_t enabled) { - char *bridge_name = g_strdup(bridge); + struct tethering_info info = { + .technology = technology, + .bridge = bridge, + }; DBG("bridge %s", bridge); - if (bridge_name == NULL) - return -ENOMEM; - if (enabled) - g_hash_table_foreach(bluetooth_devices, - enable_nap, bridge_name); + g_hash_table_foreach(bluetooth_devices, enable_nap, &info); else - g_hash_table_foreach(bluetooth_devices, - disable_nap, bridge_name); - - g_free(bridge_name); + g_hash_table_foreach(bluetooth_devices, disable_nap, &info); return 0; } |