diff options
| author | 2012-05-02 17:40:37 -0700 | |
|---|---|---|
| committer | 2012-05-02 17:40:37 -0700 | |
| commit | 28d9911adac4e5059d36e9b92b68d37f2bb00475 (patch) | |
| tree | ccdac588ce97799ed2d5f3af38a919acb4a4605b | |
| parent | f32c8e4365f0a1008cfc17f2933a41f15c7608fc (diff) | |
| parent | 6ac0471da79c99a043cb6fbccb12bd86f1f3c024 (diff) | |
Merge "Enable restart in getSpnFsm()." into jb-dev
| -rwxr-xr-x | telephony/java/com/android/internal/telephony/gsm/SIMRecords.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java index 80988fd30050..52e2cafe2b73 100755 --- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java +++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java @@ -1459,6 +1459,11 @@ public class SIMRecords extends IccRecords { * After starting, FSM will search SPN EFs in order and stop after finding * the first valid SPN * + * If the FSM gets restart while waiting for one of + * SPN EFs results (i.e. a SIM refresh occurs after issuing + * read EF_CPHS_SPN), it will re-initialize only after + * receiving and discarding the unfinished SPN EF result. + * * @param start set true only for initialize loading * @param ar the AsyncResult from loadEFTransparent * ar.exception holds exception in error @@ -1468,7 +1473,19 @@ public class SIMRecords extends IccRecords { byte[] data; if (start) { - spnState = Get_Spn_Fsm_State.INIT; + // Check previous state to see if there is outstanding + // SPN read + if(spnState == Get_Spn_Fsm_State.READ_SPN_3GPP || + spnState == Get_Spn_Fsm_State.READ_SPN_CPHS || + spnState == Get_Spn_Fsm_State.READ_SPN_SHORT_CPHS || + spnState == Get_Spn_Fsm_State.INIT) { + // Set INIT then return so the INIT code + // will run when the outstanding read done. + spnState = Get_Spn_Fsm_State.INIT; + return; + } else { + spnState = Get_Spn_Fsm_State.INIT; + } } switch(spnState){ |