summaryrefslogtreecommitdiffstats
path: root/src/sim.c
diff options
context:
space:
mode:
authorJussi Kangas <jussi.kangas@tieto.com>2011-02-25 15:20:16 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-02-25 11:47:23 -0600
commit9007bf63927b7008129a7704a8fd0649fed67065 (patch)
treef517993a5f44313d2aacdbe5f07d4d28a22ca79b /src/sim.c
parent996840288f112a9604a7269a24355bb43a230b25 (diff)
downloadofono-9007bf63927b7008129a7704a8fd0649fed67065.tar.bz2
sim: Do not teardown SIM state when PIN2 is asked
We should not tear down the SIM state if PIN2 is being asked for, or if PIN2 is blocked and PUK2 is being asked. We also want to continue with SIM initialization if the modem requires PIN2 / PUK2 for some reason.
Diffstat (limited to 'src/sim.c')
-rw-r--r--src/sim.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/src/sim.c b/src/sim.c
index c39269df..9a8fa4e9 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2231,20 +2231,37 @@ static void sim_pin_query_cb(const struct ofono_error *error,
&pin_name);
}
- if (pin_type != OFONO_SIM_PASSWORD_NONE &&
- sim->state == OFONO_SIM_STATE_READY) {
- /* Force the sim state out of READY */
- sim_free_main_state(sim);
+ switch (pin_type) {
+ case OFONO_SIM_PASSWORD_NONE:
+ case OFONO_SIM_PASSWORD_SIM_PIN2:
+ case OFONO_SIM_PASSWORD_SIM_PUK2:
+ break;
+ default:
+ if (sim->state == OFONO_SIM_STATE_READY) {
+ /* Force the sim state out of READY */
+ sim_free_main_state(sim);
- sim->state = OFONO_SIM_STATE_INSERTED;
- __ofono_modem_sim_reset(__ofono_atom_get_modem(sim->atom));
+ sim->state = OFONO_SIM_STATE_INSERTED;
+ __ofono_modem_sim_reset(
+ __ofono_atom_get_modem(sim->atom));
+ }
+ break;
}
sim_pin_retries_check(sim);
checkdone:
- if (pin_type == OFONO_SIM_PASSWORD_NONE)
+ switch (pin_type) {
+ case OFONO_SIM_PASSWORD_SIM_PIN2:
+ case OFONO_SIM_PASSWORD_SIM_PUK2:
+ if (sim->state == OFONO_SIM_STATE_READY)
+ break;
+ case OFONO_SIM_PASSWORD_NONE:
sim_initialize_after_pin(sim);
+ break;
+ default:
+ break;
+ }
}
static void sim_pin_check(struct ofono_sim *sim)