summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Wang <johnwang@google.com> 2012-05-02 17:40:37 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-05-02 17:40:37 -0700
commit28d9911adac4e5059d36e9b92b68d37f2bb00475 (patch)
treeccdac588ce97799ed2d5f3af38a919acb4a4605b
parentf32c8e4365f0a1008cfc17f2933a41f15c7608fc (diff)
parent6ac0471da79c99a043cb6fbccb12bd86f1f3c024 (diff)
Merge "Enable restart in getSpnFsm()." into jb-dev
-rwxr-xr-xtelephony/java/com/android/internal/telephony/gsm/SIMRecords.java19
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){