From 1e00e93a61dc1099f8919fabc30614ffad8d1a20 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Thu, 15 Dec 2011 16:35:47 +0100 Subject: [PATCH] ofono: Set regulatory domain Fixes BMC#24430 --- plugins/ofono.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/plugins/ofono.c b/plugins/ofono.c index ce4c921..bf0e0fd 100644 --- a/plugins/ofono.c +++ b/plugins/ofono.c @@ -39,6 +39,9 @@ #include #include #include +#include + +#include "mcc.h" #define uninitialized_var(x) x = x @@ -1385,6 +1388,26 @@ static void netreg_update_roaming(struct modem_data *modem, connman_network_update(modem->network); } +static void netreg_update_regdom(struct modem_data *modem, + DBusMessageIter *value) +{ + char *mobile_country_code; + char *alpha2; + int mcc; + + dbus_message_iter_get_basic(value, &mobile_country_code); + + DBG("%s MobileContryCode %s", modem->path, mobile_country_code); + + + mcc = atoi(mobile_country_code); + if (mcc > 799) + return; + + alpha2 = mcc_country_codes[mcc - 200]; + connman_technology_set_regdom(alpha2); +} + static gboolean netreg_changed(DBusConnection *connection, DBusMessage *message, void *user_data) { @@ -1414,6 +1437,8 @@ static gboolean netreg_changed(DBusConnection *connection, DBusMessage *message, netreg_update_strength(modem, &value); else if (g_str_equal(key, "Status") == TRUE) netreg_update_roaming(modem, &value); + else if (g_str_equal(key, "MobileCountryCode") == TRUE) + netreg_update_regdom(modem, &value); return TRUE; } @@ -1439,6 +1464,8 @@ static void netreg_properties_reply(struct modem_data *modem, netreg_update_strength(modem, &value); else if (g_str_equal(key, "Status") == TRUE) netreg_update_roaming(modem, &value); + else if (g_str_equal(key, "MobileCountryCode") == TRUE) + netreg_update_regdom(modem, &value); dbus_message_iter_next(dict); } -- 2.7.4