diff options
author | Jukka Saunamaki <jukka.saunamaki@nokia.com> | 2011-01-19 09:21:26 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-01-20 11:03:43 -0600 |
commit | da535d1288a5009ecad42ab56cb8d92aee8188c4 (patch) | |
tree | 9ce8f0878f7ac4e41a3d7d7ae279d69a69322371 /src/sim.c | |
parent | c81c88e311c07c3558e138139ec36b17ed7e2ffc (diff) | |
download | ofono-da535d1288a5009ecad42ab56cb8d92aee8188c4.tar.bz2 |
sim: store mcc and mnc separate from imsi
Diffstat (limited to 'src/sim.c')
-rw-r--r-- | src/sim.c | 34 |
1 files changed, 15 insertions, 19 deletions
@@ -78,6 +78,8 @@ struct ofono_sim { gboolean barred_dialing; char *imsi; + char mcc[OFONO_MAX_MCC_LENGTH + 1]; + char mnc[OFONO_MAX_MNC_LENGTH + 1]; GSList *own_numbers; GSList *new_numbers; @@ -348,21 +350,13 @@ static DBusMessage *sim_get_properties(DBusConnection *conn, bdn = sim->barred_dialing; ofono_dbus_dict_append(&dict, "BarredDialing", DBUS_TYPE_BOOLEAN, &bdn); - if (sim->mnc_length && sim->imsi) { - char mcc[OFONO_MAX_MCC_LENGTH + 1]; - char mnc[OFONO_MAX_MNC_LENGTH + 1]; + if (sim->mcc[0] != '\0' && sim->mnc[0] != '\0') { const char *str; - - strncpy(mcc, sim->imsi, OFONO_MAX_MCC_LENGTH); - mcc[OFONO_MAX_MCC_LENGTH] = '\0'; - strncpy(mnc, sim->imsi + OFONO_MAX_MCC_LENGTH, sim->mnc_length); - mnc[sim->mnc_length] = '\0'; - - str = mcc; + str = sim->mcc; ofono_dbus_dict_append(&dict, "MobileCountryCode", DBUS_TYPE_STRING, &str); - str = mnc; + str = sim->mnc; ofono_dbus_dict_append(&dict, "MobileNetworkCode", DBUS_TYPE_STRING, &str); } @@ -1299,22 +1293,21 @@ static void sim_imsi_cb(const struct ofono_error *error, const char *imsi, DBUS_TYPE_STRING, &sim->imsi); if (sim->mnc_length) { - char mcc[OFONO_MAX_MCC_LENGTH + 1]; - char mnc[OFONO_MAX_MNC_LENGTH + 1]; const char *str; - strncpy(mcc, sim->imsi, OFONO_MAX_MCC_LENGTH); - mcc[OFONO_MAX_MCC_LENGTH] = '\0'; - strncpy(mnc, sim->imsi + OFONO_MAX_MCC_LENGTH, sim->mnc_length); - mnc[sim->mnc_length] = '\0'; + strncpy(sim->mcc, sim->imsi, OFONO_MAX_MCC_LENGTH); + sim->mcc[OFONO_MAX_MCC_LENGTH] = '\0'; + strncpy(sim->mnc, sim->imsi + OFONO_MAX_MCC_LENGTH, + sim->mnc_length); + sim->mnc[sim->mnc_length] = '\0'; - str = mcc; + str = sim->mcc; ofono_dbus_signal_property_changed(conn, path, OFONO_SIM_MANAGER_INTERFACE, "MobileCountryCode", DBUS_TYPE_STRING, &str); - str = mnc; + str = sim->mnc; ofono_dbus_signal_property_changed(conn, path, OFONO_SIM_MANAGER_INTERFACE, "MobileNetworkCode", @@ -2060,6 +2053,9 @@ static void sim_free_state(struct ofono_sim *sim) sim->imsi = NULL; } + sim->mcc[0] = '\0'; + sim->mnc[0] = '\0'; + if (sim->own_numbers) { g_slist_foreach(sim->own_numbers, (GFunc)g_free, NULL); g_slist_free(sim->own_numbers); |