From: Denis Kenzior Date: Thu, 22 Nov 2012 12:45:10 +0000 (-0600) Subject: sim: Fix SIM re-init case of SIM Refresh X-Git-Tag: 1.12~123 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b97e79b3df36e09274d52179e746ceb89b599935;p=platform%2Fupstream%2Fofono.git sim: Fix SIM re-init case of SIM Refresh When the SIM is being refreshed, we try to access the SIM too fast after the SIM REFRESH proactive command is received. Instead set the sim atom into the 'RESETTING' state and wait until the modem driver signals the sim insertion again. --- diff --git a/src/sim.c b/src/sim.c index 4551407..46e4483 100644 --- a/src/sim.c +++ b/src/sim.c @@ -2436,6 +2436,16 @@ static void sim_free_state(struct ofono_sim *sim) void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted) { + if (sim->state == OFONO_SIM_STATE_RESETTING && inserted) { + /* + * Start initialization procedure from after EFiccid, + * EFli and EFpl are retrieved. + */ + sim->state = OFONO_SIM_STATE_INSERTED; + __ofono_sim_recheck_pin(sim); + return; + } + if (inserted == TRUE && sim->state == OFONO_SIM_STATE_NOT_PRESENT) sim->state = OFONO_SIM_STATE_INSERTED; else if (inserted == FALSE && sim->state != OFONO_SIM_STATE_NOT_PRESENT) @@ -3119,7 +3129,7 @@ void __ofono_sim_refresh(struct ofono_sim *sim, GSList *file_list, /* Force the sim state out of READY */ sim_free_main_state(sim); - sim->state = OFONO_SIM_STATE_INSERTED; + sim->state = OFONO_SIM_STATE_RESETTING; __ofono_modem_sim_reset(__ofono_atom_get_modem(sim->atom)); } @@ -3138,17 +3148,4 @@ void __ofono_sim_refresh(struct ofono_sim *sim, GSList *file_list, sim_fs_notify_file_watches(sim->simfs, id); } } - - if (reinit_naa) { - /* - * REVISIT: There's some concern that on re-insertion the - * atoms will start to talk to the SIM before it becomes - * ready, on certain SIMs. - */ - /* - * Start initialization procedure from after EFiccid, - * EFli and EFpl are retrieved. - */ - __ofono_sim_recheck_pin(sim); - } }