#define SETTINGS_STORE "netreg"
#define SETTINGS_GROUP "Settings"
-#define NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN 0x1
-#define NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN 0x2
+#define NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN 0x1
+#define NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN 0x2
+#define NETWORK_REGISTRATION_FLAG_READING_PNN 0x4
enum network_registration_mode {
NETWORK_REGISTRATION_MODE_AUTO = 0,
goto check;
if (length < 3 || record_length < 3 || length < record_length)
- return;
+ goto check;
total = length / record_length;
return;
check:
+ netreg->flags &= ~NETWORK_REGISTRATION_FLAG_READING_PNN;
+
/*
* If PNN is not present then OPL is not useful, don't
* retrieve it. If OPL is not there then PNN[1] will
struct ofono_netreg *netreg = userdata;
GSList *l;
+ if (netreg->flags & NETWORK_REGISTRATION_FLAG_READING_PNN)
+ return;
/*
* Free references to structures on the netreg->eons list and
* update the operator info on D-bus. If EFpnn/EFopl read succeeds,
sim_eons_free(netreg->eons);
netreg->eons = NULL;
+ netreg->flags |= NETWORK_REGISTRATION_FLAG_READING_PNN;
ofono_sim_read(netreg->sim_context, SIM_EFPNN_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED,
sim_pnn_read_cb, netreg);
netreg_load_settings(netreg);
+ netreg->flags |= NETWORK_REGISTRATION_FLAG_READING_PNN;
ofono_sim_read(netreg->sim_context, SIM_EFPNN_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED,
sim_pnn_read_cb, netreg);