diff --git a/include/netreg.h b/include/netreg.h index a19409e3..e97917ff 100644 --- a/include/netreg.h +++ b/include/netreg.h @@ -112,8 +112,8 @@ int ofono_netreg_get_location(struct ofono_netreg *netreg); int ofono_netreg_get_cellid(struct ofono_netreg *netreg); int ofono_netreg_get_status(struct ofono_netreg *netreg); int ofono_netreg_get_technology(struct ofono_netreg *netreg); -const struct ofono_network_operator * - ofono_netreg_get_operator(struct ofono_netreg *netreg); +const char *ofono_netreg_get_mcc(struct ofono_netreg *netreg); +const char *ofono_netreg_get_mnc(struct ofono_netreg *netreg); #ifdef __cplusplus } diff --git a/src/cbs.c b/src/cbs.c index 577fa60c..0529879e 100644 --- a/src/cbs.c +++ b/src/cbs.c @@ -767,7 +767,8 @@ static void netreg_watch(struct ofono_atom *atom, void *data) { struct ofono_cbs *cbs = data; - const struct ofono_network_operator *op; + const char *mcc; + const char *mnc; if (cond == OFONO_ATOM_WATCH_CONDITION_UNREGISTERED) { cbs->location_watch = 0; @@ -779,11 +780,12 @@ static void netreg_watch(struct ofono_atom *atom, cbs->location_watch = __ofono_netreg_add_status_watch(cbs->netreg, cbs_location_changed, cbs, NULL); - op = ofono_netreg_get_operator(cbs->netreg); + mcc = ofono_netreg_get_mcc(cbs->netreg); + mnc = ofono_netreg_get_mnc(cbs->netreg); - if (op) { - memcpy(cbs->mcc, op->mcc, sizeof(cbs->mcc)); - memcpy(cbs->mnc, op->mnc, sizeof(cbs->mnc)); + if (mcc && mnc) { + memcpy(cbs->mcc, mcc, sizeof(cbs->mcc)); + memcpy(cbs->mnc, mnc, sizeof(cbs->mnc)); } else { memset(cbs->mcc, 0, sizeof(cbs->mcc)); memset(cbs->mnc, 0, sizeof(cbs->mnc)); diff --git a/src/network.c b/src/network.c index 43ee5734..4d77eacd 100644 --- a/src/network.c +++ b/src/network.c @@ -1379,8 +1379,7 @@ int ofono_netreg_get_technology(struct ofono_netreg *netreg) return netreg->technology; } -const struct ofono_network_operator * - ofono_netreg_get_operator(struct ofono_netreg *netreg) +const char *ofono_netreg_get_mcc(struct ofono_netreg *netreg) { if (netreg == NULL) return NULL; @@ -1388,7 +1387,18 @@ const struct ofono_network_operator * if (netreg->current_operator == NULL) return NULL; - return netreg->current_operator->info; + return netreg->current_operator->info->mcc; +} + +const char *ofono_netreg_get_mnc(struct ofono_netreg *netreg) +{ + if (netreg == NULL) + return NULL; + + if (netreg->current_operator == NULL) + return NULL; + + return netreg->current_operator->info->mnc; } int ofono_netreg_driver_register(const struct ofono_netreg_driver *d)