Loading src/java/com/android/internal/telephony/uicc/IccCardProxy.java +2 −2 Original line number Diff line number Diff line Loading @@ -393,12 +393,12 @@ public class IccCardProxy extends Handler implements IccCard { } if (mUiccApplication != null) { mUiccApplication.registerForReady(this, EVENT_APP_READY, null); mUiccApplication.registerForNetworkLocked(this, EVENT_NETWORK_LOCKED, null); } if (mIccRecords != null) { mIccRecords.registerForImsiReady(this, EVENT_IMSI_READY, null); mIccRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null); mIccRecords.registerForLockedRecordsLoaded(this, EVENT_ICC_LOCKED, null); mIccRecords.registerForNetworkLockedRecordsLoaded(this, EVENT_NETWORK_LOCKED, null); mIccRecords.registerForRecordsEvents(this, EVENT_ICC_RECORD_EVENTS, null); } } Loading @@ -408,12 +408,12 @@ public class IccCardProxy extends Handler implements IccCard { if (mUiccCard != null) mUiccCard.unregisterForCarrierPrivilegeRulesLoaded(this); if (mUiccApplication != null) { mUiccApplication.unregisterForReady(this); mUiccApplication.unregisterForNetworkLocked(this); } if (mIccRecords != null) { mIccRecords.unregisterForImsiReady(this); mIccRecords.unregisterForRecordsLoaded(this); mIccRecords.unregisterForLockedRecordsLoaded(this); mIccRecords.unregisterForNetworkLockedRecordsLoaded(this); mIccRecords.unregisterForRecordsEvents(this); } } Loading src/java/com/android/internal/telephony/uicc/IccRecords.java +48 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -56,6 +55,7 @@ public abstract class IccRecords extends Handler implements IccConstants { protected RegistrantList mRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mLockedRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mNetworkLockedRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mImsiReadyRegistrants = new RegistrantList(); protected RegistrantList mRecordsEventsRegistrants = new RegistrantList(); protected RegistrantList mNewSmsRegistrants = new RegistrantList(); Loading @@ -68,9 +68,15 @@ public abstract class IccRecords extends Handler implements IccConstants { // ***** Cached SIM State; cleared on channel close // SIM is not locked protected static final int LOCKED_RECORDS_REQ_REASON_NONE = 0; // Records requested for PIN or PUK locked SIM protected static final int LOCKED_RECORDS_REQ_REASON_LOCKED = 0; // Records requested for network locked SIM protected static final int LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED = 0; protected boolean mRecordsRequested = false; // true if we've made requests for the sim records protected boolean mLockedRecordsRequested = false; // true if parent app is locked and we've // made requests for the sim records protected int mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; protected String mIccId; // Includes only decimals (no hex) protected String mFullIccId; // Includes hex characters in ICCID Loading Loading @@ -159,7 +165,7 @@ public abstract class IccRecords extends Handler implements IccConstants { + " recordsToLoad=" + mRecordsToLoad + " adnCache=" + mAdnCache + " recordsRequested=" + mRecordsRequested + " lockedRecordsRequested=" + mLockedRecordsRequested + " lockedRecordsReqReason=" + mLockedRecordsReqReason + " iccid=" + iccIdToPrint + " msisdnTag=" + mMsisdnTag + " voiceMailNum=" + Rlog.pii(VDBG, mVoiceMailNum) Loading Loading @@ -310,7 +316,7 @@ public abstract class IccRecords extends Handler implements IccConstants { } /** * Register to be notified when records are loaded for a locked SIM * Register to be notified when records are loaded for a PIN or PUK locked SIM */ public void registerForLockedRecordsLoaded(Handler h, int what, Object obj) { if (mDestroyed.get()) { Loading @@ -332,6 +338,29 @@ public abstract class IccRecords extends Handler implements IccConstants { mLockedRecordsLoadedRegistrants.remove(h); } /** * Register to be notified when records are loaded for a network locked SIM */ public void registerForNetworkLockedRecordsLoaded(Handler h, int what, Object obj) { if (mDestroyed.get()) { return; } Registrant r = new Registrant(h, what, obj); mNetworkLockedRecordsLoadedRegistrants.add(r); if (getNetworkLockedRecordsLoaded()) { r.notifyRegistrant(new AsyncResult(null, null, null)); } } /** * Unregister corresponding to registerForLockedRecordsLoaded() */ public void unregisterForNetworkLockedRecordsLoaded(Handler h) { mNetworkLockedRecordsLoadedRegistrants.remove(h); } public void registerForImsiReady(Handler h, int what, Object obj) { if (mDestroyed.get()) { return; Loading Loading @@ -582,7 +611,13 @@ public abstract class IccRecords extends Handler implements IccConstants { } protected boolean getLockedRecordsLoaded() { return mRecordsToLoad == 0 && mLockedRecordsRequested; return mRecordsToLoad == 0 && mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED; } protected boolean getNetworkLockedRecordsLoaded() { return mRecordsToLoad == 0 && mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; } //***** Overridden from Handler Loading Loading @@ -882,6 +917,12 @@ public abstract class IccRecords extends Handler implements IccConstants { pw.println(" mLockedRecordsLoadedRegistrants[" + i + "]=" + ((Registrant) mLockedRecordsLoadedRegistrants.get(i)).getHandler()); } pw.println(" mNetworkLockedRecordsLoadedRegistrants: size=" + mNetworkLockedRecordsLoadedRegistrants.size()); for (int i = 0; i < mNetworkLockedRecordsLoadedRegistrants.size(); i++) { pw.println(" mLockedRecordsLoadedRegistrants[" + i + "]=" + ((Registrant) mNetworkLockedRecordsLoadedRegistrants.get(i)).getHandler()); } pw.println(" mImsiReadyRegistrants: size=" + mImsiReadyRegistrants.size()); for (int i = 0; i < mImsiReadyRegistrants.size(); i++) { pw.println(" mImsiReadyRegistrants[" + i + "]=" Loading @@ -904,7 +945,7 @@ public abstract class IccRecords extends Handler implements IccConstants { + ((Registrant)mNetworkSelectionModeAutomaticRegistrants.get(i)).getHandler()); } pw.println(" mRecordsRequested=" + mRecordsRequested); pw.println(" mLockedRecordsRequested=" + mLockedRecordsRequested); pw.println(" mLockedRecordsReqReason=" + mLockedRecordsReqReason); pw.println(" mRecordsToLoad=" + mRecordsToLoad); pw.println(" mRdnCache=" + mAdnCache); Loading src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java +12 −11 Original line number Diff line number Diff line Loading @@ -16,19 +16,12 @@ package com.android.internal.telephony.uicc; import static com.android.internal.telephony.uicc.IccConstants.EF_DOMAIN; import static com.android.internal.telephony.uicc.IccConstants.EF_IMPI; import static com.android.internal.telephony.uicc.IccConstants.EF_IMPU; import static com.android.internal.telephony.uicc.IccConstants.EF_IST; import static com.android.internal.telephony.uicc.IccConstants.EF_PCSCF; import android.content.Context; import android.content.Intent; import android.os.AsyncResult; import android.os.Message; import android.telephony.Rlog; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.gsm.SimTlv; Loading Loading @@ -83,7 +76,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { mRecordsRequested = false; // No load request is made till SIM ready //todo: currently locked state for ISIM is not handled well and may cause app state to not //be broadcast mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading Loading @@ -191,7 +184,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { auth_rsp = null; mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } private class EfIsimImpiLoaded implements IccRecords.IccRecordLoaded { Loading Loading @@ -289,7 +282,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading @@ -299,7 +292,15 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { private void onLockedAllRecordsLoaded() { if (DBG) log("SIM locked; record load complete"); if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading src/java/com/android/internal/telephony/uicc/RuimRecords.java +21 −7 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ public class RuimRecords extends IccRecords { private static final int EVENT_GET_SMS_DONE = 22; private static final int EVENT_APP_LOCKED = 32; private static final int EVENT_APP_NETWORK_LOCKED = 33; public RuimRecords(UiccCardApplication app, Context c, CommandsInterface ci) { super(app, c, ci); Loading @@ -105,7 +106,7 @@ public class RuimRecords extends IccRecords { mAdnCache = new AdnRecordCache(mFh); mRecordsRequested = false; // No load request is made till SIM ready mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading @@ -117,6 +118,7 @@ public class RuimRecords extends IccRecords { mParentApp.registerForReady(this, EVENT_APP_READY, null); mParentApp.registerForLocked(this, EVENT_APP_LOCKED, null); mParentApp.registerForNetworkLocked(this, EVENT_APP_NETWORK_LOCKED, null); if (DBG) log("RuimRecords X ctor this=" + this); } Loading @@ -125,6 +127,8 @@ public class RuimRecords extends IccRecords { if (DBG) log("Disposing RuimRecords " + this); //Unregister for all events mParentApp.unregisterForReady(this); mParentApp.unregisterForLocked(this); mParentApp.unregisterForNetworkLocked(this); resetRecords(); super.dispose(); } Loading Loading @@ -152,7 +156,7 @@ public class RuimRecords extends IccRecords { // read requests made so far are not valid. This is set to // true only when fresh set of read requests are made. mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } public String getMdnNumber() { Loading Loading @@ -605,7 +609,8 @@ public class RuimRecords extends IccRecords { break; case EVENT_APP_LOCKED: onLocked(); case EVENT_APP_NETWORK_LOCKED: onLocked(msg.what); break; case EVENT_GET_DEVICE_IDENTITY_DONE: Loading Loading @@ -745,7 +750,7 @@ public class RuimRecords extends IccRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading @@ -754,7 +759,15 @@ public class RuimRecords extends IccRecords { } private void onLockedAllRecordsLoaded() { if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading Loading @@ -815,9 +828,10 @@ public class RuimRecords extends IccRecords { mCi.getCDMASubscription(obtainMessage(EVENT_GET_CDMA_SUBSCRIPTION_DONE)); } private void onLocked() { private void onLocked(int msg) { if (DBG) log("only fetch EF_ICCID in locked state"); mLockedRecordsRequested = true; mLockedRecordsReqReason = msg == EVENT_APP_LOCKED ? LOCKED_RECORDS_REQ_REASON_LOCKED : LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; mFh.loadEFTransparent(EF_ICCID, obtainMessage(EVENT_GET_ICCID_DONE)); mRecordsToLoad++; Loading src/java/com/android/internal/telephony/uicc/SIMRecords.java +20 −7 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public class SIMRecords extends IccRecords { private static final int SYSTEM_EVENT_BASE = 0x100; private static final int EVENT_CARRIER_CONFIG_CHANGED = 1 + SYSTEM_EVENT_BASE; private static final int EVENT_APP_LOCKED = 2 + SYSTEM_EVENT_BASE; private static final int EVENT_APP_NETWORK_LOCKED = 3 + SYSTEM_EVENT_BASE; // Lookup table for carriers known to produce SIMs which incorrectly indicate MNC length. Loading Loading @@ -211,7 +212,7 @@ public class SIMRecords extends IccRecords { mVmConfig = new VoiceMailConstants(); mRecordsRequested = false; // No load request is made till SIM ready mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading @@ -222,6 +223,7 @@ public class SIMRecords extends IccRecords { resetRecords(); mParentApp.registerForReady(this, EVENT_APP_READY, null); mParentApp.registerForLocked(this, EVENT_APP_LOCKED, null); mParentApp.registerForNetworkLocked(this, EVENT_APP_NETWORK_LOCKED, null); if (DBG) log("SIMRecords X ctor this=" + this); IntentFilter intentfilter = new IntentFilter(); Loading @@ -245,6 +247,7 @@ public class SIMRecords extends IccRecords { mCi.unSetOnSmsOnSim(this); mParentApp.unregisterForReady(this); mParentApp.unregisterForLocked(this); mParentApp.unregisterForNetworkLocked(this); mContext.unregisterReceiver(mReceiver); resetRecords(); super.dispose(); Loading Loading @@ -289,7 +292,7 @@ public class SIMRecords extends IccRecords { // read requests made so far are not valid. This is set to // true only when fresh set of read requests are made. mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } //***** Public Methods Loading Loading @@ -664,7 +667,8 @@ public class SIMRecords extends IccRecords { break; case EVENT_APP_LOCKED: onLocked(); case EVENT_APP_NETWORK_LOCKED: onLocked(msg.what); break; /* IO events */ Loading Loading @@ -1519,7 +1523,7 @@ public class SIMRecords extends IccRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading Loading @@ -1554,7 +1558,15 @@ public class SIMRecords extends IccRecords { private void onLockedAllRecordsLoaded() { setSimLanguageFromEF(); if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading Loading @@ -1674,9 +1686,10 @@ public class SIMRecords extends IccRecords { fetchSimRecords(); } private void onLocked() { private void onLocked(int msg) { if (DBG) log("only fetch EF_LI, EF_PL and EF_ICCID in locked state"); mLockedRecordsRequested = true; mLockedRecordsReqReason = msg == EVENT_APP_LOCKED ? LOCKED_RECORDS_REQ_REASON_LOCKED : LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; loadEfLiAndEfPl(); Loading Loading
src/java/com/android/internal/telephony/uicc/IccCardProxy.java +2 −2 Original line number Diff line number Diff line Loading @@ -393,12 +393,12 @@ public class IccCardProxy extends Handler implements IccCard { } if (mUiccApplication != null) { mUiccApplication.registerForReady(this, EVENT_APP_READY, null); mUiccApplication.registerForNetworkLocked(this, EVENT_NETWORK_LOCKED, null); } if (mIccRecords != null) { mIccRecords.registerForImsiReady(this, EVENT_IMSI_READY, null); mIccRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null); mIccRecords.registerForLockedRecordsLoaded(this, EVENT_ICC_LOCKED, null); mIccRecords.registerForNetworkLockedRecordsLoaded(this, EVENT_NETWORK_LOCKED, null); mIccRecords.registerForRecordsEvents(this, EVENT_ICC_RECORD_EVENTS, null); } } Loading @@ -408,12 +408,12 @@ public class IccCardProxy extends Handler implements IccCard { if (mUiccCard != null) mUiccCard.unregisterForCarrierPrivilegeRulesLoaded(this); if (mUiccApplication != null) { mUiccApplication.unregisterForReady(this); mUiccApplication.unregisterForNetworkLocked(this); } if (mIccRecords != null) { mIccRecords.unregisterForImsiReady(this); mIccRecords.unregisterForRecordsLoaded(this); mIccRecords.unregisterForLockedRecordsLoaded(this); mIccRecords.unregisterForNetworkLockedRecordsLoaded(this); mIccRecords.unregisterForRecordsEvents(this); } } Loading
src/java/com/android/internal/telephony/uicc/IccRecords.java +48 −7 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -56,6 +55,7 @@ public abstract class IccRecords extends Handler implements IccConstants { protected RegistrantList mRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mLockedRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mNetworkLockedRecordsLoadedRegistrants = new RegistrantList(); protected RegistrantList mImsiReadyRegistrants = new RegistrantList(); protected RegistrantList mRecordsEventsRegistrants = new RegistrantList(); protected RegistrantList mNewSmsRegistrants = new RegistrantList(); Loading @@ -68,9 +68,15 @@ public abstract class IccRecords extends Handler implements IccConstants { // ***** Cached SIM State; cleared on channel close // SIM is not locked protected static final int LOCKED_RECORDS_REQ_REASON_NONE = 0; // Records requested for PIN or PUK locked SIM protected static final int LOCKED_RECORDS_REQ_REASON_LOCKED = 0; // Records requested for network locked SIM protected static final int LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED = 0; protected boolean mRecordsRequested = false; // true if we've made requests for the sim records protected boolean mLockedRecordsRequested = false; // true if parent app is locked and we've // made requests for the sim records protected int mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; protected String mIccId; // Includes only decimals (no hex) protected String mFullIccId; // Includes hex characters in ICCID Loading Loading @@ -159,7 +165,7 @@ public abstract class IccRecords extends Handler implements IccConstants { + " recordsToLoad=" + mRecordsToLoad + " adnCache=" + mAdnCache + " recordsRequested=" + mRecordsRequested + " lockedRecordsRequested=" + mLockedRecordsRequested + " lockedRecordsReqReason=" + mLockedRecordsReqReason + " iccid=" + iccIdToPrint + " msisdnTag=" + mMsisdnTag + " voiceMailNum=" + Rlog.pii(VDBG, mVoiceMailNum) Loading Loading @@ -310,7 +316,7 @@ public abstract class IccRecords extends Handler implements IccConstants { } /** * Register to be notified when records are loaded for a locked SIM * Register to be notified when records are loaded for a PIN or PUK locked SIM */ public void registerForLockedRecordsLoaded(Handler h, int what, Object obj) { if (mDestroyed.get()) { Loading @@ -332,6 +338,29 @@ public abstract class IccRecords extends Handler implements IccConstants { mLockedRecordsLoadedRegistrants.remove(h); } /** * Register to be notified when records are loaded for a network locked SIM */ public void registerForNetworkLockedRecordsLoaded(Handler h, int what, Object obj) { if (mDestroyed.get()) { return; } Registrant r = new Registrant(h, what, obj); mNetworkLockedRecordsLoadedRegistrants.add(r); if (getNetworkLockedRecordsLoaded()) { r.notifyRegistrant(new AsyncResult(null, null, null)); } } /** * Unregister corresponding to registerForLockedRecordsLoaded() */ public void unregisterForNetworkLockedRecordsLoaded(Handler h) { mNetworkLockedRecordsLoadedRegistrants.remove(h); } public void registerForImsiReady(Handler h, int what, Object obj) { if (mDestroyed.get()) { return; Loading Loading @@ -582,7 +611,13 @@ public abstract class IccRecords extends Handler implements IccConstants { } protected boolean getLockedRecordsLoaded() { return mRecordsToLoad == 0 && mLockedRecordsRequested; return mRecordsToLoad == 0 && mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED; } protected boolean getNetworkLockedRecordsLoaded() { return mRecordsToLoad == 0 && mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; } //***** Overridden from Handler Loading Loading @@ -882,6 +917,12 @@ public abstract class IccRecords extends Handler implements IccConstants { pw.println(" mLockedRecordsLoadedRegistrants[" + i + "]=" + ((Registrant) mLockedRecordsLoadedRegistrants.get(i)).getHandler()); } pw.println(" mNetworkLockedRecordsLoadedRegistrants: size=" + mNetworkLockedRecordsLoadedRegistrants.size()); for (int i = 0; i < mNetworkLockedRecordsLoadedRegistrants.size(); i++) { pw.println(" mLockedRecordsLoadedRegistrants[" + i + "]=" + ((Registrant) mNetworkLockedRecordsLoadedRegistrants.get(i)).getHandler()); } pw.println(" mImsiReadyRegistrants: size=" + mImsiReadyRegistrants.size()); for (int i = 0; i < mImsiReadyRegistrants.size(); i++) { pw.println(" mImsiReadyRegistrants[" + i + "]=" Loading @@ -904,7 +945,7 @@ public abstract class IccRecords extends Handler implements IccConstants { + ((Registrant)mNetworkSelectionModeAutomaticRegistrants.get(i)).getHandler()); } pw.println(" mRecordsRequested=" + mRecordsRequested); pw.println(" mLockedRecordsRequested=" + mLockedRecordsRequested); pw.println(" mLockedRecordsReqReason=" + mLockedRecordsReqReason); pw.println(" mRecordsToLoad=" + mRecordsToLoad); pw.println(" mRdnCache=" + mAdnCache); Loading
src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java +12 −11 Original line number Diff line number Diff line Loading @@ -16,19 +16,12 @@ package com.android.internal.telephony.uicc; import static com.android.internal.telephony.uicc.IccConstants.EF_DOMAIN; import static com.android.internal.telephony.uicc.IccConstants.EF_IMPI; import static com.android.internal.telephony.uicc.IccConstants.EF_IMPU; import static com.android.internal.telephony.uicc.IccConstants.EF_IST; import static com.android.internal.telephony.uicc.IccConstants.EF_PCSCF; import android.content.Context; import android.content.Intent; import android.os.AsyncResult; import android.os.Message; import android.telephony.Rlog; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.gsm.SimTlv; Loading Loading @@ -83,7 +76,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { mRecordsRequested = false; // No load request is made till SIM ready //todo: currently locked state for ISIM is not handled well and may cause app state to not //be broadcast mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading Loading @@ -191,7 +184,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { auth_rsp = null; mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } private class EfIsimImpiLoaded implements IccRecords.IccRecordLoaded { Loading Loading @@ -289,7 +282,7 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading @@ -299,7 +292,15 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords { private void onLockedAllRecordsLoaded() { if (DBG) log("SIM locked; record load complete"); if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading
src/java/com/android/internal/telephony/uicc/RuimRecords.java +21 −7 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ public class RuimRecords extends IccRecords { private static final int EVENT_GET_SMS_DONE = 22; private static final int EVENT_APP_LOCKED = 32; private static final int EVENT_APP_NETWORK_LOCKED = 33; public RuimRecords(UiccCardApplication app, Context c, CommandsInterface ci) { super(app, c, ci); Loading @@ -105,7 +106,7 @@ public class RuimRecords extends IccRecords { mAdnCache = new AdnRecordCache(mFh); mRecordsRequested = false; // No load request is made till SIM ready mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading @@ -117,6 +118,7 @@ public class RuimRecords extends IccRecords { mParentApp.registerForReady(this, EVENT_APP_READY, null); mParentApp.registerForLocked(this, EVENT_APP_LOCKED, null); mParentApp.registerForNetworkLocked(this, EVENT_APP_NETWORK_LOCKED, null); if (DBG) log("RuimRecords X ctor this=" + this); } Loading @@ -125,6 +127,8 @@ public class RuimRecords extends IccRecords { if (DBG) log("Disposing RuimRecords " + this); //Unregister for all events mParentApp.unregisterForReady(this); mParentApp.unregisterForLocked(this); mParentApp.unregisterForNetworkLocked(this); resetRecords(); super.dispose(); } Loading Loading @@ -152,7 +156,7 @@ public class RuimRecords extends IccRecords { // read requests made so far are not valid. This is set to // true only when fresh set of read requests are made. mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } public String getMdnNumber() { Loading Loading @@ -605,7 +609,8 @@ public class RuimRecords extends IccRecords { break; case EVENT_APP_LOCKED: onLocked(); case EVENT_APP_NETWORK_LOCKED: onLocked(msg.what); break; case EVENT_GET_DEVICE_IDENTITY_DONE: Loading Loading @@ -745,7 +750,7 @@ public class RuimRecords extends IccRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading @@ -754,7 +759,15 @@ public class RuimRecords extends IccRecords { } private void onLockedAllRecordsLoaded() { if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading Loading @@ -815,9 +828,10 @@ public class RuimRecords extends IccRecords { mCi.getCDMASubscription(obtainMessage(EVENT_GET_CDMA_SUBSCRIPTION_DONE)); } private void onLocked() { private void onLocked(int msg) { if (DBG) log("only fetch EF_ICCID in locked state"); mLockedRecordsRequested = true; mLockedRecordsReqReason = msg == EVENT_APP_LOCKED ? LOCKED_RECORDS_REQ_REASON_LOCKED : LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; mFh.loadEFTransparent(EF_ICCID, obtainMessage(EVENT_GET_ICCID_DONE)); mRecordsToLoad++; Loading
src/java/com/android/internal/telephony/uicc/SIMRecords.java +20 −7 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ public class SIMRecords extends IccRecords { private static final int SYSTEM_EVENT_BASE = 0x100; private static final int EVENT_CARRIER_CONFIG_CHANGED = 1 + SYSTEM_EVENT_BASE; private static final int EVENT_APP_LOCKED = 2 + SYSTEM_EVENT_BASE; private static final int EVENT_APP_NETWORK_LOCKED = 3 + SYSTEM_EVENT_BASE; // Lookup table for carriers known to produce SIMs which incorrectly indicate MNC length. Loading Loading @@ -211,7 +212,7 @@ public class SIMRecords extends IccRecords { mVmConfig = new VoiceMailConstants(); mRecordsRequested = false; // No load request is made till SIM ready mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; // recordsToLoad is set to 0 because no requests are made yet mRecordsToLoad = 0; Loading @@ -222,6 +223,7 @@ public class SIMRecords extends IccRecords { resetRecords(); mParentApp.registerForReady(this, EVENT_APP_READY, null); mParentApp.registerForLocked(this, EVENT_APP_LOCKED, null); mParentApp.registerForNetworkLocked(this, EVENT_APP_NETWORK_LOCKED, null); if (DBG) log("SIMRecords X ctor this=" + this); IntentFilter intentfilter = new IntentFilter(); Loading @@ -245,6 +247,7 @@ public class SIMRecords extends IccRecords { mCi.unSetOnSmsOnSim(this); mParentApp.unregisterForReady(this); mParentApp.unregisterForLocked(this); mParentApp.unregisterForNetworkLocked(this); mContext.unregisterReceiver(mReceiver); resetRecords(); super.dispose(); Loading Loading @@ -289,7 +292,7 @@ public class SIMRecords extends IccRecords { // read requests made so far are not valid. This is set to // true only when fresh set of read requests are made. mRecordsRequested = false; mLockedRecordsRequested = false; mLockedRecordsReqReason = LOCKED_RECORDS_REQ_REASON_NONE; } //***** Public Methods Loading Loading @@ -664,7 +667,8 @@ public class SIMRecords extends IccRecords { break; case EVENT_APP_LOCKED: onLocked(); case EVENT_APP_NETWORK_LOCKED: onLocked(msg.what); break; /* IO events */ Loading Loading @@ -1519,7 +1523,7 @@ public class SIMRecords extends IccRecords { if (getRecordsLoaded()) { onAllRecordsLoaded(); } else if (getLockedRecordsLoaded()) { } else if (getLockedRecordsLoaded() || getNetworkLockedRecordsLoaded()) { onLockedAllRecordsLoaded(); } else if (mRecordsToLoad < 0) { loge("recordsToLoad <0, programmer error suspected"); Loading Loading @@ -1554,7 +1558,15 @@ public class SIMRecords extends IccRecords { private void onLockedAllRecordsLoaded() { setSimLanguageFromEF(); if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_LOCKED) { mLockedRecordsLoadedRegistrants.notifyRegistrants(new AsyncResult(null, null, null)); } else if (mLockedRecordsReqReason == LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED) { mNetworkLockedRecordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); } else { loge("onLockedAllRecordsLoaded: unexpected mLockedRecordsReqReason " + mLockedRecordsReqReason); } } @Override Loading Loading @@ -1674,9 +1686,10 @@ public class SIMRecords extends IccRecords { fetchSimRecords(); } private void onLocked() { private void onLocked(int msg) { if (DBG) log("only fetch EF_LI, EF_PL and EF_ICCID in locked state"); mLockedRecordsRequested = true; mLockedRecordsReqReason = msg == EVENT_APP_LOCKED ? LOCKED_RECORDS_REQ_REASON_LOCKED : LOCKED_RECORDS_REQ_REASON_NETWORK_LOCKED; loadEfLiAndEfPl(); Loading