diff options
author | Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com> | 2012-01-18 13:56:29 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2012-01-18 10:44:54 -0600 |
commit | e04f0ef0276d2df145e34572dfa6463f858b3f0e (patch) | |
tree | f8de2e77cb0e6758a999fbc7c737d94145fe9b87 /src/network.c | |
parent | 810bd2aa2e0ffa8480e3ae03ce93cd52537c52cb (diff) | |
download | ofono-e04f0ef0276d2df145e34572dfa6463f858b3f0e.tar.bz2 |
network: Access SPN directly from the sim atom
Diffstat (limited to 'src/network.c')
-rw-r--r-- | src/network.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/network.c b/src/network.c index 54a4867a..0699ff22 100644 --- a/src/network.c +++ b/src/network.c @@ -82,7 +82,6 @@ struct ofono_netreg { void *driver_data; struct ofono_atom *atom; unsigned int hfp_watch; - char *spn; unsigned int spn_watch; }; @@ -362,6 +361,7 @@ static char *get_operator_display_name(struct ofono_netreg *netreg) { struct network_operator_data *opd = netreg->current_operator; const char *plmn; + const char *spn; static char name[1024]; static char mccmnc[OFONO_MAX_MCC_LENGTH + OFONO_MAX_MNC_LENGTH + 1]; int len = sizeof(name); @@ -392,7 +392,9 @@ static char *get_operator_display_name(struct ofono_netreg *netreg) if (opd->eons_info && opd->eons_info->longname) plmn = opd->eons_info->longname; - if (netreg->spn == NULL || strlen(netreg->spn) == 0) { + spn = ofono_sim_get_spn(netreg->sim); + + if (spn == NULL || strlen(spn) == 0) { g_strlcpy(name, plmn, len); return name; } @@ -406,14 +408,14 @@ static char *get_operator_display_name(struct ofono_netreg *netreg) if (home_or_spdi) if (netreg->flags & NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN) /* Case 1 */ - snprintf(name, len, "%s (%s)", netreg->spn, plmn); + snprintf(name, len, "%s (%s)", spn, plmn); else /* Case 2 */ - snprintf(name, len, "%s", netreg->spn); + snprintf(name, len, "%s", spn); else if (netreg->flags & NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN) /* Case 3 */ - snprintf(name, len, "%s (%s)", netreg->spn, plmn); + snprintf(name, len, "%s (%s)", spn, plmn); else /* Case 4 */ snprintf(name, len, "%s", plmn); @@ -1652,9 +1654,6 @@ static void spn_read_cb(const char *spn, const char *dc, void *data) { struct ofono_netreg *netreg = data; - g_free(netreg->spn); - netreg->spn = g_strdup(spn); - netreg->flags &= ~(NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN | NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN); @@ -1803,9 +1802,6 @@ static void netreg_unregister(struct ofono_atom *atom) if (netreg->spn_watch) ofono_sim_remove_spn_watch(netreg->sim, &netreg->spn_watch); - g_free(netreg->spn); - netreg->spn = NULL; - if (netreg->sim_context) { ofono_sim_context_free(netreg->sim_context); netreg->sim_context = NULL; |