From e7af59b375f08b13d964816fc52048e670764bdb Mon Sep 17 00:00:00 2001 From: Alex Yakavenka Date: Fri, 9 Dec 2011 11:53:36 -0800 Subject: [PATCH] Telephony: Remove SimCard and RuimCard Remove notions of SimCard and RuimCard since they don't make sense in the world of Uicc cards where each card can have multiple 3gpp and 3gpp2 subscriptions. This change prepares code for the introduction of Uicc cards. Change-Id: Ibab13004604f829328b73c177669b89ef97d3f25 --- .../android/internal/telephony/IccCard.java | 24 ++++++-- .../android/internal/telephony/PhoneBase.java | 1 - .../internal/telephony/cdma/CDMALTEPhone.java | 4 +- .../internal/telephony/cdma/CDMAPhone.java | 3 +- .../telephony/cdma/CdmaConnection.java | 2 +- .../internal/telephony/cdma/RuimCard.java | 56 ------------------- .../internal/telephony/cdma/RuimRecords.java | 6 +- .../internal/telephony/gsm/GSMPhone.java | 3 +- .../internal/telephony/gsm/GsmConnection.java | 2 +- .../internal/telephony/gsm/GsmMmiCode.java | 2 +- .../internal/telephony/gsm/SIMRecords.java | 7 ++- .../internal/telephony/gsm/SimCard.java | 49 ---------------- 12 files changed, 36 insertions(+), 123 deletions(-) delete mode 100644 telephony/java/com/android/internal/telephony/cdma/RuimCard.java delete mode 100644 telephony/java/com/android/internal/telephony/gsm/SimCard.java diff --git a/telephony/java/com/android/internal/telephony/IccCard.java b/telephony/java/com/android/internal/telephony/IccCard.java index a9ef762f903f5..530a8dcb3e486 100644 --- a/telephony/java/com/android/internal/telephony/IccCard.java +++ b/telephony/java/com/android/internal/telephony/IccCard.java @@ -44,7 +44,7 @@ import com.android.internal.R; /** * {@hide} */ -public abstract class IccCard { +public class IccCard { protected String mLogTag; protected boolean mDbg; @@ -68,6 +68,10 @@ public abstract class IccCard { private boolean mIccFdnEnabled = false; // Default to disabled. // Will be updated when SIM_READY. + /* Parameter is3gpp's values to be passed to constructor */ + public final static boolean CARD_IS_3GPP = true; + public final static boolean CARD_IS_NOT_3GPP = false; + /* The extra data for broacasting intent INTENT_ICC_STATE_CHANGE */ static public final String INTENT_KEY_ICC_STATE = "ss"; @@ -162,8 +166,11 @@ public abstract class IccCard { return State.UNKNOWN; } - public IccCard(PhoneBase phone, String logTag, Boolean dbg) { + public IccCard(PhoneBase phone, String logTag, Boolean is3gpp, Boolean dbg) { mPhone = phone; + this.is3gpp = is3gpp; + mCdmaSSM = CdmaSubscriptionSourceManager.getInstance(mPhone.getContext(), + mPhone.mCM, mHandler, EVENT_CDMA_SUBSCRIPTION_SOURCE_CHANGED, null); mPhone.mCM.registerForOffOrNotAvailable(mHandler, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null); mPhone.mCM.registerForOn(mHandler, EVENT_RADIO_ON, null); mPhone.mCM.registerForIccStatusChanged(mHandler, EVENT_ICC_STATUS_CHANGED, null); @@ -175,6 +182,7 @@ public abstract class IccCard { mPhone.mCM.unregisterForIccStatusChanged(mHandler); mPhone.mCM.unregisterForOffOrNotAvailable(mHandler); mPhone.mCM.unregisterForOn(mHandler); + mCdmaSSM.dispose(mHandler); } protected void finalize() { @@ -447,7 +455,9 @@ public abstract class IccCard { * yet available * */ - public abstract String getServiceProviderName(); + public String getServiceProviderName () { + return mPhone.mIccRecords.getServiceProviderName(); + } protected void updateStateProperty() { mPhone.setSystemProperty(TelephonyProperties.PROPERTY_SIM_STATE, getState().toString()); @@ -912,7 +922,13 @@ public abstract class IccCard { Log.d(mLogTag, "[IccCard] " + msg); } - protected abstract int getCurrentApplicationIndex(); + protected int getCurrentApplicationIndex() { + if (is3gpp) { + return mIccCardStatus.getGsmUmtsSubscriptionAppIndex(); + } else { + return mIccCardStatus.getCdmaSubscriptionAppIndex(); + } + } public String getAid() { String aid = ""; diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java index 49f64c95b38e3..0b5a82ccf7814 100644 --- a/telephony/java/com/android/internal/telephony/PhoneBase.java +++ b/telephony/java/com/android/internal/telephony/PhoneBase.java @@ -41,7 +41,6 @@ import com.android.internal.telephony.gsm.UsimServiceTable; import com.android.internal.telephony.ims.IsimRecords; import com.android.internal.telephony.test.SimulatedRadioControl; import com.android.internal.telephony.gsm.SIMRecords; -import com.android.internal.telephony.gsm.SimCard; import java.util.Locale; diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java index 54e651aedf52a..3084c146370f9 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java @@ -28,13 +28,13 @@ import android.provider.Telephony; import android.util.Log; import com.android.internal.telephony.CommandsInterface; +import com.android.internal.telephony.IccCard; import com.android.internal.telephony.OperatorInfo; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneNotifier; import com.android.internal.telephony.PhoneProxy; import com.android.internal.telephony.SMSDispatcher; import com.android.internal.telephony.gsm.GsmSMSDispatcher; -import com.android.internal.telephony.gsm.SimCard; import com.android.internal.telephony.ims.IsimRecords; public class CDMALTEPhone extends CDMAPhone { @@ -79,7 +79,7 @@ public class CDMALTEPhone extends CDMAPhone { @Override protected void initSstIcc() { - mIccCard = new SimCard(this, LOG_TAG, DBG); + mIccCard = new IccCard(this, LOG_TAG, IccCard.CARD_IS_3GPP, DBG); mIccRecords = new CdmaLteUiccRecords(this); mIccFileHandler = new CdmaLteUiccFileHandler(this); // CdmaLteServiceStateTracker registers with IccCard to know diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index d25291dbd786d..b5dca65462242 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -46,6 +46,7 @@ import com.android.internal.telephony.CallTracker; import com.android.internal.telephony.CommandException; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.Connection; +import com.android.internal.telephony.IccCard; import com.android.internal.telephony.IccException; import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccPhoneBookInterfaceManager; @@ -148,7 +149,7 @@ public class CDMAPhone extends PhoneBase { } protected void initSstIcc() { - mIccCard = new RuimCard(this, LOG_TAG, DBG); + mIccCard = new IccCard(this, LOG_TAG, IccCard.CARD_IS_NOT_3GPP, DBG); mIccRecords = new RuimRecords(this); mIccFileHandler = new RuimFileHandler(this); // CdmaServiceStateTracker registers with IccCard to know diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java index 40825f8a89c56..98ad3b1dd78a0 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaConnection.java @@ -432,7 +432,7 @@ public class CdmaConnection extends Connection { return DisconnectCause.OUT_OF_SERVICE; } else if (phone.mCdmaSubscriptionSource == CdmaSubscriptionSourceManager.SUBSCRIPTION_FROM_RUIM - && phone.getIccCard().getState() != RuimCard.State.READY) { + && phone.getIccCard().getState() != IccCard.State.READY) { return DisconnectCause.ICC_ERROR; } else if (causeCode==CallFailCause.NORMAL_CLEARING) { return DisconnectCause.NORMAL; diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimCard.java b/telephony/java/com/android/internal/telephony/cdma/RuimCard.java deleted file mode 100644 index 674fada9e185b..0000000000000 --- a/telephony/java/com/android/internal/telephony/cdma/RuimCard.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.internal.telephony.cdma; - -import com.android.internal.telephony.IccCard; - -/** - * Note: this class shares common code with SimCard, consider a base class to minimize code - * duplication. - * {@hide} - */ -public final class RuimCard extends IccCard { - - RuimCard(CDMAPhone phone, String LOG_TAG, boolean dbg) { - super(phone, LOG_TAG, dbg); - is3gpp = false; - mCdmaSSM = CdmaSubscriptionSourceManager.getInstance(mPhone.getContext(), - mPhone.mCM, mHandler, EVENT_CDMA_SUBSCRIPTION_SOURCE_CHANGED, null); - - updateStateProperty(); - } - - @Override - public void dispose() { - super.dispose(); - mCdmaSSM.dispose(mHandler); - } - - @Override - public String getServiceProviderName () { - return mPhone.mIccRecords.getServiceProviderName(); - } - - @Override - protected int getCurrentApplicationIndex() { - if (mIccCardStatus == null) { - return -1; - } - return mIccCardStatus.getCdmaSubscriptionAppIndex(); - } - } - diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java index 17a200e37fed2..e518c4c744b0c 100755 --- a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java +++ b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java @@ -30,8 +30,8 @@ import com.android.internal.telephony.AdnRecordCache; import com.android.internal.telephony.AdnRecordLoader; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.IccRefreshResponse; +import com.android.internal.telephony.IccCard; import com.android.internal.telephony.TelephonyProperties; -import com.android.internal.telephony.cdma.RuimCard; import com.android.internal.telephony.MccTable; // can't be used since VoiceMailConstants is not public @@ -346,7 +346,7 @@ public final class RuimRecords extends IccRecords { recordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); phone.mIccCard.broadcastIccStateChangedIntent( - RuimCard.INTENT_VALUE_ICC_LOADED, null); + IccCard.INTENT_VALUE_ICC_LOADED, null); } private void onRuimReady() { @@ -355,7 +355,7 @@ public final class RuimRecords extends IccRecords { */ phone.mIccCard.broadcastIccStateChangedIntent( - RuimCard.INTENT_VALUE_ICC_READY, null); + IccCard.INTENT_VALUE_ICC_READY, null); fetchRuimRecords(); diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java index af7c78c7b3649..4c846f1136b1e 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java +++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java @@ -56,6 +56,7 @@ import com.android.internal.telephony.CallForwardInfo; import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.CommandsInterface; import com.android.internal.telephony.Connection; +import com.android.internal.telephony.IccCard; import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccPhoneBookInterfaceManager; import com.android.internal.telephony.IccSmsInterfaceManager; @@ -135,7 +136,7 @@ public class GSMPhone extends PhoneBase { } mCM.setPhoneType(Phone.PHONE_TYPE_GSM); - mIccCard = new SimCard(this, LOG_TAG, true); + mIccCard = new IccCard(this, LOG_TAG, IccCard.CARD_IS_3GPP, true); mCT = new GsmCallTracker(this); mSST = new GsmServiceStateTracker (this); mSMS = new GsmSMSDispatcher(this, mSmsStorageMonitor, mSmsUsageMonitor); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java index c1ad7b3249294..f7c602581b7ef 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmConnection.java @@ -370,7 +370,7 @@ public class GsmConnection extends Connection { } else if (serviceState == ServiceState.STATE_OUT_OF_SERVICE || serviceState == ServiceState.STATE_EMERGENCY_ONLY ) { return DisconnectCause.OUT_OF_SERVICE; - } else if (phone.getIccCard().getState() != SimCard.State.READY) { + } else if (phone.getIccCard().getState() != IccCard.State.READY) { return DisconnectCause.ICC_ERROR; } else if (causeCode == CallFailCause.ERROR_UNSPECIFIED) { if (phone.mSST.mRestrictedState.isCsRestricted()) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java b/telephony/java/com/android/internal/telephony/gsm/GsmMmiCode.java index 16d3129acf0a2..205c73d2653f4 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 @@ public final class GsmMmiCode extends Handler implements MmiCode { // invalid length handlePasswordError(com.android.internal.R.string.invalidPin); } else if (sc.equals(SC_PIN) && - phone.mIccCard.getState() == SimCard.State.PUK_REQUIRED ) { + phone.mIccCard.getState() == IccCard.State.PUK_REQUIRED ) { // Sim is puk-locked handlePasswordError(com.android.internal.R.string.needPuk); } else { diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java index de8401eab6be7..5b0f2514a0b28 100755 --- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java +++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java @@ -30,6 +30,7 @@ import com.android.internal.telephony.AdnRecordCache; import com.android.internal.telephony.AdnRecordLoader; import com.android.internal.telephony.BaseCommands; import com.android.internal.telephony.CommandsInterface; +import com.android.internal.telephony.IccCard; import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccRecords; import com.android.internal.telephony.IccUtils; @@ -581,7 +582,7 @@ public class SIMRecords extends IccRecords { MccTable.updateMccMncConfiguration(phone, imsi.substring(0, 3 + mncLength)); } phone.mIccCard.broadcastIccStateChangedIntent( - SimCard.INTENT_VALUE_ICC_IMSI, null); + IccCard.INTENT_VALUE_ICC_IMSI, null); break; case EVENT_GET_MBI_DONE: @@ -1273,7 +1274,7 @@ public class SIMRecords extends IccRecords { recordsLoadedRegistrants.notifyRegistrants( new AsyncResult(null, null, null)); phone.mIccCard.broadcastIccStateChangedIntent( - SimCard.INTENT_VALUE_ICC_LOADED, null); + IccCard.INTENT_VALUE_ICC_LOADED, null); } //***** Private methods @@ -1298,7 +1299,7 @@ public class SIMRecords extends IccRecords { READY is sent before IMSI ready */ phone.mIccCard.broadcastIccStateChangedIntent( - SimCard.INTENT_VALUE_ICC_READY, null); + IccCard.INTENT_VALUE_ICC_READY, null); fetchSimRecords(); } diff --git a/telephony/java/com/android/internal/telephony/gsm/SimCard.java b/telephony/java/com/android/internal/telephony/gsm/SimCard.java deleted file mode 100644 index 0e68e07e222db..0000000000000 --- a/telephony/java/com/android/internal/telephony/gsm/SimCard.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.internal.telephony.gsm; - -import android.util.Log; - -import com.android.internal.telephony.IccCard; -import com.android.internal.telephony.Phone; -import com.android.internal.telephony.PhoneBase; -import com.android.internal.telephony.TelephonyProperties; -import android.os.SystemProperties; - -/** - * {@hide} - */ -public final class SimCard extends IccCard { - - public SimCard(PhoneBase phone, String logTag, Boolean dbg) { - super(phone, logTag, dbg); - updateStateProperty(); - } - - @Override - public String getServiceProviderName () { - return mPhone.mIccRecords.getServiceProviderName(); - } - - @Override - protected int getCurrentApplicationIndex() { - if (mIccCardStatus == null) { - return -1; - } - return mIccCardStatus.getGsmUmtsSubscriptionAppIndex(); - } -}