diff options
Diffstat (limited to 'meta/recipes-connectivity/connman/connman-gnome/0002-Update-for-ConnMan-0.79-API-changes.patch')
-rw-r--r-- | meta/recipes-connectivity/connman/connman-gnome/0002-Update-for-ConnMan-0.79-API-changes.patch | 865 |
1 files changed, 0 insertions, 865 deletions
diff --git a/meta/recipes-connectivity/connman/connman-gnome/0002-Update-for-ConnMan-0.79-API-changes.patch b/meta/recipes-connectivity/connman/connman-gnome/0002-Update-for-ConnMan-0.79-API-changes.patch deleted file mode 100644 index fe87b5b71d..0000000000 --- a/meta/recipes-connectivity/connman/connman-gnome/0002-Update-for-ConnMan-0.79-API-changes.patch +++ /dev/null @@ -1,865 +0,0 @@ -From 8b8fd038474def8452354105b40738a402f28d19 Mon Sep 17 00:00:00 2001 -Message-Id: <8b8fd038474def8452354105b40738a402f28d19.1334369310.git.paul.eggleton@linux.intel.com> -In-Reply-To: <cover.1334369310.git.paul.eggleton@linux.intel.com> -References: <cover.1334369310.git.paul.eggleton@linux.intel.com> -From: Paul Eggleton <paul.eggleton@linux.intel.com> -Date: Thu, 12 Apr 2012 00:35:00 +0100 -Subject: [PATCH 2/6] Update for ConnMan 0.79 API changes - -* Use Manager.GetServices method instead of Manager.Services property -* Use Manager.GetTechnologies / Technology.Powered instead of - Manager.EnabledTechnologies method -* Use Technology.Powered property instead of Manager.EnableTechnology - and Manager.DisableTechnology methods -* Use Technology.Scan method instead of Manager.RequestScan method -* Listen for ServicesAdded, ServicesRemoved, TechnologyAdded and - TechnologyRemoved signals instead of monitoring the old Services - and EnabledTechnologies properties - -Also remove unused code relating to the old API. - -Upstream-Status: Submitted - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> ---- - common/connman-client.c | 90 ++----------- - common/connman-client.h | 12 +- - common/connman-dbus.c | 359 +++++++++++++++++++++++++++-------------------- - common/connman-dbus.h | 1 + - common/connman-dbus.xml | 17 +-- - common/marshal.list | 2 + - properties/cellular.c | 6 +- - properties/ethernet.c | 8 +- - properties/main.c | 14 +-- - properties/wifi.c | 8 +- - 10 files changed, 245 insertions(+), 272 deletions(-) - -diff --git a/common/connman-client.c b/common/connman-client.c -index 407aea0..9d755c4 100644 ---- a/common/connman-client.c -+++ b/common/connman-client.c -@@ -112,9 +112,7 @@ static void connman_client_init(ConnmanClient *client) - G_TYPE_STRING, /* address */ - G_TYPE_STRING, /* netmask */ - G_TYPE_STRING, /* gateway */ -- G_TYPE_BOOLEAN, /* ethernet enabled */ -- G_TYPE_BOOLEAN, /* wifi enabled */ -- G_TYPE_BOOLEAN, /* cellular enabled */ -+ G_TYPE_BOOLEAN, /* powered */ - G_TYPE_BOOLEAN);/* offline */ - - g_object_set_data(G_OBJECT(priv->store), -@@ -288,7 +286,7 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device, - DBusGProxy *proxy; - GValue value = { 0 }; - -- DBG("client %p", client); -+ DBG("client %p device %s", client, device); - - if (device == NULL) - return; -@@ -300,64 +298,34 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device, - g_value_init(&value, G_TYPE_BOOLEAN); - g_value_set_boolean(&value, powered); - -- connman_set_property(proxy, "Powered", &value, NULL); -- -- g_object_unref(proxy); --} -- --static gboolean device_scan(GtkTreeModel *model, GtkTreePath *path, -- GtkTreeIter *iter, gpointer user_data) --{ -- DBusGProxy *proxy; -- -- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -1); -- -- if (proxy == NULL) -- return FALSE; -- -- if (g_str_equal(dbus_g_proxy_get_interface(proxy), -- CONNMAN_SERVICE_INTERFACE) == FALSE) -- return FALSE; -- -- connman_propose_scan(proxy, NULL); -+ GError *error = NULL; -+ gboolean ret = connman_set_property(proxy, "Powered", &value, &error); -+ if( error ) -+ fprintf (stderr, "error: %s\n", error->message); - - g_object_unref(proxy); -- -- return FALSE; - } - --void connman_client_propose_scan(ConnmanClient *client, const gchar *device) -+void connman_client_scan(ConnmanClient *client, const gchar *device, -+ connman_scan_reply callback, gpointer user_data) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - DBusGProxy *proxy; - -- DBG("client %p", client); -+ DBG("client %p device %s", client, device); - -- if (device == NULL) { -- gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), -- device_scan, NULL); -+ if (device == NULL) - return; -- } - - proxy = connman_dbus_get_proxy(priv->store, device); - if (proxy == NULL) - return; - -- connman_propose_scan(proxy, NULL); -+ connman_scan_async(proxy, callback, user_data); - - g_object_unref(proxy); - } - --void connman_client_request_scan(ConnmanClient *client, char *scantype, -- connman_request_scan_reply callback, gpointer userdata) --{ -- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- -- DBG("client %p", client); -- -- connman_request_scan_async(priv->manager, scantype, callback, userdata); --} -- - gboolean connman_client_get_offline_status(ConnmanClient *client) - { - GHashTable *hash; -@@ -600,39 +568,3 @@ void connman_client_remove(ConnmanClient *client, const gchar *network) - - g_object_unref(proxy); - } -- --void connman_client_enable_technology(ConnmanClient *client, const char *network, -- const gchar *technology) --{ -- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- DBusGProxy *proxy; -- -- if (network== NULL) -- return; -- -- proxy = connman_dbus_get_proxy(priv->store, network); -- if (proxy == NULL) -- return; -- -- connman_enable_technology(proxy, technology, NULL); -- -- g_object_unref(proxy); --} -- --void connman_client_disable_technology(ConnmanClient *client, const char *network, -- const gchar *technology) --{ -- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- DBusGProxy *proxy; -- -- if (network == NULL) -- return; -- -- proxy = connman_dbus_get_proxy(priv->store, network); -- if (proxy == NULL) -- return; -- -- connman_disable_technology(proxy, technology, NULL); -- -- g_object_unref(proxy); --} -diff --git a/common/connman-client.h b/common/connman-client.h -index 15fa098..6fe772c 100644 ---- a/common/connman-client.h -+++ b/common/connman-client.h -@@ -69,7 +69,8 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device, - gboolean powered); - gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device, - struct ipv4_config *ipv4_config); --void connman_client_propose_scan(ConnmanClient *client, const gchar *device); -+void connman_client_scan(ConnmanClient *client, const gchar *device, -+ connman_scan_reply callback, gpointer user_data); - - void connman_client_connect(ConnmanClient *client, const gchar *network); - void connman_client_disconnect(ConnmanClient *client, const gchar *network); -@@ -89,8 +90,6 @@ void connman_client_set_callback(ConnmanClient *client, - - void connman_client_remove(ConnmanClient *client, const gchar *network); - --void connman_client_request_scan(ConnmanClient *client, char *scantype, -- connman_request_scan_reply callback, gpointer userdata); - gboolean connman_client_get_offline_status(ConnmanClient *client); - void connman_client_set_offlinemode(ConnmanClient *client, gboolean status); - -@@ -114,11 +113,8 @@ enum { - CONNMAN_COLUMN_ADDRESS, /* G_TYPE_STRING */ - CONNMAN_COLUMN_NETMASK, /* G_TYPE_STRING */ - CONNMAN_COLUMN_GATEWAY, /* G_TYPE_STRING */ -- -- CONNMAN_COLUMN_ETHERNET_ENABLED,/* G_TYPE_STRING */ -- CONNMAN_COLUMN_WIFI_ENABLED, /* G_TYPE_STRING */ -- CONNMAN_COLUMN_CELLULAR_ENABLED,/* G_TYPE_STRING */ -- CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_STRING */ -+ CONNMAN_COLUMN_POWERED, /* G_TYPE_BOOLEAN */ -+ CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_BOOLEAN */ - - _CONNMAN_NUM_COLUMNS - }; -diff --git a/common/connman-dbus.c b/common/connman-dbus.c -index 6669749..4eb77b6 100644 ---- a/common/connman-dbus.c -+++ b/common/connman-dbus.c -@@ -28,6 +28,8 @@ - #include "connman-dbus.h" - #include "connman-dbus-glue.h" - -+#include "marshal.h" -+ - #ifdef DEBUG - #define DBG(fmt, arg...) printf("%s:%s() " fmt "\n", __FILE__, __FUNCTION__ , ## arg) - #else -@@ -164,22 +166,6 @@ gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path, - return get_iter_from_path(store, iter, path); - } - --static void iterate_list(const GValue *value, gpointer user_data) --{ -- GSList **list = user_data; -- gchar *path = g_value_dup_boxed(value); -- -- if (path == NULL) -- return; -- -- *list = g_slist_append(*list, path); --} -- --static gint compare_path(gconstpointer a, gconstpointer b) --{ -- return g_strcmp0(a, b); --} -- - static guint get_type(const GValue *value) - { - const char *type = value ? g_value_get_string(value) : NULL; -@@ -217,95 +203,76 @@ static const gchar *type2icon(guint type) - return NULL; - } - --static void enabled_technologies_changed(GtkTreeStore *store, GValue *value) -+static void tech_changed(DBusGProxy *proxy, const char *property, -+ GValue *value, gpointer user_data) - { -+ GtkTreeStore *store = user_data; -+ const char *path = dbus_g_proxy_get_path(proxy); - GtkTreeIter iter; -- gboolean ethernet_enabled_prev, ethernet_enabled = FALSE; -- gboolean wifi_enabled_prev, wifi_enabled = FALSE; -- gboolean cellular_enabled_prev, cellular_enabled = FALSE; -- gchar **tech = g_value_get_boxed (value); -- guint i; - -- if (value == NULL) -- return; -- -- for (i = 0; i < g_strv_length(tech); i++) { -- DBG("technology: %s", *(tech+i)); -- if (g_str_equal("ethernet", *(tech + i))) -- ethernet_enabled = TRUE; -- else if (g_str_equal ("wifi", *(tech + i))) -- wifi_enabled = TRUE; -- else if (g_str_equal ("cellular", *(tech + i))) -- cellular_enabled = TRUE; -- } -+ DBG("store %p proxy %p property %s", store, proxy, property); - -- get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET); -- gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, -- CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled_prev, -1); -- if (ethernet_enabled_prev != ethernet_enabled) -- gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_ETHERNET_ENABLED, ethernet_enabled, -1); -+ if (property == NULL || value == NULL) -+ return; - -- get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_WIFI); -- gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, -- CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled_prev, -1); -- if (wifi_enabled_prev != wifi_enabled) -- gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled, -1); -+ if (get_iter_from_path(store, &iter, path) == FALSE) -+ return; - -- get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_CELLULAR); -- gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, -- CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled_prev, -1); -- if (cellular_enabled_prev != cellular_enabled) -+ if (g_str_equal(property, "Powered") == TRUE) { -+ gboolean powered = g_value_get_boolean(value); - gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_CELLULAR_ENABLED, cellular_enabled, -1); -+ CONNMAN_COLUMN_POWERED, powered, -1); -+ } - } - --static void enabled_technologies_properties(GtkTreeStore *store, DBusGProxy *proxy, GValue *value) -+static void tech_properties(DBusGProxy *proxy, GHashTable *hash, -+ GError *error, gpointer user_data) - { -+ GtkTreeStore *store = user_data; - GtkTreeIter iter; -- gboolean ethernet_enabled = FALSE; -- gboolean wifi_enabled = FALSE; -- gboolean cellular_enabled = FALSE; -- gchar **tech = g_value_get_boxed (value); -- guint i; -- -- for (i = 0; i < g_strv_length (tech); i++) { -- DBG("technology: %s", *(tech+i)); -- if (g_str_equal("ethernet", *(tech + i))) -- ethernet_enabled = TRUE; -- else if (g_str_equal ("wifi", *(tech + i))) -- wifi_enabled = TRUE; -- else if (g_str_equal ("cellular", *(tech + i))) -- cellular_enabled = TRUE; -- } -+ gboolean powered = FALSE; -+ GValue *propval = 0; -+ const char *techtype = 0; - -- if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET) == FALSE) -- gtk_tree_store_append(store, &iter, NULL); -+ propval = g_hash_table_lookup(hash, "Type"); -+ techtype = propval ? g_value_get_string(propval) : NULL; - -- gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_PROXY, proxy, -- CONNMAN_COLUMN_ETHERNET_ENABLED, ethernet_enabled, -- CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_ETHERNET, -- -1); -+ propval = g_hash_table_lookup(hash, "Powered"); -+ powered = propval ? g_value_get_boolean(propval) : FALSE; - -- if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_WIFI) == FALSE) -- gtk_tree_store_append(store, &iter, NULL); -+ if (g_str_equal("ethernet", techtype)) -+ { -+ if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET) == FALSE) -+ gtk_tree_store_append(store, &iter, NULL); - -- gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_PROXY, proxy, -- CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled, -- CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_WIFI, -- -1); -+ gtk_tree_store_set(store, &iter, -+ CONNMAN_COLUMN_PROXY, proxy, -+ CONNMAN_COLUMN_POWERED, powered, -+ CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_ETHERNET, -+ -1); -+ } -+ else if (g_str_equal ("wifi", techtype)) -+ { -+ if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_WIFI) == FALSE) -+ gtk_tree_store_append(store, &iter, NULL); - -- if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_CELLULAR) == FALSE) -- gtk_tree_store_append(store, &iter, NULL); -+ gtk_tree_store_set(store, &iter, -+ CONNMAN_COLUMN_PROXY, proxy, -+ CONNMAN_COLUMN_POWERED, powered, -+ CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_WIFI, -+ -1); -+ } -+ else if (g_str_equal ("3g", techtype)) -+ { -+ if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_CELLULAR) == FALSE) -+ gtk_tree_store_append(store, &iter, NULL); - -- gtk_tree_store_set(store, &iter, -- CONNMAN_COLUMN_PROXY, proxy, -- CONNMAN_COLUMN_CELLULAR_ENABLED, cellular_enabled, -- CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_CELLULAR, -- -1); -+ gtk_tree_store_set(store, &iter, -+ CONNMAN_COLUMN_PROXY, proxy, -+ CONNMAN_COLUMN_POWERED, powered, -+ CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_CELLULAR, -+ -1); -+ } - } - - static void offline_mode_changed(GtkTreeStore *store, GValue *value) -@@ -319,6 +286,39 @@ static void offline_mode_changed(GtkTreeStore *store, GValue *value) - -1); - } - -+static void tech_added(DBusGProxy *proxy, DBusGObjectPath *path, -+ GHashTable *hash, gpointer user_data) -+{ -+ GtkTreeStore *store = user_data; -+ GtkTreeIter iter; -+ DBG("store %p proxy %p hash %p", store, proxy, hash); -+ -+ if (!get_iter_from_path(store, &iter, path)) { -+ DBusGProxy *tech_proxy = dbus_g_proxy_new_for_name(connection, -+ CONNMAN_SERVICE, path, -+ CONNMAN_TECHNOLOGY_INTERFACE); -+ if (tech_proxy == NULL) -+ return; -+ -+ tech_properties(tech_proxy, hash, NULL, user_data); -+ -+ dbus_g_proxy_add_signal(tech_proxy, "PropertyChanged", -+ G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); -+ dbus_g_proxy_connect_signal(tech_proxy, "PropertyChanged", -+ G_CALLBACK(tech_changed), store, NULL); -+ } -+} -+ -+static void tech_removed(DBusGProxy *proxy, DBusGObjectPath *path, -+ gpointer user_data) -+{ -+ GtkTreeStore *store = user_data; -+ GtkTreeIter iter; -+ -+ if (get_iter_from_path(store, &iter, path)) -+ gtk_tree_store_remove(store, &iter); -+} -+ - static void offline_mode_properties(GtkTreeStore *store, DBusGProxy *proxy, GValue *value) - { - GtkTreeIter iter; -@@ -401,59 +401,8 @@ static void service_changed(DBusGProxy *proxy, const char *property, - } - } - --static void property_update(GtkTreeStore *store, const GValue *value, -- connman_get_properties_reply callback) --{ -- GSList *list, *link, *old_list, *new_list = NULL; -- -- DBG("store %p", store); -- -- old_list = g_object_get_data(G_OBJECT(store), "Services"); -- -- dbus_g_type_collection_value_iterate(value, iterate_list, &new_list); -- -- g_object_set_data(G_OBJECT(store), "Services", new_list); -- -- for (list = new_list; list; list = list->next) { -- gchar *path = list->data; -- DBusGProxy *proxy; -- -- DBG("new path %s", path); -- -- link = g_slist_find_custom(old_list, path, compare_path); -- if (link != NULL) { -- g_free(link->data); -- old_list = g_slist_delete_link(old_list, link); -- } -- -- proxy = dbus_g_proxy_new_for_name(connection, -- CONNMAN_SERVICE, path, -- CONNMAN_SERVICE_INTERFACE); -- if (proxy == NULL) -- continue; -- -- DBG("getting %s properties", "Services"); -- -- connman_get_properties_async(proxy, callback, store); -- } -- -- for (list = old_list; list; list = list->next) { -- gchar *path = list->data; -- GtkTreeIter iter; -- -- DBG("old path %s", path); -- -- if (get_iter_from_path(store, &iter, path) == TRUE) -- gtk_tree_store_remove(store, &iter); -- -- g_free(path); -- } -- -- g_slist_free(old_list); --} -- - static void service_properties(DBusGProxy *proxy, GHashTable *hash, -- GError *error, gpointer user_data) -+ gpointer user_data) - { - GtkTreeStore *store = user_data; - GValue *value; -@@ -468,7 +417,7 @@ static void service_properties(DBusGProxy *proxy, GHashTable *hash, - - DBG("store %p proxy %p hash %p", store, proxy, hash); - -- if (error != NULL || hash == NULL) -+ if (hash == NULL) - goto done; - - value = g_hash_table_lookup(hash, "Name"); -@@ -572,11 +521,7 @@ static void manager_changed(DBusGProxy *proxy, const char *property, - if (property == NULL || value == NULL) - return; - -- if (g_str_equal(property, "Services") == TRUE) -- property_update(store, value, service_properties); -- else if (g_str_equal(property, "EnabledTechnologies") == TRUE) -- enabled_technologies_changed(store, value); -- else if (g_str_equal(property, "OfflineMode") == TRUE) -+ if (g_str_equal(property, "OfflineMode") == TRUE) - offline_mode_changed(store, value); - } - -@@ -591,23 +536,89 @@ static void manager_properties(DBusGProxy *proxy, GHashTable *hash, - if (error != NULL || hash == NULL) - return; - -- value = g_hash_table_lookup(hash, "Services"); -- if (value != NULL) -- property_update(store, value, service_properties); -- -- value = g_hash_table_lookup(hash, "EnabledTechnologies"); -- if (value != NULL) -- enabled_technologies_properties(store, proxy, value); -- - value = g_hash_table_lookup(hash, "OfflineMode"); - if (value != NULL) - offline_mode_properties(store, proxy, value); - } - -+static void manager_services(DBusGProxy *proxy, GPtrArray *array, -+ GError *error, gpointer user_data) -+{ -+ int i; -+ -+ DBG("proxy %p array %p", proxy, array); -+ -+ if (error != NULL || array == NULL) -+ return; -+ -+ for (i = 0; i < array->len; i++) -+ { -+ GValueArray *item = g_ptr_array_index(array, i); -+ -+ DBusGObjectPath *path = (DBusGObjectPath *)g_value_get_boxed(g_value_array_get_nth(item, 0)); -+ DBusGProxy *service_proxy = dbus_g_proxy_new_for_name(connection, -+ CONNMAN_SERVICE, path, -+ CONNMAN_SERVICE_INTERFACE); -+ if (service_proxy == NULL) -+ continue; -+ -+ GHashTable *props = (GHashTable *)g_value_get_boxed(g_value_array_get_nth(item, 1)); -+ service_properties(service_proxy, props, user_data); -+ } -+} -+ -+static void manager_technologies(DBusGProxy *proxy, GPtrArray *array, -+ GError *error, gpointer user_data) -+{ -+ int i; -+ -+ DBG("proxy %p array %p", proxy, array); -+ -+ if (error != NULL || array == NULL) -+ return; -+ -+ for (i = 0; i < array->len; i++) -+ { -+ GValueArray *item = g_ptr_array_index(array, i); -+ -+ DBusGObjectPath *path = (DBusGObjectPath *)g_value_get_boxed(g_value_array_get_nth(item, 0)); -+ GHashTable *props = (GHashTable *)g_value_get_boxed(g_value_array_get_nth(item, 1)); -+ -+ tech_added(proxy, path, props, user_data); -+ } -+} -+ -+static void services_added(DBusGProxy *proxy, GPtrArray *array, -+ gpointer user_data) -+{ -+ DBG("proxy %p array %p", proxy, array); -+ -+ manager_services(proxy, array, NULL, user_data); -+} -+ -+static void services_removed(DBusGProxy *proxy, GPtrArray *array, -+ gpointer user_data) -+{ -+ GtkTreeStore *store = user_data; -+ GtkTreeIter iter; -+ int i; -+ -+ DBG("store %p proxy %p array %p", store, proxy, array); -+ -+ for (i = 0; i < array->len; i++) -+ { -+ DBusGObjectPath *path = (DBusGObjectPath *)g_ptr_array_index(array, i); -+ -+ if (get_iter_from_path(store, &iter, path)) -+ gtk_tree_store_remove(store, &iter); -+ } -+} -+ - DBusGProxy *connman_dbus_create_manager(DBusGConnection *conn, - GtkTreeStore *store) - { - DBusGProxy *proxy; -+ GType otype; - - connection = dbus_g_connection_ref(conn); - -@@ -620,11 +631,49 @@ DBusGProxy *connman_dbus_create_manager(DBusGConnection *conn, - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", - G_CALLBACK(manager_changed), store, NULL); -- -+ -+ otype = dbus_g_type_get_struct("GValueArray", DBUS_TYPE_G_OBJECT_PATH, DBUS_TYPE_G_DICTIONARY, G_TYPE_INVALID); -+ otype = dbus_g_type_get_collection("GPtrArray", otype); -+ dbus_g_object_register_marshaller(marshal_VOID__BOXED, G_TYPE_NONE, otype, G_TYPE_INVALID); -+ -+ dbus_g_proxy_add_signal(proxy, "ServicesAdded", -+ otype, G_TYPE_INVALID); -+ dbus_g_proxy_connect_signal(proxy, "ServicesAdded", -+ G_CALLBACK(services_added), store, NULL); -+ -+ otype = DBUS_TYPE_G_OBJECT_PATH_ARRAY; -+ dbus_g_object_register_marshaller(marshal_VOID__BOXED, G_TYPE_NONE, otype, G_TYPE_INVALID); -+ -+ dbus_g_proxy_add_signal(proxy, "ServicesRemoved", -+ otype, G_TYPE_INVALID); -+ dbus_g_proxy_connect_signal(proxy, "ServicesRemoved", -+ G_CALLBACK(services_removed), store, NULL); -+ -+ dbus_g_object_register_marshaller(marshal_VOID__STRING_BOXED, G_TYPE_NONE, DBUS_TYPE_G_OBJECT_PATH, DBUS_TYPE_G_DICTIONARY, G_TYPE_INVALID); -+ dbus_g_proxy_add_signal(proxy, "TechnologyAdded", -+ DBUS_TYPE_G_OBJECT_PATH, DBUS_TYPE_G_DICTIONARY, G_TYPE_INVALID); -+ dbus_g_proxy_connect_signal(proxy, "TechnologyAdded", -+ G_CALLBACK(tech_added), store, NULL); -+ -+ dbus_g_object_register_marshaller(marshal_VOID__STRING, G_TYPE_NONE, DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID); -+ dbus_g_proxy_add_signal(proxy, "TechnologyRemoved", -+ DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID); -+ dbus_g_proxy_connect_signal(proxy, "TechnologyRemoved", -+ G_CALLBACK(tech_removed), store, NULL); -+ -+ - DBG("getting manager properties"); - - connman_get_properties_async(proxy, manager_properties, store); - -+ DBG("getting technologies"); -+ -+ connman_get_technologies_async(proxy, manager_technologies, store); -+ -+ DBG("getting services"); -+ -+ connman_get_services_async(proxy, manager_services, store); -+ - return proxy; - } - -diff --git a/common/connman-dbus.h b/common/connman-dbus.h -index cfca50e..c1b5091 100644 ---- a/common/connman-dbus.h -+++ b/common/connman-dbus.h -@@ -32,6 +32,7 @@ - - #define CONNMAN_PROFILE_INTERFACE CONNMAN_SERVICE ".Profile" - #define CONNMAN_SERVICE_INTERFACE CONNMAN_SERVICE ".Service" -+#define CONNMAN_TECHNOLOGY_INTERFACE CONNMAN_SERVICE ".Technology" - - DBusGProxy *connman_dbus_create_manager(DBusGConnection *connection, - GtkTreeStore *store); -diff --git a/common/connman-dbus.xml b/common/connman-dbus.xml -index e20cb3b..56b9582 100644 ---- a/common/connman-dbus.xml -+++ b/common/connman-dbus.xml -@@ -5,26 +5,23 @@ - <method name="GetProperties"> - <arg type="a{sv}" direction="out"/> - </method> -+ <method name="GetServices"> -+ <arg type="a(oa{sv})" direction="out"/> -+ </method> -+ <method name="GetTechnologies"> -+ <arg type="a(oa{sv})" direction="out"/> -+ </method> - <method name="SetProperty"> - <arg type="s"/> - <arg type="v"/> - </method> -- <method name="ProposeScan"> -- </method> - <method name="Connect"> - </method> - <method name="Disconnect"> - </method> - <method name="Remove"> - </method> -- <method name="RequestScan"> -- <arg type="s"/> -- </method> -- <method name="EnableTechnology"> -- <arg type="s"/> -- </method> -- <method name="DisableTechnology"> -- <arg type="s"/> -+ <method name="Scan"> - </method> - </interface> - </node> -diff --git a/common/marshal.list b/common/marshal.list -index e72aa4b..8b174d0 100644 ---- a/common/marshal.list -+++ b/common/marshal.list -@@ -1 +1,3 @@ - VOID:STRING,BOXED -+VOID:BOXED -+VOID:STRING -diff --git a/properties/cellular.c b/properties/cellular.c -index 7bbfb89..4d27e0e 100644 ---- a/properties/cellular.c -+++ b/properties/cellular.c -@@ -59,9 +59,9 @@ static void switch_callback(GtkWidget *editable, gpointer user_data) - const gchar *label = gtk_button_get_label(GTK_BUTTON(data->cellular_button)); - - if (g_str_equal(label, "Disable")) -- connman_client_disable_technology(data->client, data->device, "cellular"); -+ connman_client_set_powered(data->client, data->device, FALSE); - else -- connman_client_enable_technology(data->client, data->device, "cellular"); -+ connman_client_set_powered(data->client, data->device, TRUE); - } - - void add_cellular_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, -@@ -75,7 +75,7 @@ void add_cellular_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, - gboolean cellular_enabled; - - gtk_tree_model_get(data->model, iter, -- CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled, -+ CONNMAN_COLUMN_POWERED, &cellular_enabled, - -1); - - vbox = gtk_vbox_new(TRUE, 0); -diff --git a/properties/ethernet.c b/properties/ethernet.c -index d7f91d9..31db7a0 100644 ---- a/properties/ethernet.c -+++ b/properties/ethernet.c -@@ -59,9 +59,9 @@ static void switch_callback(GtkWidget *editable, gpointer user_data) - struct config_data *data = user_data; - const gchar *label = gtk_button_get_label(GTK_BUTTON(data->ethernet_button)); - if (g_str_equal(label, "Disable")) -- connman_client_disable_technology(data->client, data->device, "ethernet"); -- else if (g_str_equal(label, "Enable")) -- connman_client_enable_technology(data->client, data->device, "ethernet"); -+ connman_client_set_powered(data->client, data->device, FALSE); -+ else -+ connman_client_set_powered(data->client, data->device, TRUE); - } - - void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, -@@ -75,7 +75,7 @@ void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, - gboolean ethernet_enabled; - - gtk_tree_model_get(data->model, iter, -- CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled, -+ CONNMAN_COLUMN_POWERED, ðernet_enabled, - -1); - - vbox = gtk_vbox_new(TRUE, 0); -diff --git a/properties/main.c b/properties/main.c -index 088684a..e266f03 100644 ---- a/properties/main.c -+++ b/properties/main.c -@@ -40,18 +40,14 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path, - struct config_data *data = user_data; - guint type; - const char *name = NULL, *_name = NULL, *state = NULL; -- gboolean ethernet_enabled; -- gboolean wifi_enabled; -- gboolean cellular_enabled; -+ gboolean powered; - gboolean offline_mode; - - gtk_tree_model_get(model, iter, - CONNMAN_COLUMN_STATE, &state, - CONNMAN_COLUMN_NAME, &name, - CONNMAN_COLUMN_TYPE, &type, -- CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled, -- CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled, -- CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled, -+ CONNMAN_COLUMN_POWERED, &powered, - CONNMAN_COLUMN_OFFLINEMODE, &offline_mode, - -1); - -@@ -103,14 +99,14 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path, - } else if (type == CONNMAN_TYPE_LABEL_ETHERNET) { - if (!data->ethernet_button) - return; -- if (ethernet_enabled) -+ if (powered) - gtk_button_set_label(GTK_BUTTON(data->ethernet_button), _("Disable")); - else - gtk_button_set_label(GTK_BUTTON(data->ethernet_button), _("Enable")); - } else if (type == CONNMAN_TYPE_LABEL_WIFI) { - if (!data->wifi_button) - return; -- if (wifi_enabled) { -+ if (powered) { - gtk_button_set_label(GTK_BUTTON(data->wifi_button), _("Disable")); - gtk_widget_set_sensitive(data->scan_button, 1); - } else { -@@ -120,7 +116,7 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path, - } else if (type == CONNMAN_TYPE_LABEL_CELLULAR) { - if (!data->cellular_button) - return; -- if (cellular_enabled) -+ if (powered) - gtk_button_set_label(GTK_BUTTON(data->cellular_button), _("Disable")); - else - gtk_button_set_label(GTK_BUTTON(data->cellular_button), _("Enable")); -diff --git a/properties/wifi.c b/properties/wifi.c -index 85922a3..038d35a 100644 ---- a/properties/wifi.c -+++ b/properties/wifi.c -@@ -96,9 +96,9 @@ static void switch_callback(GtkWidget *editable, gpointer user_data) - const gchar *label = gtk_button_get_label(GTK_BUTTON(data->wifi_button)); - - if (g_str_equal(label, "Disable")) -- connman_client_disable_technology(data->client, data->device, "wifi"); -+ connman_client_set_powered(data->client, data->device, FALSE); - else -- connman_client_enable_technology(data->client, data->device, "wifi"); -+ connman_client_set_powered(data->client, data->device, TRUE); - } - - static void scan_reply_cb(DBusGProxy *proxy, GError *error, -@@ -115,7 +115,7 @@ static void scan_callback(GtkWidget *button, gpointer user_data) - { - struct config_data *data = user_data; - gtk_widget_set_sensitive(button, 0); -- connman_client_request_scan(data->client, "", scan_reply_cb, button); -+ connman_client_scan(data->client, data->device, scan_reply_cb, button); - } - - void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, -@@ -129,7 +129,7 @@ void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, - gboolean wifi_enabled; - - gtk_tree_model_get(data->model, iter, -- CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled, -+ CONNMAN_COLUMN_POWERED, &wifi_enabled, - -1); - - vbox = gtk_vbox_new(TRUE, 0); --- -1.7.5.4 - |