summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-06-25 17:36:12 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-06-25 17:38:24 +0200
commit46d8e827d58417870243a5645c97adffc189303e (patch)
treec654c7fb6416fc5a43554beaa79bc77815f4bb96 /plugins
parente0fac1bf948c2eaa3acf480f4efb1f3aaa2ca12a (diff)
downloadconnman-46d8e827d58417870243a5645c97adffc189303e.tar.gz
connman-46d8e827d58417870243a5645c97adffc189303e.tar.bz2
connman-46d8e827d58417870243a5645c97adffc189303e.zip
Set the network roaming toggle according to oFono status
oFono's NetworkRegistration interface gives a status propery indicating (among other things) if we're roaming or not.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/ofono.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/plugins/ofono.c b/plugins/ofono.c
index 2995f264..2f67a99f 100644
--- a/plugins/ofono.c
+++ b/plugins/ofono.c
@@ -237,6 +237,22 @@ static void set_network_name_reply(DBusPendingCall *call, void *user_data)
dbus_message_iter_get_basic(&value, &name);
connman_network_set_name(network, name);
create_service(network);
+ } else if (g_strcmp0(key, "Status") == 0) {
+ const char *status;
+ connman_bool_t roaming;
+
+ dbus_message_iter_get_basic(&value, &status);
+ if (g_strcmp0(status, "roaming") == 0)
+ roaming = TRUE;
+ else if (g_strcmp0(status, "registered") == 0)
+ roaming = FALSE;
+ else {
+ dbus_message_iter_next(&dict);
+ continue;
+ }
+
+ connman_network_set_roaming(network, roaming);
+ connman_network_update(network);
}
dbus_message_iter_next(&dict);
@@ -409,6 +425,20 @@ static gboolean registration_changed(DBusConnection *connection,
dbus_message_iter_get_basic(&value, &strength);
connman_network_set_strength(network, strength);
connman_network_update(network);
+ } else if (g_strcmp0(key, "Status") == 0) {
+ const char *status;
+ connman_bool_t roaming;
+
+ dbus_message_iter_get_basic(&value, &status);
+ if (g_strcmp0(status, "roaming") == 0)
+ roaming = TRUE;
+ else if (g_strcmp0(status, "registered") == 0)
+ roaming = FALSE;
+ else
+ return TRUE;
+
+ connman_network_set_roaming(network, roaming);
+ connman_network_update(network);
}
return TRUE;