diff options
-rw-r--r-- | plugins/ofono.c | 30 |
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; |