Merge "Refactor IccRecords and IccCard" into honeycomb-LTE
diff --git a/telephony/java/com/android/internal/telephony/IccCard.java b/telephony/java/com/android/internal/telephony/IccCard.java
index dbfc0d4..f186c07 100644
--- a/telephony/java/com/android/internal/telephony/IccCard.java
+++ b/telephony/java/com/android/internal/telephony/IccCard.java
@@ -28,6 +28,8 @@
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.CommandsInterface.RadioState;
+import com.android.internal.telephony.gsm.SIMRecords;
+
import android.os.SystemProperties;
/**
@@ -430,8 +432,14 @@
broadcastIccStateChangedIntent(INTENT_VALUE_ICC_LOCKED,
INTENT_VALUE_LOCKED_NETWORK);
}
+
+ /*
+ * TODO: We need to try to remove this, maybe if the RIL sends up a RIL_UNSOL_SIM_REFRESH?
+ */
if (oldState != State.READY && newState == State.READY && LTE_AVAILABLE_ON_CDMA) {
- mPhone.mSIMRecords.onSimReady();
+ if (mPhone.mIccRecords instanceof SIMRecords) {
+ ((SIMRecords)mPhone.mIccRecords).onSimReady();
+ }
}
}
diff --git a/telephony/java/com/android/internal/telephony/IccRecords.java b/telephony/java/com/android/internal/telephony/IccRecords.java
index b8d9e3c..10a3b69 100644
--- a/telephony/java/com/android/internal/telephony/IccRecords.java
+++ b/telephony/java/com/android/internal/telephony/IccRecords.java
@@ -21,9 +21,6 @@
import android.os.Message;
import android.os.Registrant;
import android.os.RegistrantList;
-import android.util.Log;
-
-import java.util.ArrayList;
/**
* {@hide}
@@ -79,6 +76,11 @@
this.phone = p;
}
+ /**
+ * Call when the IccRecords object is no longer going to be used.
+ */
+ public abstract void dispose();
+
protected abstract void onRadioOffOrNotAvailable();
//***** Public Methods
@@ -99,6 +101,17 @@
recordsLoadedRegistrants.remove(h);
}
+ /**
+ * Get the International Mobile Subscriber ID (IMSI) on a SIM
+ * for GSM, UMTS and like networks. Default is null if IMSI is
+ * not supported or unavailable.
+ *
+ * @return null if SIM is not yet ready or unavailable
+ */
+ public String getIMSI() {
+ return null;
+ }
+
public String getMsisdnNumber() {
return msisdn;
}
@@ -220,6 +233,7 @@
}
//***** Overridden from Handler
+ @Override
public abstract void handleMessage(Message msg);
protected abstract void onRecordLoaded();
@@ -232,8 +246,51 @@
* and TS 51.011 10.3.11 for details.
*
* If the SPN is not found on the SIM, the rule is always PLMN_ONLY.
+ * Generally used for GSM/UMTS and the like SIMs.
*/
- protected abstract int getDisplayRule(String plmn);
+ public abstract int getDisplayRule(String plmn);
+ /**
+ * Return true if "Restriction of menu options for manual PLMN selection"
+ * bit is set or EF_CSP data is unavailable, return false otherwise.
+ * Generally used for GSM/UMTS and the like SIMs.
+ */
+ public boolean isCspPlmnEnabled() {
+ return false;
+ }
+
+ /**
+ * Returns the 5 or 6 digit MCC/MNC of the operator that
+ * provided the SIM card. Returns null of SIM is not yet ready
+ * or is not valid for the type of IccCard. Generally used for
+ * GSM/UMTS and the like SIMS
+ */
+ public String getOperatorNumeric() {
+ return null;
+ }
+
+ /**
+ * Get the current Voice call forwarding flag for GSM/UMTS and the like SIMs
+ *
+ * @return true if enabled
+ */
+ public boolean getVoiceCallForwardingFlag() {
+ return false;
+ }
+
+ /**
+ * Set the voice call forwarding flag for GSM/UMTS and the like SIMs
+ *
+ * @param line to enable/disable
+ * @param enable
+ */
+ public void setVoiceCallForwardingFlag(int line, boolean enable) {
+ }
+
+ /**
+ * Write string to log file
+ *
+ * @param s is the string to write
+ */
protected abstract void log(String s);
}
diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java
index 5a77da7..cb0c26a 100644
--- a/telephony/java/com/android/internal/telephony/PhoneBase.java
+++ b/telephony/java/com/android/internal/telephony/PhoneBase.java
@@ -118,8 +118,8 @@
int mCallRingDelay;
public boolean mIsTheCurrentActivePhone = true;
boolean mIsVoiceCapable = true;
- public SIMRecords mSIMRecords;
- public SimCard mSimCard;
+ public IccRecords mIccRecords;
+ public IccCard mIccCard;
public SMSDispatcher mSMS;
/**
@@ -681,6 +681,31 @@
return null;
}
+ @Override
+ public IccCard getIccCard() {
+ return mIccCard;
+ }
+
+ @Override
+ public String getIccSerialNumber() {
+ return mIccRecords.iccid;
+ }
+
+ @Override
+ public boolean getIccRecordsLoaded() {
+ return mIccRecords.getRecordsLoaded();
+ }
+
+ @Override
+ public boolean getMessageWaitingIndicator() {
+ return mIccRecords.getVoiceMessageWaiting();
+ }
+
+ @Override
+ public boolean getCallForwardingIndicator() {
+ return mIccRecords.getVoiceCallForwardingFlag();
+ }
+
/**
* Query the status of the CDMA roaming preference
*/
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
index e45141a..586e6b3 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java
@@ -48,58 +48,30 @@
// Constructors
public CDMALTEPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) {
this(context, ci, notifier, false);
- log("CDMALTEPhone Constructors");
}
public CDMALTEPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
boolean unitTestMode) {
super(context, ci, notifier, false);
-
- mSIMRecords = new SIMRecords(this);
- mSimCard = new SimCard(this, LOG_TAG, DBG);
}
@Override
- protected void initSST() {
+ protected void initSstIcc() {
mSST = new CdmaLteServiceStateTracker(this);
- }
-
- public void dispose() {
- synchronized (PhoneProxy.lockForRadioTechnologyChange) {
- super.dispose();
- mSIMRecords.dispose();
- mSimCard.dispose();
- }
- }
-
- @Override
- public void removeReferences() {
- super.removeReferences();
- this.mSIMRecords = null;
- this.mSimCard = null;
- }
-
- @Override
- public ServiceStateTracker getServiceStateTracker() {
- return mSST;
- }
-
- public IccCard getIccCard() {
- return mSimCard;
- }
-
- @Override
- public String getIccSerialNumber() {
- return mSIMRecords.iccid;
+ mIccRecords = new SIMRecords(this);
+ mIccCard = new SimCard(this, LOG_TAG, DBG);
}
@Override
public DataState getDataConnectionState(String apnType) {
+ // TODO: Remove instanceof if possible.
boolean isCdmaDataConnectionTracker = false;
if (mDataConnectionTracker instanceof CdmaDataConnectionTracker) {
+ log("getDataConnectionState isCdmaDataConnectionTracker");
isCdmaDataConnectionTracker = true;
+ } else {
+ log("getDataConnectionState NOT CdmaDataConnectionTracker");
}
- log("getDataConnectionState");
DataState ret = DataState.DISCONNECTED;
if (!isCdmaDataConnectionTracker && (SystemProperties.get("adb.connected", "").length()
@@ -145,28 +117,29 @@
}
}
+ log("getDataConnectionState apnType=" + apnType + " ret=" + ret);
return ret;
}
public boolean updateCurrentCarrierInProvider() {
- if (mSIMRecords != null) {
+ if (mIccRecords != null) {
try {
Uri uri = Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current");
ContentValues map = new ContentValues();
- map.put(Telephony.Carriers.NUMERIC, mSIMRecords.getSIMOperatorNumeric());
+ map.put(Telephony.Carriers.NUMERIC, mIccRecords.getOperatorNumeric());
+ log("updateCurrentCarrierInProvider insert uri=" + uri);
mContext.getContentResolver().insert(uri, map);
return true;
} catch (SQLException e) {
- Log.e(LOG_TAG, "[CDMALTEPhone] Can't store current operator", e);
+ Log.e(LOG_TAG, "[CDMALTEPhone] Can't store current operator ret false", e);
}
+ } else {
+ log("updateCurrentCarrierInProvider mIccRecords == null ret false");
}
return false;
}
- public String getActiveApn(String apnType) {
- return mDataConnectionTracker.getActiveApnString(apnType);
- }
-
+ @Override
protected void log(String s) {
if (DBG)
Log.d(LOG_TAG, "[CDMALTEPhone] " + s);
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
index 152ffd5..4fa369c3 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
@@ -49,6 +49,7 @@
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.DataConnection;
+import com.android.internal.telephony.IccRecords;
import com.android.internal.telephony.MccTable;
import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccException;
@@ -99,8 +100,6 @@
// Instance Variables
CdmaCallTracker mCT;
CdmaServiceStateTracker mSST;
- RuimRecords mRuimRecords;
- RuimCard mRuimCard;
ArrayList <CdmaMmiCode> mPendingMmis = new ArrayList<CdmaMmiCode>();
RuimPhoneBookInterfaceManager mRuimPhoneBookInterfaceManager;
RuimSmsInterfaceManager mRuimSmsInterfaceManager;
@@ -142,19 +141,21 @@
// Constructors
public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) {
super(notifier, context, ci, false);
- initSST();
+ initSstIcc();
init(context, notifier);
}
public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
boolean unitTestMode) {
super(notifier, context, ci, unitTestMode);
- initSST();
+ initSstIcc();
init(context, notifier);
}
- protected void initSST() {
+ protected void initSstIcc() {
mSST = new CdmaServiceStateTracker(this);
+ mIccRecords = new RuimRecords(this);
+ mIccCard = new RuimCard(this, LOG_TAG, DBG);
}
protected void init(Context context, PhoneNotifier notifier) {
@@ -162,18 +163,16 @@
mCT = new CdmaCallTracker(this);
mSMS = new CdmaSMSDispatcher(this);
mIccFileHandler = new RuimFileHandler(this);
- mRuimRecords = new RuimRecords(this);
mDataConnectionTracker = new CdmaDataConnectionTracker (this);
- mRuimCard = new RuimCard(this);
mRuimPhoneBookInterfaceManager = new RuimPhoneBookInterfaceManager(this);
mRuimSmsInterfaceManager = new RuimSmsInterfaceManager(this, mSMS);
mSubInfo = new PhoneSubInfo(this);
mEriManager = new EriManager(this, context, EriManager.ERI_FROM_XML);
- mCcatService = CatService.getInstance(mCM, mRuimRecords, mContext,
- mIccFileHandler, mRuimCard);
+ mCcatService = CatService.getInstance(mCM, mIccRecords, mContext,
+ mIccFileHandler, mIccCard);
mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null);
- mRuimRecords.registerForRecordsLoaded(this, EVENT_RUIM_RECORDS_LOADED, null);
+ mIccRecords.registerForRecordsLoaded(this, EVENT_RUIM_RECORDS_LOADED, null);
mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
mCM.registerForOn(this, EVENT_RADIO_ON, null);
mCM.setOnSuppServiceNotification(this, EVENT_SSN, null);
@@ -222,9 +221,10 @@
public void dispose() {
synchronized(PhoneProxy.lockForRadioTechnologyChange) {
super.dispose();
+ log("dispose");
//Unregister from all former registered events
- mRuimRecords.unregisterForRecordsLoaded(this); //EVENT_RUIM_RECORDS_LOADED
+ mIccRecords.unregisterForRecordsLoaded(this); //EVENT_RUIM_RECORDS_LOADED
mCM.unregisterForAvailable(this); //EVENT_RADIO_AVAILABLE
mCM.unregisterForOffOrNotAvailable(this); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
mCM.unregisterForOn(this); //EVENT_RADIO_ON
@@ -241,8 +241,8 @@
mSST.dispose();
mSMS.dispose();
mIccFileHandler.dispose(); // instance of RuimFileHandler
- mRuimRecords.dispose();
- mRuimCard.dispose();
+ mIccRecords.dispose();
+ mIccCard.dispose();
mRuimPhoneBookInterfaceManager.dispose();
mRuimSmsInterfaceManager.dispose();
mSubInfo.dispose();
@@ -252,13 +252,14 @@
}
public void removeReferences() {
+ log("removeReferences");
this.mRuimPhoneBookInterfaceManager = null;
this.mRuimSmsInterfaceManager = null;
this.mSMS = null;
this.mSubInfo = null;
- this.mRuimRecords = null;
+ this.mIccRecords = null;
this.mIccFileHandler = null;
- this.mRuimCard = null;
+ this.mIccCard = null;
this.mDataConnectionTracker = null;
this.mCT = null;
this.mSST = null;
@@ -547,14 +548,6 @@
Log.e(LOG_TAG, "setLine1Number: not possible in CDMA");
}
- public IccCard getIccCard() {
- return mRuimCard;
- }
-
- public String getIccSerialNumber() {
- return mRuimRecords.iccid;
- }
-
public void setCallWaiting(boolean enable, Message onComplete) {
Log.e(LOG_TAG, "method setCallWaiting is NOT supported in CDMA!");
}
@@ -657,6 +650,7 @@
}
}
+ log("getDataConnectionState apnType=" + apnType + " ret=" + ret);
return ret;
}
@@ -733,7 +727,7 @@
Message resp;
mVmNumber = voiceMailNumber;
resp = obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
- mRuimRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
+ mIccRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
}
public String getVoiceMailNumber() {
@@ -755,7 +749,7 @@
* @hide
*/
public int getVoiceMessageCount() {
- int voicemailCount = mRuimRecords.getVoiceMessageCount();
+ int voicemailCount = mIccRecords.getVoiceMessageCount();
// If mRuimRecords.getVoiceMessageCount returns zero, then there is possibility
// that phone was power cycled and would have lost the voicemail count.
// So get the count from preferences.
@@ -780,10 +774,6 @@
return ret;
}
- public boolean getIccRecordsLoaded() {
- return mRuimRecords.getRecordsLoaded();
- }
-
public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) {
Log.e(LOG_TAG, "getCallForwardingOption: not possible in CDMA");
}
@@ -864,13 +854,13 @@
/*package*/ void
updateMessageWaitingIndicator(boolean mwi) {
// this also calls notifyMessageWaitingIndicator()
- mRuimRecords.setVoiceMessageWaiting(1, mwi ? -1 : 0);
+ mIccRecords.setVoiceMessageWaiting(1, mwi ? -1 : 0);
}
/* This function is overloaded to send number of voicemails instead of sending true/false */
/*package*/ void
updateMessageWaitingIndicator(int mwi) {
- mRuimRecords.setVoiceMessageWaiting(1, mwi);
+ mIccRecords.setVoiceMessageWaiting(1, mwi);
}
@Override
@@ -1417,6 +1407,7 @@
Uri uri = Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current");
ContentValues map = new ContentValues();
map.put(Telephony.Carriers.NUMERIC, operatorNumeric);
+ log("updateCurrentCarrierInProvider insert uri=" + uri);
getContext().getContentResolver().insert(uri, map);
// Updates MCC MNC device configuration information
@@ -1429,4 +1420,9 @@
}
return false;
}
+
+ protected void log(String s) {
+ if (DBG)
+ Log.d(LOG_TAG, "[CDMAPhone] " + s);
+ }
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index f325812..375d0d1 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -98,7 +98,7 @@
p.mCM.registerForAvailable (this, EVENT_RADIO_AVAILABLE, null);
p.mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
- p.mRuimRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null);
+ p.mIccRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null);
p.mCM.registerForNVReady(this, EVENT_NV_READY, null);
p.mCM.registerForDataNetworkStateChanged (this, EVENT_DATA_STATE_CHANGED, null);
p.mCT.registerForVoiceCallEnded (this, EVENT_VOICE_CALL_ENDED, null);
@@ -124,7 +124,7 @@
// Unregister from all events
mPhone.mCM.unregisterForAvailable(this);
mPhone.mCM.unregisterForOffOrNotAvailable(this);
- mCdmaPhone.mRuimRecords.unregisterForRecordsLoaded(this);
+ mCdmaPhone.mIccRecords.unregisterForRecordsLoaded(this);
mPhone.mCM.unregisterForNVReady(this);
mPhone.mCM.unregisterForDataNetworkStateChanged(this);
mCdmaPhone.mCT.unregisterForVoiceCallEnded(this);
@@ -183,7 +183,7 @@
(psState == ServiceState.STATE_IN_SERVICE ||
mAutoAttachOnCreation) &&
(mPhone.mCM.getNvState() == CommandsInterface.RadioState.NV_READY ||
- mCdmaPhone.mRuimRecords.getRecordsLoaded()) &&
+ mCdmaPhone.mIccRecords.getRecordsLoaded()) &&
(mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed() ||
mPhone.getState() == Phone.State.IDLE) &&
!roaming &&
@@ -197,7 +197,7 @@
reason += " - psState= " + psState;
}
if (!(mPhone.mCM.getNvState() == CommandsInterface.RadioState.NV_READY ||
- mCdmaPhone.mRuimRecords.getRecordsLoaded())) {
+ mCdmaPhone.mIccRecords.getRecordsLoaded())) {
reason += " - radioState= " + mPhone.mCM.getNvState() + " - RUIM not loaded";
}
if (!(mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed() ||
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index afebebe..35a98edc 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -214,7 +214,7 @@
cm.unregisterForNVReady(this);
cm.unregisterForCdmaOtaProvision(this);
phone.unregisterForEriFileLoaded(this);
- phone.mRuimRecords.unregisterForRecordsLoaded(this);
+ phone.mIccRecords.unregisterForRecordsLoaded(this);
cm.unSetOnSignalStrengthUpdate(this);
cm.unSetOnNITZTime(this);
cr.unregisterContentObserver(mAutoTimeObserver);
@@ -260,7 +260,7 @@
// unlocked. At this stage, the radio is already powered on.
isSubscriptionFromRuim = true;
if (mNeedToRegForRuimLoaded) {
- phone.mRuimRecords.registerForRecordsLoaded(this,
+ phone.mIccRecords.registerForRecordsLoaded(this,
EVENT_RUIM_RECORDS_LOADED, null);
mNeedToRegForRuimLoaded = false;
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimCard.java b/telephony/java/com/android/internal/telephony/cdma/RuimCard.java
index 734badd..cfe7df7 100644
--- a/telephony/java/com/android/internal/telephony/cdma/RuimCard.java
+++ b/telephony/java/com/android/internal/telephony/cdma/RuimCard.java
@@ -25,8 +25,8 @@
*/
public final class RuimCard extends IccCard {
- RuimCard(CDMAPhone phone) {
- super(phone, "CDMA", true);
+ RuimCard(CDMAPhone phone, String LOG_TAG, boolean dbg) {
+ super(phone, LOG_TAG, dbg);
mPhone.mCM.registerForRUIMLockedOrAbsent(mHandler, EVENT_ICC_LOCKED_OR_ABSENT, null);
mPhone.mCM.registerForOffOrNotAvailable(mHandler, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
mPhone.mCM.registerForRUIMReady(mHandler, EVENT_ICC_READY, null);
@@ -43,7 +43,7 @@
@Override
public String getServiceProviderName () {
- return ((CDMAPhone)mPhone).mRuimRecords.getServiceProviderName();
+ return mPhone.mIccRecords.getServiceProviderName();
}
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimPhoneBookInterfaceManager.java b/telephony/java/com/android/internal/telephony/cdma/RuimPhoneBookInterfaceManager.java
index 6e12f24a..ce33066 100644
--- a/telephony/java/com/android/internal/telephony/cdma/RuimPhoneBookInterfaceManager.java
+++ b/telephony/java/com/android/internal/telephony/cdma/RuimPhoneBookInterfaceManager.java
@@ -32,7 +32,7 @@
public RuimPhoneBookInterfaceManager(CDMAPhone phone) {
super(phone);
- adnCache = phone.mRuimRecords.getAdnCache();
+ adnCache = phone.mIccRecords.getAdnCache();
//NOTE service "simphonebook" added by IccSmsInterfaceManagerProxy
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
index a6fd966..719eff3 100644
--- a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
+++ b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
@@ -94,6 +94,7 @@
}
+ @Override
public void dispose() {
//Unregister for all events
phone.mCM.unregisterForRUIMReady(this);
@@ -293,7 +294,7 @@
recordsLoadedRegistrants.notifyRegistrants(
new AsyncResult(null, null, null));
- ((CDMAPhone) phone).mRuimCard.broadcastIccStateChangedIntent(
+ phone.mIccCard.broadcastIccStateChangedIntent(
RuimCard.INTENT_VALUE_ICC_LOADED, null);
}
@@ -302,7 +303,7 @@
READY is sent before IMSI ready
*/
- ((CDMAPhone) phone).mRuimCard.broadcastIccStateChangedIntent(
+ phone.mIccCard.broadcastIccStateChangedIntent(
RuimCard.INTENT_VALUE_ICC_READY, null);
fetchRuimRecords();
@@ -324,8 +325,13 @@
// Further records that can be inserted are Operator/OEM dependent
}
+ /**
+ * {@inheritDoc}
+ *
+ * No Display rule for RUIMs yet.
+ */
@Override
- protected int getDisplayRule(String plmn) {
+ public int getDisplayRule(String plmn) {
// TODO together with spn
return 0;
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
index b137ca7..3ccc03d 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
@@ -142,19 +142,18 @@
mSST = new GsmServiceStateTracker (this);
mSMS = new GsmSMSDispatcher(this);
mIccFileHandler = new SIMFileHandler(this);
- mSIMRecords = new SIMRecords(this);
+ mIccRecords = new SIMRecords(this);
mDataConnectionTracker = new GsmDataConnectionTracker (this);
- mSimCard = new SimCard(this);
+ mIccCard = new SimCard(this);
if (!unitTestMode) {
mSimPhoneBookIntManager = new SimPhoneBookInterfaceManager(this);
mSimSmsIntManager = new SimSmsInterfaceManager(this, mSMS);
mSubInfo = new PhoneSubInfo(this);
}
- mStkService = CatService.getInstance(mCM, mSIMRecords, mContext,
- (SIMFileHandler)mIccFileHandler, mSimCard);
+ mStkService = CatService.getInstance(mCM, mIccRecords, mContext, mIccFileHandler, mIccCard);
mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null);
- mSIMRecords.registerForRecordsLoaded(this, EVENT_SIM_RECORDS_LOADED, null);
+ mIccRecords.registerForRecordsLoaded(this, EVENT_SIM_RECORDS_LOADED, null);
mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
mCM.registerForOn(this, EVENT_RADIO_ON, null);
mCM.setOnUSSD(this, EVENT_USSD, null);
@@ -206,7 +205,7 @@
//Unregister from all former registered events
mCM.unregisterForAvailable(this); //EVENT_RADIO_AVAILABLE
- mSIMRecords.unregisterForRecordsLoaded(this); //EVENT_SIM_RECORDS_LOADED
+ mIccRecords.unregisterForRecordsLoaded(this); //EVENT_SIM_RECORDS_LOADED
mCM.unregisterForOffOrNotAvailable(this); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
mCM.unregisterForOn(this); //EVENT_RADIO_ON
mSST.unregisterForNetworkAttached(this); //EVENT_REGISTERED_TO_NETWORK
@@ -221,8 +220,8 @@
mDataConnectionTracker.dispose();
mSST.dispose();
mIccFileHandler.dispose(); // instance of SimFileHandler
- mSIMRecords.dispose();
- mSimCard.dispose();
+ mIccRecords.dispose();
+ mIccCard.dispose();
mSimPhoneBookIntManager.dispose();
mSimSmsIntManager.dispose();
mSubInfo.dispose();
@@ -236,9 +235,9 @@
this.mSimSmsIntManager = null;
this.mSMS = null;
this.mSubInfo = null;
- this.mSIMRecords = null;
+ this.mIccRecords = null;
this.mIccFileHandler = null;
- this.mSimCard = null;
+ this.mIccCard = null;
this.mDataConnectionTracker = null;
this.mCT = null;
this.mSST = null;
@@ -274,14 +273,6 @@
return mSST.mSignalStrength;
}
- public boolean getMessageWaitingIndicator() {
- return mSIMRecords.getVoiceMessageWaiting();
- }
-
- public boolean getCallForwardingIndicator() {
- return mSIMRecords.getVoiceCallForwardingFlag();
- }
-
public CallTracker getCallTracker() {
return mCT;
}
@@ -419,7 +410,7 @@
/*package*/ void
updateMessageWaitingIndicator(boolean mwi) {
// this also calls notifyMessageWaitingIndicator()
- mSIMRecords.setVoiceMessageWaiting(1, mwi ? -1 : 0);
+ mIccRecords.setVoiceMessageWaiting(1, mwi ? -1 : 0);
}
public void
@@ -820,7 +811,7 @@
public String getVoiceMailNumber() {
// Read from the SIM. If its null, try reading from the shared preference area.
- String number = mSIMRecords.getVoiceMailNumber();
+ String number = mIccRecords.getVoiceMailNumber();
if (TextUtils.isEmpty(number)) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
number = sp.getString(VM_NUMBER, null);
@@ -843,7 +834,7 @@
public String getVoiceMailAlphaTag() {
String ret;
- ret = mSIMRecords.getVoiceMailAlphaTag();
+ ret = mIccRecords.getVoiceMailAlphaTag();
if (ret == null || ret.length() == 0) {
return mContext.getText(
@@ -872,23 +863,19 @@
}
public String getSubscriberId() {
- return mSIMRecords.imsi;
- }
-
- public String getIccSerialNumber() {
- return mSIMRecords.iccid;
+ return mIccRecords.getIMSI();
}
public String getLine1Number() {
- return mSIMRecords.getMsisdnNumber();
+ return mIccRecords.getMsisdnNumber();
}
public String getLine1AlphaTag() {
- return mSIMRecords.getMsisdnAlphaTag();
+ return mIccRecords.getMsisdnAlphaTag();
}
public void setLine1Number(String alphaTag, String number, Message onComplete) {
- mSIMRecords.setMsisdnNumber(alphaTag, number, onComplete);
+ mIccRecords.setMsisdnNumber(alphaTag, number, onComplete);
}
public void setVoiceMailNumber(String alphaTag,
@@ -898,7 +885,7 @@
Message resp;
mVmNumber = voiceMailNumber;
resp = obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
- mSIMRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
+ mIccRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
}
private boolean isValidCommandInterfaceCFReason (int commandInterfaceCFReason) {
@@ -988,15 +975,6 @@
mCM.setCallWaiting(enable, CommandsInterface.SERVICE_CLASS_VOICE, onComplete);
}
- public boolean
- getIccRecordsLoaded() {
- return mSIMRecords.getRecordsLoaded();
- }
-
- public IccCard getIccCard() {
- return mSimCard;
- }
-
public void
getAvailableNetworks(Message response) {
mCM.getAvailableNetworks(response);
@@ -1276,7 +1254,7 @@
case EVENT_SET_CALL_FORWARD_DONE:
ar = (AsyncResult)msg.obj;
if (ar.exception == null) {
- mSIMRecords.setVoiceCallForwardingFlag(1, msg.arg1 == 1);
+ mIccRecords.setVoiceCallForwardingFlag(1, msg.arg1 == 1);
}
onComplete = (Message) ar.userObj;
if (onComplete != null) {
@@ -1340,11 +1318,11 @@
* @return true for success; false otherwise.
*/
boolean updateCurrentCarrierInProvider() {
- if (mSIMRecords != null) {
+ if (mIccRecords != null) {
try {
Uri uri = Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current");
ContentValues map = new ContentValues();
- map.put(Telephony.Carriers.NUMERIC, mSIMRecords.getSIMOperatorNumeric());
+ map.put(Telephony.Carriers.NUMERIC, mIccRecords.getOperatorNumeric());
mContext.getContentResolver().insert(uri, map);
return true;
} catch (SQLException e) {
@@ -1409,11 +1387,11 @@
if (infos == null || infos.length == 0) {
// Assume the default is not active
// Set unconditional CFF in SIM to false
- mSIMRecords.setVoiceCallForwardingFlag(1, false);
+ mIccRecords.setVoiceCallForwardingFlag(1, false);
} else {
for (int i = 0, s = infos.length; i < s; i++) {
if ((infos[i].serviceClass & SERVICE_CLASS_VOICE) != 0) {
- mSIMRecords.setVoiceCallForwardingFlag(1, (infos[i].status == 1));
+ mIccRecords.setVoiceCallForwardingFlag(1, (infos[i].status == 1));
// should only have the one
break;
}
@@ -1462,6 +1440,6 @@
}
public boolean isCspPlmnEnabled() {
- return mSIMRecords.isCspPlmnEnabled();
+ return mIccRecords.isCspPlmnEnabled();
}
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 3d7fc54..84b2932 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -143,7 +143,7 @@
p.mCM.registerForAvailable (this, EVENT_RADIO_AVAILABLE, null);
p.mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
- p.mSIMRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null);
+ p.mIccRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null);
p.mCM.registerForDataNetworkStateChanged (this, EVENT_DATA_STATE_CHANGED, null);
p.getCallTracker().registerForVoiceCallEnded (this, EVENT_VOICE_CALL_ENDED, null);
p.getCallTracker().registerForVoiceCallStarted (this, EVENT_VOICE_CALL_STARTED, null);
@@ -179,7 +179,7 @@
//Unregister for all events
mPhone.mCM.unregisterForAvailable(this);
mPhone.mCM.unregisterForOffOrNotAvailable(this);
- mPhone.mSIMRecords.unregisterForRecordsLoaded(this);
+ mPhone.mIccRecords.unregisterForRecordsLoaded(this);
mPhone.mCM.unregisterForDataNetworkStateChanged(this);
mPhone.getCallTracker().unregisterForVoiceCallEnded(this);
mPhone.getCallTracker().unregisterForVoiceCallStarted(this);
@@ -582,7 +582,7 @@
boolean allowed =
gprsState == ServiceState.STATE_IN_SERVICE &&
- mPhone.mSIMRecords.getRecordsLoaded() &&
+ mPhone.mIccRecords.getRecordsLoaded() &&
mPhone.getState() == Phone.State.IDLE &&
mInternalDataEnabled &&
(!mPhone.getServiceState().getRoaming() || getDataOnRoamingEnabled()) &&
@@ -593,7 +593,7 @@
if (!(gprsState == ServiceState.STATE_IN_SERVICE)) {
reason += " - gprs= " + gprsState;
}
- if (!mPhone.mSIMRecords.getRecordsLoaded()) reason += " - SIM not loaded";
+ if (!mPhone.mIccRecords.getRecordsLoaded()) reason += " - SIM not loaded";
if (mPhone.getState() != Phone.State.IDLE) {
reason += " - PhoneState= " + mPhone.getState();
}
@@ -1510,7 +1510,7 @@
log("onRadioAvailable: We're on the simulator; assuming data is connected");
}
- if (mPhone.mSIMRecords.getRecordsLoaded()) {
+ if (mPhone.mIccRecords.getRecordsLoaded()) {
notifyDataAvailability(null);
}
@@ -1757,7 +1757,7 @@
*/
private void createAllApnList() {
mAllApns = new ArrayList<ApnSetting>();
- String operator = mPhone.mSIMRecords.getSIMOperatorNumeric();
+ String operator = mPhone.mIccRecords.getOperatorNumeric();
if (operator != null) {
String selection = "numeric = '" + operator + "'";
if (DBG) log("createAllApnList: selection=" + selection);
@@ -1860,7 +1860,7 @@
return apnList;
}
- String operator = mPhone.mSIMRecords.getSIMOperatorNumeric();
+ String operator = mPhone.mIccRecords.getOperatorNumeric();
if (requestedApnType.equals(Phone.APN_TYPE_DEFAULT)) {
if (canSetPreferApn && mPreferredApn != null) {
if (DBG) {
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java b/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
index 2962e0f..680b3cd 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java
@@ -765,7 +765,7 @@
// invalid length
handlePasswordError(com.android.internal.R.string.invalidPin);
} else if (sc.equals(SC_PIN) &&
- phone.mSimCard.getState() == SimCard.State.PUK_REQUIRED ) {
+ phone.mIccCard.getState() == SimCard.State.PUK_REQUIRED ) {
// Sim is puk-locked
handlePasswordError(com.android.internal.R.string.needPuk);
} else {
@@ -885,7 +885,7 @@
*/
if ((ar.exception == null) && (msg.arg1 == 1)) {
boolean cffEnabled = (msg.arg2 == 1);
- phone.mSIMRecords.setVoiceCallForwardingFlag(1, cffEnabled);
+ phone.mIccRecords.setVoiceCallForwardingFlag(1, cffEnabled);
}
onSetComplete(ar);
@@ -1203,7 +1203,7 @@
(info.serviceClass & serviceClassMask)
== CommandsInterface.SERVICE_CLASS_VOICE) {
boolean cffEnabled = (info.status == 1);
- phone.mSIMRecords.setVoiceCallForwardingFlag(1, cffEnabled);
+ phone.mIccRecords.setVoiceCallForwardingFlag(1, cffEnabled);
}
return TextUtils.replace(template, sources, destinations);
@@ -1228,7 +1228,7 @@
sb.append(context.getText(com.android.internal.R.string.serviceDisabled));
// Set unconditional CFF in SIM to false
- phone.mSIMRecords.setVoiceCallForwardingFlag(1, false);
+ phone.mIccRecords.setVoiceCallForwardingFlag(1, false);
} else {
SpannableStringBuilder tb = new SpannableStringBuilder();
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index 72cc666..dce9a17 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -247,7 +247,7 @@
cm.unregisterForVoiceNetworkStateChanged(this);
cm.unregisterForSIMReady(this);
- phone.mSIMRecords.unregisterForRecordsLoaded(this);
+ phone.mIccRecords.unregisterForRecordsLoaded(this);
cm.unSetOnSignalStrengthUpdate(this);
cm.unSetOnRestrictedStateChanged(this);
cm.unSetOnNITZTime(this);
@@ -281,7 +281,7 @@
// it has been unlocked. At this stage, the radio is already
// powered on.
if (mNeedToRegForSimLoaded) {
- phone.mSIMRecords.registerForRecordsLoaded(this,
+ phone.mIccRecords.registerForRecordsLoaded(this,
EVENT_SIM_RECORDS_LOADED, null);
mNeedToRegForSimLoaded = false;
}
@@ -487,8 +487,8 @@
}
protected void updateSpnDisplay() {
- int rule = phone.mSIMRecords.getDisplayRule(ss.getOperatorNumeric());
- String spn = phone.mSIMRecords.getServiceProviderName();
+ int rule = phone.mIccRecords.getDisplayRule(ss.getOperatorNumeric());
+ String spn = phone.mIccRecords.getServiceProviderName();
String plmn = ss.getOperatorAlphaLong();
// For emergency calls only, pass the EmergencyCallsOnly string via EXTRA_PLMN
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
index 7fb250f..e0323e3 100755
--- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
@@ -59,8 +59,8 @@
// ***** Cached SIM State; cleared on channel close
- String imsi;
- boolean callForwardingEnabled;
+ private String imsi;
+ private boolean callForwardingEnabled;
/**
@@ -191,6 +191,7 @@
}
+ @Override
public void dispose() {
//Unregister for all events
phone.mCM.unregisterForSIMReady(this);
@@ -231,7 +232,10 @@
//***** Public Methods
- /** Returns null if SIM is not yet ready */
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getIMSI() {
return imsi;
}
@@ -404,10 +408,18 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean getVoiceCallForwardingFlag() {
return callForwardingEnabled;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void setVoiceCallForwardingFlag(int line, boolean enable) {
if (line != 1) return; // only line 1 is supported
@@ -468,12 +480,13 @@
}
}
- /** Returns the 5 or 6 digit MCC/MNC of the operator that
- * provided the SIM card. Returns null of SIM is not yet ready
+ /**
+ * {@inheritDoc}
*/
- public String getSIMOperatorNumeric() {
+ @Override
+ public String getOperatorNumeric() {
if (imsi == null) {
- Log.d(LOG_TAG, "getSIMOperatorNumeric: IMSI == null");
+ Log.d(LOG_TAG, "getOperatorNumeric: IMSI == null");
return null;
}
if (mncLength == UNINITIALIZED || mncLength == UNKNOWN) {
@@ -484,7 +497,7 @@
// STOPSHIP: to be removed
if (SystemProperties.getInt(com.android.internal.telephony.TelephonyProperties
.PROPERTY_NETWORK_LTE_ON_CDMA, 0) == 1) {
- Log.e(LOG_TAG, "getSIMOperatorNumeric: STOPSHIP bad numeric operators in lte");
+ Log.e(LOG_TAG, "getOperatorNumeric: STOPSHIP bad numeric operators in lte");
return SystemProperties.get("ro.cdma.home.operator.numeric", "310004");
}
// Length = length of MCC + length of MNC
@@ -559,7 +572,7 @@
// finally have both the imsi and the mncLength and can parse the imsi properly
MccTable.updateMccMncConfiguration(phone, imsi.substring(0, 3 + mncLength));
}
- phone.mSimCard.broadcastIccStateChangedIntent(
+ phone.mIccCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_IMSI, null);
break;
@@ -1221,7 +1234,7 @@
protected void onAllRecordsLoaded() {
Log.d(LOG_TAG, "SIMRecords: record load complete");
- String operator = getSIMOperatorNumeric();
+ String operator = getOperatorNumeric();
// Some fields require more than one SIM record to set
@@ -1240,7 +1253,7 @@
recordsLoadedRegistrants.notifyRegistrants(
new AsyncResult(null, null, null));
- phone.mSimCard.broadcastIccStateChangedIntent(
+ phone.mIccCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_LOADED, null);
}
@@ -1265,7 +1278,7 @@
/* broadcast intent SIM_READY here so that we can make sure
READY is sent before IMSI ready
*/
- phone.mSimCard.broadcastIccStateChangedIntent(
+ phone.mIccCard.broadcastIccStateChangedIntent(
SimCard.INTENT_VALUE_ICC_READY, null);
fetchSimRecords();
@@ -1362,7 +1375,8 @@
*
* If the SPN is not found on the SIM, the rule is always PLMN_ONLY.
*/
- protected int getDisplayRule(String plmn) {
+ @Override
+ public int getDisplayRule(String plmn) {
int rule;
if (spn == null || spnDisplayCondition == -1) {
// EF_SPN was not found on the SIM, or not yet loaded. Just show ONS.
@@ -1389,7 +1403,7 @@
private boolean isOnMatchingPlmn(String plmn) {
if (plmn == null) return false;
- if (plmn.equals(getSIMOperatorNumeric())) {
+ if (plmn.equals(getOperatorNumeric())) {
return true;
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/SimCard.java b/telephony/java/com/android/internal/telephony/gsm/SimCard.java
index 781746c..09df49f 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SimCard.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SimCard.java
@@ -62,7 +62,7 @@
@Override
public String getServiceProviderName () {
- return ((GSMPhone)mPhone).mSIMRecords.getServiceProviderName();
+ return mPhone.mIccRecords.getServiceProviderName();
}
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/SimPhoneBookInterfaceManager.java b/telephony/java/com/android/internal/telephony/gsm/SimPhoneBookInterfaceManager.java
index feb508a..377f8f0 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SimPhoneBookInterfaceManager.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SimPhoneBookInterfaceManager.java
@@ -32,7 +32,7 @@
public SimPhoneBookInterfaceManager(GSMPhone phone) {
super(phone);
- adnCache = phone.mSIMRecords.getAdnCache();
+ adnCache = phone.mIccRecords.getAdnCache();
//NOTE service "simphonebook" added by IccSmsInterfaceManagerProxy
}