CDMAPhone.java revision 1c42769339d8fe98ecb2698c64e7dc6672e3d59d
1767a662ecde33c3979bf02b793d392aca0403162Wink Saville/* 2767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Copyright (C) 2006 The Android Open Source Project 3767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 4767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5767a662ecde33c3979bf02b793d392aca0403162Wink Saville * you may not use this file except in compliance with the License. 6767a662ecde33c3979bf02b793d392aca0403162Wink Saville * You may obtain a copy of the License at 7767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 8767a662ecde33c3979bf02b793d392aca0403162Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 10767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Unless required by applicable law or agreed to in writing, software 11767a662ecde33c3979bf02b793d392aca0403162Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12767a662ecde33c3979bf02b793d392aca0403162Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13767a662ecde33c3979bf02b793d392aca0403162Wink Saville * See the License for the specific language governing permissions and 14767a662ecde33c3979bf02b793d392aca0403162Wink Saville * limitations under the License. 15767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 16767a662ecde33c3979bf02b793d392aca0403162Wink Saville 17767a662ecde33c3979bf02b793d392aca0403162Wink Savillepackage com.android.internal.telephony.cdma; 18767a662ecde33c3979bf02b793d392aca0403162Wink Saville 19e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.app.ActivityManagerNative; 20767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.content.Context; 21e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.content.Intent; 22ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krauseimport android.content.SharedPreferences; 23767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.AsyncResult; 24767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Handler; 25767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Looper; 26767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Message; 27767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Registrant; 28767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.RegistrantList; 29767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.SystemProperties; 30ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krauseimport android.preference.PreferenceManager; 31767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.provider.Settings; 32767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.CellLocation; 33767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.PhoneNumberUtils; 34767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.ServiceState; 35e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.telephony.SignalStrength; 36767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.text.TextUtils; 37767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.util.Log; 38767a662ecde33c3979bf02b793d392aca0403162Wink Saville 391c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganeshimport com.android.internal.telephony.Call; 40767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.CallStateException; 4190cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalinkimport com.android.internal.telephony.CommandException; 42767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.CommandsInterface; 43767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.Connection; 44767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.DataConnection; 45767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.IccCard; 46ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krauseimport com.android.internal.telephony.IccException; 47767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.IccFileHandler; 48767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.IccPhoneBookInterfaceManager; 49767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.IccSmsInterfaceManager; 50767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.MmiCode; 51767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.Phone; 52767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.PhoneBase; 53767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.PhoneNotifier; 54767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.PhoneProxy; 55767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.PhoneSubInfo; 56767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.RILConstants; 57e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport com.android.internal.telephony.TelephonyIntents; 589bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganeshimport com.android.internal.telephony.TelephonyProperties; 59767a662ecde33c3979bf02b793d392aca0403162Wink Saville 60767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.util.List; 61dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Savilleimport java.util.Timer; 62dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Savilleimport java.util.TimerTask; 63767a662ecde33c3979bf02b793d392aca0403162Wink Saville/** 64767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@hide} 65767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 66767a662ecde33c3979bf02b793d392aca0403162Wink Savillepublic class CDMAPhone extends PhoneBase { 67767a662ecde33c3979bf02b793d392aca0403162Wink Saville static final String LOG_TAG = "CDMA"; 68767a662ecde33c3979bf02b793d392aca0403162Wink Saville private static final boolean LOCAL_DEBUG = true; 69767a662ecde33c3979bf02b793d392aca0403162Wink Saville 7022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Default Emergency Callback Mode exit timer 71019581bf6055eb69ee7e4cb844dafe2b6c23597eCheng Yang private static final int DEFAULT_ECM_EXIT_TIMER_VALUE = 300000; 72ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause static final String VM_COUNT_CDMA = "vm_count_key_cdma"; 73ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause private static final String VM_NUMBER_CDMA = "vm_number_key_cdma"; 74ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause private String mVmNumber = null; 7522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 76767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Instance Variables 77767a662ecde33c3979bf02b793d392aca0403162Wink Saville CdmaCallTracker mCT; 78767a662ecde33c3979bf02b793d392aca0403162Wink Saville CdmaSMSDispatcher mSMS; 79767a662ecde33c3979bf02b793d392aca0403162Wink Saville CdmaServiceStateTracker mSST; 80767a662ecde33c3979bf02b793d392aca0403162Wink Saville CdmaDataConnectionTracker mDataConnection; 81767a662ecde33c3979bf02b793d392aca0403162Wink Saville RuimFileHandler mRuimFileHandler; 82767a662ecde33c3979bf02b793d392aca0403162Wink Saville RuimRecords mRuimRecords; 83767a662ecde33c3979bf02b793d392aca0403162Wink Saville RuimCard mRuimCard; 84767a662ecde33c3979bf02b793d392aca0403162Wink Saville MyHandler h; 85767a662ecde33c3979bf02b793d392aca0403162Wink Saville RuimPhoneBookInterfaceManager mRuimPhoneBookInterfaceManager; 86767a662ecde33c3979bf02b793d392aca0403162Wink Saville RuimSmsInterfaceManager mRuimSmsInterfaceManager; 87767a662ecde33c3979bf02b793d392aca0403162Wink Saville PhoneSubInfo mSubInfo; 88e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville EriManager mEriManager; 89767a662ecde33c3979bf02b793d392aca0403162Wink Saville 90e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // mNvLoadedRegistrants are informed after the EVENT_NV_READY 91e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private RegistrantList mNvLoadedRegistrants = new RegistrantList(); 92e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 93e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // mEriFileLoadedRegistrants are informed after the ERI text has been loaded 94e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private RegistrantList mEriFileLoadedRegistrants = new RegistrantList(); 95dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 96dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // mECMExitRespRegistrant is informed after the phone has been exited 97dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville //the emergency callback mode 98dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville //keep track of if phone is in emergency callback mode 99dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private boolean mIsPhoneInECMState; 100dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private Registrant mECMExitRespRegistrant; 101767a662ecde33c3979bf02b793d392aca0403162Wink Saville private String mEsn; 102767a662ecde33c3979bf02b793d392aca0403162Wink Saville private String mMeid; 1032563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 104dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // A runnable which is used to automatically exit from ECM after a period of time. 105dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private Runnable mExitEcmRunnable = new Runnable() { 106dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void run() { 107dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville exitEmergencyCallbackMode(); 108dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 109dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville }; 110767a662ecde33c3979bf02b793d392aca0403162Wink Saville 111767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant mPostDialHandler; 112767a662ecde33c3979bf02b793d392aca0403162Wink Saville 113767a662ecde33c3979bf02b793d392aca0403162Wink Saville 114767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Constructors 115767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) { 116767a662ecde33c3979bf02b793d392aca0403162Wink Saville this(context,ci,notifier, false); 117767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 118767a662ecde33c3979bf02b793d392aca0403162Wink Saville 119767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier, 120767a662ecde33c3979bf02b793d392aca0403162Wink Saville boolean unitTestMode) { 121767a662ecde33c3979bf02b793d392aca0403162Wink Saville super(notifier, context, unitTestMode); 122767a662ecde33c3979bf02b793d392aca0403162Wink Saville 123767a662ecde33c3979bf02b793d392aca0403162Wink Saville h = new MyHandler(); 124767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM = ci; 125767a662ecde33c3979bf02b793d392aca0403162Wink Saville 126767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.setPhoneType(RILConstants.CDMA_PHONE); 127767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT = new CdmaCallTracker(this); 128767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST = new CdmaServiceStateTracker (this); 129767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSMS = new CdmaSMSDispatcher(this); 130767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccFileHandler = new RuimFileHandler(this); 131767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimRecords = new RuimRecords(this); 132767a662ecde33c3979bf02b793d392aca0403162Wink Saville mDataConnection = new CdmaDataConnectionTracker (this); 133767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimCard = new RuimCard(this); 134767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimPhoneBookInterfaceManager = new RuimPhoneBookInterfaceManager(this); 135767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimSmsInterfaceManager = new RuimSmsInterfaceManager(this); 136767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSubInfo = new PhoneSubInfo(this); 137e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriManager = new EriManager(this, context, EriManager.ERI_FROM_XML); 138767a662ecde33c3979bf02b793d392aca0403162Wink Saville 139767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.registerForAvailable(h, EVENT_RADIO_AVAILABLE, null); 140767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimRecords.registerForRecordsLoaded(h, EVENT_RUIM_RECORDS_LOADED, null); 141767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.registerForOffOrNotAvailable(h, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null); 142767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.registerForOn(h, EVENT_RADIO_ON, null); 143767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.setOnSuppServiceNotification(h, EVENT_SSN, null); 144767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.setOnCallRing(h, EVENT_CALL_RING, null); 145767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.registerForNetworkAttach(h, EVENT_REGISTERED_TO_NETWORK, null); 146767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.registerForNVReady(h, EVENT_NV_READY, null); 147dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCM.setEmergencyCallbackMode(h, EVENT_EMERGENCY_CALLBACK_MODE_ENTER, null); 148e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 149767a662ecde33c3979bf02b793d392aca0403162Wink Saville 150767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Change the system setting 1519bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh SystemProperties.set(TelephonyProperties.CURRENT_ACTIVE_PHONE, 1529bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh new Integer(RILConstants.CDMA_PHONE).toString()); 153dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 15422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // This is needed to handle phone process crashes 15522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville String inEcm=SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE, "false"); 156dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mIsPhoneInECMState = inEcm.equals("true"); 157ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause 158ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // Notify voicemails. 159ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause notifier.notifyMessageWaitingChanged(this); 160767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 161767a662ecde33c3979bf02b793d392aca0403162Wink Saville 162767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void dispose() { 163767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized(PhoneProxy.lockForRadioTechnologyChange) { 164767a662ecde33c3979bf02b793d392aca0403162Wink Saville 165767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Unregister from all former registered events 166767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimRecords.unregisterForRecordsLoaded(h); //EVENT_RUIM_RECORDS_LOADED 167767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unregisterForAvailable(h); //EVENT_RADIO_AVAILABLE 168767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unregisterForOffOrNotAvailable(h); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE 169767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unregisterForOn(h); //EVENT_RADIO_ON 170767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unregisterForNVReady(h); //EVENT_NV_READY 171767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.unregisterForNetworkAttach(h); //EVENT_REGISTERED_TO_NETWORK 172767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unSetOnSuppServiceNotification(h); 173767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.unSetOnCallRing(h); 174dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 175767a662ecde33c3979bf02b793d392aca0403162Wink Saville 176767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Force all referenced classes to unregister their former registered events 177767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.dispose(); 178767a662ecde33c3979bf02b793d392aca0403162Wink Saville mDataConnection.dispose(); 179767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.dispose(); 180767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSMS.dispose(); 181767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccFileHandler.dispose(); // instance of RuimFileHandler 182767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimRecords.dispose(); 183767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimCard.dispose(); 184767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimPhoneBookInterfaceManager.dispose(); 185767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimSmsInterfaceManager.dispose(); 186767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSubInfo.dispose(); 187e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriManager.dispose(); 188767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 189767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 190767a662ecde33c3979bf02b793d392aca0403162Wink Saville 191767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void removeReferences() { 192767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRuimPhoneBookInterfaceManager = null; 193767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRuimSmsInterfaceManager = null; 194767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mSMS = null; 195767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mSubInfo = null; 196767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRuimRecords = null; 197767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mIccFileHandler = null; 198767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mRuimCard = null; 199767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mDataConnection = null; 200767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mCT = null; 201767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mSST = null; 202e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville this.mEriManager = null; 203767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 204767a662ecde33c3979bf02b793d392aca0403162Wink Saville 205767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected void finalize() { 206767a662ecde33c3979bf02b793d392aca0403162Wink Saville if(LOCAL_DEBUG) Log.d(LOG_TAG, "CDMAPhone finalized"); 207767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 208767a662ecde33c3979bf02b793d392aca0403162Wink Saville 209767a662ecde33c3979bf02b793d392aca0403162Wink Saville 210767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Overridden from Phone 211767a662ecde33c3979bf02b793d392aca0403162Wink Saville public ServiceState getServiceState() { 212767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mSST.ss; 213767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 214767a662ecde33c3979bf02b793d392aca0403162Wink Saville 215767a662ecde33c3979bf02b793d392aca0403162Wink Saville public Phone.State 216767a662ecde33c3979bf02b793d392aca0403162Wink Saville getState() { 217767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mCT.state; 218767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 219767a662ecde33c3979bf02b793d392aca0403162Wink Saville 220767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String 221767a662ecde33c3979bf02b793d392aca0403162Wink Saville getPhoneName() { 222767a662ecde33c3979bf02b793d392aca0403162Wink Saville return "CDMA"; 223767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 224767a662ecde33c3979bf02b793d392aca0403162Wink Saville 225767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean canTransfer() { 226767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "canTransfer: not possible in CDMA"); 227767a662ecde33c3979bf02b793d392aca0403162Wink Saville return false; 228767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 229767a662ecde33c3979bf02b793d392aca0403162Wink Saville 230767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CdmaCall 231767a662ecde33c3979bf02b793d392aca0403162Wink Saville getRingingCall() { 232767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mCT.ringingCall; 233767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 234767a662ecde33c3979bf02b793d392aca0403162Wink Saville 235767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setMute(boolean muted) { 236767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.setMute(muted); 237767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 238767a662ecde33c3979bf02b793d392aca0403162Wink Saville 239767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean getMute() { 240767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mCT.getMute(); 241767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 242767a662ecde33c3979bf02b793d392aca0403162Wink Saville 243767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void conference() throws CallStateException { 244767a662ecde33c3979bf02b793d392aca0403162Wink Saville // three way calls in CDMA will be handled by feature codes 245767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "conference: not possible in CDMA"); 246767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 247767a662ecde33c3979bf02b793d392aca0403162Wink Saville 248767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void enableEnhancedVoicePrivacy(boolean enable, Message onComplete) { 249767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mCM.setPreferredVoicePrivacy(enable, onComplete); 250767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 251767a662ecde33c3979bf02b793d392aca0403162Wink Saville 252767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getEnhancedVoicePrivacy(Message onComplete) { 253767a662ecde33c3979bf02b793d392aca0403162Wink Saville this.mCM.getPreferredVoicePrivacy(onComplete); 254767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 255767a662ecde33c3979bf02b793d392aca0403162Wink Saville 256767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void clearDisconnected() { 257767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.clearDisconnected(); 258767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 259767a662ecde33c3979bf02b793d392aca0403162Wink Saville 260767a662ecde33c3979bf02b793d392aca0403162Wink Saville public DataActivityState getDataActivityState() { 261767a662ecde33c3979bf02b793d392aca0403162Wink Saville DataActivityState ret = DataActivityState.NONE; 262767a662ecde33c3979bf02b793d392aca0403162Wink Saville 263f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville if (mSST.getCurrentCdmaDataConnectionState() == ServiceState.STATE_IN_SERVICE) { 264767a662ecde33c3979bf02b793d392aca0403162Wink Saville 265767a662ecde33c3979bf02b793d392aca0403162Wink Saville switch (mDataConnection.getActivity()) { 266767a662ecde33c3979bf02b793d392aca0403162Wink Saville case DATAIN: 267767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataActivityState.DATAIN; 268767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 269767a662ecde33c3979bf02b793d392aca0403162Wink Saville 270767a662ecde33c3979bf02b793d392aca0403162Wink Saville case DATAOUT: 271767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataActivityState.DATAOUT; 272767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 273767a662ecde33c3979bf02b793d392aca0403162Wink Saville 274767a662ecde33c3979bf02b793d392aca0403162Wink Saville case DATAINANDOUT: 275767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataActivityState.DATAINANDOUT; 276767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 277e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 278e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case DORMANT: 279e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ret = DataActivityState.DORMANT; 280e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 281767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 282767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 283767a662ecde33c3979bf02b793d392aca0403162Wink Saville return ret; 284767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 285767a662ecde33c3979bf02b793d392aca0403162Wink Saville 286767a662ecde33c3979bf02b793d392aca0403162Wink Saville /*package*/ void 287767a662ecde33c3979bf02b793d392aca0403162Wink Saville notifySignalStrength() { 288767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotifier.notifySignalStrength(this); 289767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 290767a662ecde33c3979bf02b793d392aca0403162Wink Saville 291767a662ecde33c3979bf02b793d392aca0403162Wink Saville public Connection 292767a662ecde33c3979bf02b793d392aca0403162Wink Saville dial (String dialString) throws CallStateException { 293767a662ecde33c3979bf02b793d392aca0403162Wink Saville // Need to make sure dialString gets parsed properly 294767a662ecde33c3979bf02b793d392aca0403162Wink Saville String newDialString = PhoneNumberUtils.stripSeparators(dialString); 295767a662ecde33c3979bf02b793d392aca0403162Wink Saville 296d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville if (!mCT.foregroundCall.isIdle()) { 297d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville FeatureCode fc = FeatureCode.newFromDialString(newDialString, this); 298d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville if (fc != null) { 299d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville //mMmiRegistrants.notifyRegistrants(new AsyncResult(null, fc, null)); 300d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville fc.processCode(); 30122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return null; 302767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 303767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 30422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return mCT.dial(newDialString); 305767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 306767a662ecde33c3979bf02b793d392aca0403162Wink Saville 307e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public SignalStrength getSignalStrength() { 308e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return mSST.mSignalStrength; 309767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 310767a662ecde33c3979bf02b793d392aca0403162Wink Saville 311767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean 312767a662ecde33c3979bf02b793d392aca0403162Wink Saville getMessageWaitingIndicator() { 313ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause return (getVoiceMessageCount() > 0); 314767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 315767a662ecde33c3979bf02b793d392aca0403162Wink Saville 316767a662ecde33c3979bf02b793d392aca0403162Wink Saville public List<? extends MmiCode> 317767a662ecde33c3979bf02b793d392aca0403162Wink Saville getPendingMmiCodes() { 318767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method getPendingMmiCodes is NOT supported in CDMA!"); 319767a662ecde33c3979bf02b793d392aca0403162Wink Saville return null; 320767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 321767a662ecde33c3979bf02b793d392aca0403162Wink Saville 322767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForSuppServiceNotification( 323767a662ecde33c3979bf02b793d392aca0403162Wink Saville Handler h, int what, Object obj) { 324767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method registerForSuppServiceNotification is NOT supported in CDMA!"); 325767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 326767a662ecde33c3979bf02b793d392aca0403162Wink Saville 327767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CdmaCall getBackgroundCall() { 328767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mCT.backgroundCall; 329767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 330767a662ecde33c3979bf02b793d392aca0403162Wink Saville 331767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getGateway(String apnType) { 332767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getGateway(); 333767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 334767a662ecde33c3979bf02b793d392aca0403162Wink Saville 335767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean handleInCallMmiCommands(String dialString) { 336767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method handleInCallMmiCommands is NOT supported in CDMA!"); 337767a662ecde33c3979bf02b793d392aca0403162Wink Saville return false; 338767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 339767a662ecde33c3979bf02b793d392aca0403162Wink Saville 340767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int enableApnType(String type) { 341767a662ecde33c3979bf02b793d392aca0403162Wink Saville // This request is mainly used to enable MMS APN 342767a662ecde33c3979bf02b793d392aca0403162Wink Saville // In CDMA there is no need to enable/disable a different APN for MMS 343767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Request to enableApnType("+type+")"); 344767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (TextUtils.equals(type, Phone.APN_TYPE_MMS)) { 345767a662ecde33c3979bf02b793d392aca0403162Wink Saville return Phone.APN_ALREADY_ACTIVE; 346767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 347767a662ecde33c3979bf02b793d392aca0403162Wink Saville return Phone.APN_REQUEST_FAILED; 348767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 349767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 350767a662ecde33c3979bf02b793d392aca0403162Wink Saville 351767a662ecde33c3979bf02b793d392aca0403162Wink Saville public int disableApnType(String type) { 352767a662ecde33c3979bf02b793d392aca0403162Wink Saville // This request is mainly used to disable MMS APN 353767a662ecde33c3979bf02b793d392aca0403162Wink Saville // In CDMA there is no need to enable/disable a different APN for MMS 354767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Request to disableApnType("+type+")"); 355767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (TextUtils.equals(type, Phone.APN_TYPE_MMS)) { 356767a662ecde33c3979bf02b793d392aca0403162Wink Saville return Phone.APN_REQUEST_STARTED; 357767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 358767a662ecde33c3979bf02b793d392aca0403162Wink Saville return Phone.APN_REQUEST_FAILED; 359767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 360767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 361767a662ecde33c3979bf02b793d392aca0403162Wink Saville 362767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getActiveApn() { 363767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Request to getActiveApn()"); 364767a662ecde33c3979bf02b793d392aca0403162Wink Saville return null; 365767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 366767a662ecde33c3979bf02b793d392aca0403162Wink Saville 367767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 368767a662ecde33c3979bf02b793d392aca0403162Wink Saville setNetworkSelectionModeAutomatic(Message response) { 369767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method setNetworkSelectionModeAutomatic is NOT supported in CDMA!"); 370767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 371767a662ecde33c3979bf02b793d392aca0403162Wink Saville 372767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForSuppServiceNotification(Handler h) { 373767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method unregisterForSuppServiceNotification is NOT supported in CDMA!"); 374767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 375767a662ecde33c3979bf02b793d392aca0403162Wink Saville 376767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 377767a662ecde33c3979bf02b793d392aca0403162Wink Saville acceptCall() throws CallStateException { 378767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.acceptCall(); 379767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 380767a662ecde33c3979bf02b793d392aca0403162Wink Saville 381767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 382767a662ecde33c3979bf02b793d392aca0403162Wink Saville rejectCall() throws CallStateException { 383767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.rejectCall(); 384767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 385767a662ecde33c3979bf02b793d392aca0403162Wink Saville 386767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 387767a662ecde33c3979bf02b793d392aca0403162Wink Saville switchHoldingAndActive() throws CallStateException { 388767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCT.switchWaitingOrHoldingAndActive(); 389767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 390767a662ecde33c3979bf02b793d392aca0403162Wink Saville 391767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getLine1Number() { 392f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville return mSST.getMdnNumber(); 393767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 394767a662ecde33c3979bf02b793d392aca0403162Wink Saville 39522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public String getCdmaPrlVersion(){ 396daccacb865947c00f277f1823333e2fbf91e652aWink Saville return mSST.getPrlVersion(); 39722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 39822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 399019581bf6055eb69ee7e4cb844dafe2b6c23597eCheng Yang public String getCdmaMin() { 400f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville return mSST.getCdmaMin(); 401e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 402e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 403767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getCallWaiting(Message onComplete) { 404767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.queryCallWaiting(CommandsInterface.SERVICE_CLASS_VOICE, onComplete); 405767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 406767a662ecde33c3979bf02b793d392aca0403162Wink Saville 407767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 408767a662ecde33c3979bf02b793d392aca0403162Wink Saville setRadioPower(boolean power) { 409767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.setRadioPower(power); 410767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 411767a662ecde33c3979bf02b793d392aca0403162Wink Saville 412767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getEsn() { 413767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mEsn; 414767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 415767a662ecde33c3979bf02b793d392aca0403162Wink Saville 416767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getMeid() { 417767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mMeid; 418767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 419767a662ecde33c3979bf02b793d392aca0403162Wink Saville 420767a662ecde33c3979bf02b793d392aca0403162Wink Saville //returns MEID in CDMA 421767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getDeviceId() { 422767a662ecde33c3979bf02b793d392aca0403162Wink Saville return getMeid(); 423767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 424767a662ecde33c3979bf02b793d392aca0403162Wink Saville 425767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getDeviceSvn() { 426767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "getDeviceSvn(): return 0"); 427767a662ecde33c3979bf02b793d392aca0403162Wink Saville return "0"; 428767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 429767a662ecde33c3979bf02b793d392aca0403162Wink Saville 430767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getSubscriberId() { 43122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Subscriber ID is the combination of MCC+MNC+MIN as CDMA IMSI 43222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // TODO(Moto): Replace with call to mRuimRecords.getIMSI_M() when implemented. 433019581bf6055eb69ee7e4cb844dafe2b6c23597eCheng Yang if ((getServiceState().getOperatorNumeric() != null) && (getCdmaMin() != null)) { 434019581bf6055eb69ee7e4cb844dafe2b6c23597eCheng Yang return (getServiceState().getOperatorNumeric() + getCdmaMin()); 43522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else { 43622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return null; 43722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 438767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 439767a662ecde33c3979bf02b793d392aca0403162Wink Saville 440767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean canConference() { 441767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "canConference: not possible in CDMA"); 442767a662ecde33c3979bf02b793d392aca0403162Wink Saville return false; 443767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 444767a662ecde33c3979bf02b793d392aca0403162Wink Saville 445767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getInterfaceName(String apnType) { 446767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getInterfaceName(); 447767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 448767a662ecde33c3979bf02b793d392aca0403162Wink Saville 449767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CellLocation getCellLocation() { 450767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mSST.cellLoc; 451767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 452767a662ecde33c3979bf02b793d392aca0403162Wink Saville 453767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean disableDataConnectivity() { 454767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.setDataEnabled(false); 455767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 456767a662ecde33c3979bf02b793d392aca0403162Wink Saville 457767a662ecde33c3979bf02b793d392aca0403162Wink Saville public CdmaCall getForegroundCall() { 458767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mCT.foregroundCall; 459767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 460767a662ecde33c3979bf02b793d392aca0403162Wink Saville 461767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 462767a662ecde33c3979bf02b793d392aca0403162Wink Saville selectNetworkManually(com.android.internal.telephony.gsm.NetworkInfo network, 463767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message response) { 464767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "selectNetworkManually: not possible in CDMA"); 465767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 466767a662ecde33c3979bf02b793d392aca0403162Wink Saville 467767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnPostDialCharacter(Handler h, int what, Object obj) { 468dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mPostDialHandler = new Registrant(h, what, obj); 469767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 470767a662ecde33c3979bf02b793d392aca0403162Wink Saville 471767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean handlePinMmi(String dialString) { 472767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method handlePinMmi is NOT supported in CDMA!"); 473767a662ecde33c3979bf02b793d392aca0403162Wink Saville return false; 474767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 475767a662ecde33c3979bf02b793d392aca0403162Wink Saville 476767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean isDataConnectivityPossible() { 477767a662ecde33c3979bf02b793d392aca0403162Wink Saville boolean noData = mDataConnection.getDataEnabled() && 478767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataConnectionState() == DataState.DISCONNECTED; 479767a662ecde33c3979bf02b793d392aca0403162Wink Saville return !noData && getIccCard().getState() == IccCard.State.READY && 480767a662ecde33c3979bf02b793d392aca0403162Wink Saville getServiceState().getState() == ServiceState.STATE_IN_SERVICE && 481767a662ecde33c3979bf02b793d392aca0403162Wink Saville (mDataConnection.getDataOnRoamingEnabled() || !getServiceState().getRoaming()); 482767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 483767a662ecde33c3979bf02b793d392aca0403162Wink Saville 484767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setLine1Number(String alphaTag, String number, Message onComplete) { 485767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "setLine1Number: not possible in CDMA"); 486767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 487767a662ecde33c3979bf02b793d392aca0403162Wink Saville 488767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String[] getDnsServers(String apnType) { 489767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getDnsServers(); 490767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 491767a662ecde33c3979bf02b793d392aca0403162Wink Saville 492767a662ecde33c3979bf02b793d392aca0403162Wink Saville public IccCard getIccCard() { 493767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mRuimCard; 494767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 495767a662ecde33c3979bf02b793d392aca0403162Wink Saville 496767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getIccSerialNumber() { 497767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mRuimRecords.iccid; 498767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 499767a662ecde33c3979bf02b793d392aca0403162Wink Saville 500767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCallWaiting(boolean enable, Message onComplete) { 501767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "method setCallWaiting is NOT supported in CDMA!"); 502767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 503767a662ecde33c3979bf02b793d392aca0403162Wink Saville 504767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void updateServiceLocation(Message response) { 505767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.getLacAndCid(response); 506767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 507767a662ecde33c3979bf02b793d392aca0403162Wink Saville 508767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setDataRoamingEnabled(boolean enable) { 509767a662ecde33c3979bf02b793d392aca0403162Wink Saville mDataConnection.setDataOnRoamingEnabled(enable); 510767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 511767a662ecde33c3979bf02b793d392aca0403162Wink Saville 512dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForCdmaOtaStatusChange(Handler h, int what, Object obj) { 513dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCM.registerForCdmaOtaProvision(h, what, obj); 514dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 515dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 516dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForCdmaOtaStatusChange(Handler h) { 517dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCM.unregisterForCdmaOtaProvision(h); 518dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 519dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 520dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void setOnEcbModeExitResponse(Handler h, int what, Object obj) { 521dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mECMExitRespRegistrant = new Registrant (h, what, obj); 522dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 523dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 524dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unsetOnEcbModeExitResponse(Handler h) { 525dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mECMExitRespRegistrant.clear(); 526dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 527dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 528dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForCallWaiting(Handler h, int what, Object obj) { 52922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mCT.registerForCallWaiting(h, what, obj); 530dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 531dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 532dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForCallWaiting(Handler h) { 53322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mCT.unregisterForCallWaiting(h); 534dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 535dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 536767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getIpAddress(String apnType) { 537767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getIpAddress(); 538767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 539767a662ecde33c3979bf02b793d392aca0403162Wink Saville 540767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 541767a662ecde33c3979bf02b793d392aca0403162Wink Saville getNeighboringCids(Message response) { 54290cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink /* 54390cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * This is currently not implemented. At least as of June 54490cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * 2009, there is no neighbor cell information available for 54590cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * CDMA because some party is resisting making this 54690cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * information readily available. Consequently, calling this 54790cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * function can have no useful effect. This situation may 54890cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink * (and hopefully will) change in the future. 54990cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink */ 55090cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink if (response != null) { 55190cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink CommandException ce = new CommandException( 55290cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink CommandException.Error.REQUEST_NOT_SUPPORTED); 55390cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink AsyncResult.forMessage(response).exception = ce; 55490cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink response.sendToTarget(); 55590cb947c22f05f8ac68ceff1d74af15bf38268c6Tammo Spalink } 556767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 557767a662ecde33c3979bf02b793d392aca0403162Wink Saville 558767a662ecde33c3979bf02b793d392aca0403162Wink Saville public DataState getDataConnectionState() { 559767a662ecde33c3979bf02b793d392aca0403162Wink Saville DataState ret = DataState.DISCONNECTED; 560767a662ecde33c3979bf02b793d392aca0403162Wink Saville 561767a662ecde33c3979bf02b793d392aca0403162Wink Saville if ((SystemProperties.get("adb.connected", "").length() > 0) 562767a662ecde33c3979bf02b793d392aca0403162Wink Saville && (SystemProperties.get("android.net.use-adb-networking", "") 563767a662ecde33c3979bf02b793d392aca0403162Wink Saville .length() > 0)) { 564767a662ecde33c3979bf02b793d392aca0403162Wink Saville // We're connected to an ADB host and we have USB networking 565767a662ecde33c3979bf02b793d392aca0403162Wink Saville // turned on. No matter what the radio state is, 566767a662ecde33c3979bf02b793d392aca0403162Wink Saville // we report data connected 567767a662ecde33c3979bf02b793d392aca0403162Wink Saville 568767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.CONNECTED; 56944038aa032ffd876f3c9b20a84db9d189f77e18eWink Saville } else if (mSST == null) { 570e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // Radio Technology Change is ongoning, dispose() and removeReferences() have 571e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // already been called 57244038aa032ffd876f3c9b20a84db9d189f77e18eWink Saville 573e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ret = DataState.DISCONNECTED; 574f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville } else if (mSST.getCurrentCdmaDataConnectionState() != ServiceState.STATE_IN_SERVICE) { 575767a662ecde33c3979bf02b793d392aca0403162Wink Saville // If we're out of service, open TCP sockets may still work 576767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but no data will flow 577767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.DISCONNECTED; 578767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 579767a662ecde33c3979bf02b793d392aca0403162Wink Saville switch (mDataConnection.getState()) { 580767a662ecde33c3979bf02b793d392aca0403162Wink Saville case FAILED: 581767a662ecde33c3979bf02b793d392aca0403162Wink Saville case IDLE: 582767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.DISCONNECTED; 583767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 584767a662ecde33c3979bf02b793d392aca0403162Wink Saville 585767a662ecde33c3979bf02b793d392aca0403162Wink Saville case CONNECTED: 586767a662ecde33c3979bf02b793d392aca0403162Wink Saville case DISCONNECTING: 587767a662ecde33c3979bf02b793d392aca0403162Wink Saville if ( mCT.state != Phone.State.IDLE 588767a662ecde33c3979bf02b793d392aca0403162Wink Saville && !mSST.isConcurrentVoiceAndData()) { 589767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.SUSPENDED; 590767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 591767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.CONNECTED; 592767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 593767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 594767a662ecde33c3979bf02b793d392aca0403162Wink Saville 595767a662ecde33c3979bf02b793d392aca0403162Wink Saville case INITING: 596767a662ecde33c3979bf02b793d392aca0403162Wink Saville case CONNECTING: 597767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SCANNING: 598767a662ecde33c3979bf02b793d392aca0403162Wink Saville ret = DataState.CONNECTING; 599767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 600767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 601767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 602767a662ecde33c3979bf02b793d392aca0403162Wink Saville 603767a662ecde33c3979bf02b793d392aca0403162Wink Saville return ret; 604767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 605767a662ecde33c3979bf02b793d392aca0403162Wink Saville 606767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void sendUssdResponse(String ussdMessge) { 607767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "sendUssdResponse: not possible in CDMA"); 608767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 609767a662ecde33c3979bf02b793d392aca0403162Wink Saville 610767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void sendDtmf(char c) { 611767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (!PhoneNumberUtils.is12Key(c)) { 612767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, 613767a662ecde33c3979bf02b793d392aca0403162Wink Saville "sendDtmf called with invalid character '" + c + "'"); 614767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 615767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mCT.state == Phone.State.OFFHOOK) { 616767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.sendDtmf(c, null); 617767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 618767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 619767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 620767a662ecde33c3979bf02b793d392aca0403162Wink Saville 621767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void startDtmf(char c) { 622767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (!PhoneNumberUtils.is12Key(c)) { 623767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, 624767a662ecde33c3979bf02b793d392aca0403162Wink Saville "startDtmf called with invalid character '" + c + "'"); 625767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 626767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.startDtmf(c, null); 627767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 628767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 629767a662ecde33c3979bf02b793d392aca0403162Wink Saville 630767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void stopDtmf() { 631767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.stopDtmf(null); 632767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 633767a662ecde33c3979bf02b793d392aca0403162Wink Saville 634dafa22a3ef9328c72319aeec605f6a6d20e46080jsh public void sendBurstDtmf(String dtmfString, int on, int off, Message onComplete) { 635e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville boolean check = true; 636e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville for (int itr = 0;itr < dtmfString.length(); itr++) { 637e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (!PhoneNumberUtils.is12Key(dtmfString.charAt(itr))) { 638e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Log.e(LOG_TAG, 639e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville "sendDtmf called with invalid character '" + dtmfString.charAt(itr)+ "'"); 640e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville check = false; 641e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 642e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 643e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 644e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if ((mCT.state == Phone.State.OFFHOOK)&&(check)) { 645dafa22a3ef9328c72319aeec605f6a6d20e46080jsh mCM.sendBurstDtmf(dtmfString, on, off, onComplete); 646e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 647e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 648e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 649767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getAvailableNetworks(Message response) { 650767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "getAvailableNetworks: not possible in CDMA"); 651767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 652767a662ecde33c3979bf02b793d392aca0403162Wink Saville 653767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String[] getActiveApnTypes() { 654767a662ecde33c3979bf02b793d392aca0403162Wink Saville String[] result; 655767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Request to getActiveApn()"); 656767a662ecde33c3979bf02b793d392aca0403162Wink Saville result = new String[1]; 657767a662ecde33c3979bf02b793d392aca0403162Wink Saville result[0] = Phone.APN_TYPE_DEFAULT; 658767a662ecde33c3979bf02b793d392aca0403162Wink Saville return result; 659767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 660767a662ecde33c3979bf02b793d392aca0403162Wink Saville 661767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode, Message onComplete) { 662dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Log.e(LOG_TAG, "setOutgoingCallerIdDisplay: not possible in CDMA"); 663767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 664767a662ecde33c3979bf02b793d392aca0403162Wink Saville 665767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void enableLocationUpdates() { 666767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.enableLocationUpdates(); 667767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 668767a662ecde33c3979bf02b793d392aca0403162Wink Saville 669767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 670767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @deprecated 671767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 672767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getPdpContextList(Message response) { 673767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataCallList(response); 674767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 675767a662ecde33c3979bf02b793d392aca0403162Wink Saville 676767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getDataCallList(Message response) { 677767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.getDataCallList(response); 678767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 679767a662ecde33c3979bf02b793d392aca0403162Wink Saville 680767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean getDataRoamingEnabled() { 681767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getDataOnRoamingEnabled(); 682767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 683767a662ecde33c3979bf02b793d392aca0403162Wink Saville 684767a662ecde33c3979bf02b793d392aca0403162Wink Saville public List<DataConnection> getCurrentDataConnectionList () { 685767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mDataConnection.getAllDataConnections(); 686767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 687767a662ecde33c3979bf02b793d392aca0403162Wink Saville 688767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setVoiceMailNumber(String alphaTag, 689767a662ecde33c3979bf02b793d392aca0403162Wink Saville String voiceMailNumber, 690767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message onComplete) { 691ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause Message resp; 692ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause mVmNumber = voiceMailNumber; 693ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause resp = h.obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete); 694ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause mRuimRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp); 695767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 696767a662ecde33c3979bf02b793d392aca0403162Wink Saville 697767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getVoiceMailNumber() { 698ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause String number = null; 699ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); 700ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // TODO(Moto): The default value of voicemail number should be read from a system property 701ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause number = sp.getString(VM_NUMBER_CDMA, "*86"); 702ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause return number; 703dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 704dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 705dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /* Returns Number of Voicemails 706dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @hide 707dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 708ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause public int getVoiceMessageCount() { 709ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause int voicemailCount = mRuimRecords.getVoiceMessageCount(); 710ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // If mRuimRecords.getVoiceMessageCount returns zero, then there is possibility 711ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // that phone was power cycled and would have lost the voicemail count. 712ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // So get the count from preferences. 713ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause if (voicemailCount == 0) { 714ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); 715ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause voicemailCount = sp.getInt(VM_COUNT_CDMA, 0); 716ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause } 717ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause return voicemailCount; 718767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 719767a662ecde33c3979bf02b793d392aca0403162Wink Saville 720767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getVoiceMailAlphaTag() { 721767a662ecde33c3979bf02b793d392aca0403162Wink Saville // TODO: Where can we get this value has to be clarified with QC. 722767a662ecde33c3979bf02b793d392aca0403162Wink Saville String ret = "";//TODO: Remove = "", if we know where to get this value. 723767a662ecde33c3979bf02b793d392aca0403162Wink Saville 724767a662ecde33c3979bf02b793d392aca0403162Wink Saville //ret = mSIMRecords.getVoiceMailAlphaTag(); 725767a662ecde33c3979bf02b793d392aca0403162Wink Saville 726767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (ret == null || ret.length() == 0) { 727767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mContext.getText( 728767a662ecde33c3979bf02b793d392aca0403162Wink Saville com.android.internal.R.string.defaultVoiceMailAlphaTag).toString(); 729767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 730767a662ecde33c3979bf02b793d392aca0403162Wink Saville 731767a662ecde33c3979bf02b793d392aca0403162Wink Saville return ret; 732767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 733767a662ecde33c3979bf02b793d392aca0403162Wink Saville 734767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean enableDataConnectivity() { 735dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 736dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // block data activities when phone is in emergency callback mode 737dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mIsPhoneInECMState) { 738dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Intent intent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS); 739dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville ActivityManagerNative.broadcastStickyIntent(intent, null); 740dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return false; 741dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } else { 742dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return mDataConnection.setDataEnabled(true); 743dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 744767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 745767a662ecde33c3979bf02b793d392aca0403162Wink Saville 746767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void disableLocationUpdates() { 747767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSST.disableLocationUpdates(); 748767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 749767a662ecde33c3979bf02b793d392aca0403162Wink Saville 750767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean getIccRecordsLoaded() { 751767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mRuimRecords.getRecordsLoaded(); 752767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 753767a662ecde33c3979bf02b793d392aca0403162Wink Saville 754767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getCallForwardingOption(int commandInterfaceCFReason, Message onComplete) { 755767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "getCallForwardingOption: not possible in CDMA"); 756767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 757767a662ecde33c3979bf02b793d392aca0403162Wink Saville 758767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCallForwardingOption(int commandInterfaceCFAction, 759767a662ecde33c3979bf02b793d392aca0403162Wink Saville int commandInterfaceCFReason, 760767a662ecde33c3979bf02b793d392aca0403162Wink Saville String dialingNumber, 761767a662ecde33c3979bf02b793d392aca0403162Wink Saville int timerSeconds, 762767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message onComplete) { 763767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "setCallForwardingOption: not possible in CDMA"); 764767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 765767a662ecde33c3979bf02b793d392aca0403162Wink Saville 766767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 767767a662ecde33c3979bf02b793d392aca0403162Wink Saville getOutgoingCallerIdDisplay(Message onComplete) { 768767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "getOutgoingCallerIdDisplay: not possible in CDMA"); 769767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 770767a662ecde33c3979bf02b793d392aca0403162Wink Saville 771767a662ecde33c3979bf02b793d392aca0403162Wink Saville public boolean 772767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCallForwardingIndicator() { 773767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "getCallForwardingIndicator: not possible in CDMA"); 774767a662ecde33c3979bf02b793d392aca0403162Wink Saville return false; 775767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 776767a662ecde33c3979bf02b793d392aca0403162Wink Saville 777767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void explicitCallTransfer() { 778767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "explicitCallTransfer: not possible in CDMA"); 779767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 780767a662ecde33c3979bf02b793d392aca0403162Wink Saville 781767a662ecde33c3979bf02b793d392aca0403162Wink Saville public String getLine1AlphaTag() { 782767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e(LOG_TAG, "getLine1AlphaTag: not possible in CDMA"); 783767a662ecde33c3979bf02b793d392aca0403162Wink Saville return null; 784767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 785767a662ecde33c3979bf02b793d392aca0403162Wink Saville 786dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 7871c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganesh * Notify any interested party of a Phone state change {@link Phone.State} 788767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 789767a662ecde33c3979bf02b793d392aca0403162Wink Saville /*package*/ void notifyPhoneStateChanged() { 790767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotifier.notifyPhoneState(this); 791767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 792767a662ecde33c3979bf02b793d392aca0403162Wink Saville 793767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 7941c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganesh * Notify registrants of a change in the call state. This notifies changes in {@link Call.State} 7951c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganesh * Use this when changes in the precise call state are needed, else use notifyPhoneStateChanged. 796767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 7971c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganesh /*package*/ void notifyPreciseCallStateChanged() { 798767a662ecde33c3979bf02b793d392aca0403162Wink Saville /* we'd love it if this was package-scoped*/ 7991c42769339d8fe98ecb2698c64e7dc6672e3d59dJaikumar Ganesh super.notifyPreciseCallStateChangedP(); 800767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 801767a662ecde33c3979bf02b793d392aca0403162Wink Saville 802767a662ecde33c3979bf02b793d392aca0403162Wink Saville void notifyServiceStateChanged(ServiceState ss) { 803767a662ecde33c3979bf02b793d392aca0403162Wink Saville super.notifyServiceStateChangedP(ss); 804767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 805767a662ecde33c3979bf02b793d392aca0403162Wink Saville 806767a662ecde33c3979bf02b793d392aca0403162Wink Saville void notifyLocationChanged() { 807767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotifier.notifyCellLocation(this); 808767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 809767a662ecde33c3979bf02b793d392aca0403162Wink Saville 810767a662ecde33c3979bf02b793d392aca0403162Wink Saville /*package*/ void notifyNewRingingConnection(Connection c) { 811767a662ecde33c3979bf02b793d392aca0403162Wink Saville /* we'd love it if this was package-scoped*/ 812767a662ecde33c3979bf02b793d392aca0403162Wink Saville super.notifyNewRingingConnectionP(c); 813767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 814767a662ecde33c3979bf02b793d392aca0403162Wink Saville 815767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 816767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Notifiy registrants of a RING event. 817767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 818767a662ecde33c3979bf02b793d392aca0403162Wink Saville void notifyIncomingRing() { 819767a662ecde33c3979bf02b793d392aca0403162Wink Saville AsyncResult ar = new AsyncResult(null, this, null); 820767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIncomingRingRegistrants.notifyRegistrants(ar); 821767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 822767a662ecde33c3979bf02b793d392aca0403162Wink Saville 823767a662ecde33c3979bf02b793d392aca0403162Wink Saville /*package*/ void notifyDisconnect(Connection cn) { 824767a662ecde33c3979bf02b793d392aca0403162Wink Saville mDisconnectRegistrants.notifyResult(cn); 825767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 826767a662ecde33c3979bf02b793d392aca0403162Wink Saville 827767a662ecde33c3979bf02b793d392aca0403162Wink Saville void notifyUnknownConnection() { 828767a662ecde33c3979bf02b793d392aca0403162Wink Saville mUnknownConnectionRegistrants.notifyResult(this); 829767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 830767a662ecde33c3979bf02b793d392aca0403162Wink Saville 831dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville void sendEmergencyCallbackModeChange(){ 832dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville //Send an Intent 833dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED); 834dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville intent.putExtra(PHONE_IN_ECM_STATE, mIsPhoneInECMState); 835dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville ActivityManagerNative.broadcastStickyIntent(intent,null); 836dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 837dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 838767a662ecde33c3979bf02b793d392aca0403162Wink Saville /*package*/ void 839767a662ecde33c3979bf02b793d392aca0403162Wink Saville updateMessageWaitingIndicator(boolean mwi) { 840767a662ecde33c3979bf02b793d392aca0403162Wink Saville // this also calls notifyMessageWaitingIndicator() 841767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRuimRecords.setVoiceMessageWaiting(1, mwi ? -1 : 0); 842767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 843767a662ecde33c3979bf02b793d392aca0403162Wink Saville 844ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause /* This function is overloaded to send number of voicemails instead of sending true/false */ 845ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause /*package*/ void 846ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause updateMessageWaitingIndicator(int mwi) { 847ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause mRuimRecords.setVoiceMessageWaiting(1, mwi); 848d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville } 849767a662ecde33c3979bf02b793d392aca0403162Wink Saville 850767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 851767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Removes the given FC from the pending list and notifies 852767a662ecde33c3979bf02b793d392aca0403162Wink Saville * registrants that it is complete. 853767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @param fc FC that is done 854767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 855d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville /*package*/ void onFeatureCodeDone(FeatureCode fc) { 856767a662ecde33c3979bf02b793d392aca0403162Wink Saville /* Only notify complete if it's on the pending list. 857767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Otherwise, it's already been handled (eg, previously canceled). 858767a662ecde33c3979bf02b793d392aca0403162Wink Saville * The exception is cancellation of an incoming USSD-REQUEST, which is 859767a662ecde33c3979bf02b793d392aca0403162Wink Saville * not on the list. 860767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 861d6c5d527d3fa73dafc6e7cd36e4d6922b6d31845Wink Saville mMmiCompleteRegistrants.notifyRegistrants(new AsyncResult(null, fc, null)); 862767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 863767a662ecde33c3979bf02b793d392aca0403162Wink Saville 864dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 865dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville @Override 866dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void exitEmergencyCallbackMode() { 867dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Send a message which will invoke handleExitEmergencyCallbackMode 868dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCM.exitEmergencyCallbackMode(h.obtainMessage(EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE)); 869dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 870dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 871dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private void handleEnterEmergencyCallbackMode(Message msg) { 872dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Log.d(LOG_TAG, "Event EVENT_EMERGENCY_CALLBACK_MODE Received"); 873dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // if phone is not in ECM mode, and it's changed to ECM mode 874dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mIsPhoneInECMState == false) { 875dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mIsPhoneInECMState = true; 876dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // notify change 877dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville sendEmergencyCallbackModeChange(); 87822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "true"); 8792563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 880dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Post this runnable so we will automatically exit 881dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // if no one invokes exitEmergencyCallbackMode() directly. 88222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville long delayInMillis = SystemProperties.getLong( 88322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville TelephonyProperties.PROPERTY_ECM_EXIT_TIMER, DEFAULT_ECM_EXIT_TIMER_VALUE); 884dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville h.postDelayed(mExitEcmRunnable, delayInMillis); 885dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 886dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 887dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 888dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private void handleExitEmergencyCallbackMode(Message msg) { 889dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Log.d(LOG_TAG, "Event EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE Received"); 890dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville AsyncResult ar = (AsyncResult)msg.obj; 891dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 892dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Remove pending exit ECM runnable, if any 893dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville h.removeCallbacks(mExitEcmRunnable); 894dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 895dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mECMExitRespRegistrant != null) { 896dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mECMExitRespRegistrant.notifyRegistrant(ar); 897dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 898dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // if exiting ecm success 899dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (ar.exception == null) { 900dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mIsPhoneInECMState) { 901dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mIsPhoneInECMState = false; 90222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "false"); 903dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 904dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // send an Intent 905dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville sendEmergencyCallbackModeChange(); 906dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 907dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 908dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 909767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Inner Classes 910767a662ecde33c3979bf02b793d392aca0403162Wink Saville class MyHandler extends Handler { 911767a662ecde33c3979bf02b793d392aca0403162Wink Saville MyHandler() { 912767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 913767a662ecde33c3979bf02b793d392aca0403162Wink Saville 914767a662ecde33c3979bf02b793d392aca0403162Wink Saville MyHandler(Looper l) { 915767a662ecde33c3979bf02b793d392aca0403162Wink Saville super(l); 916767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 917767a662ecde33c3979bf02b793d392aca0403162Wink Saville 918dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville @Override 919767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void handleMessage(Message msg) { 920767a662ecde33c3979bf02b793d392aca0403162Wink Saville AsyncResult ar; 921767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message onComplete; 922767a662ecde33c3979bf02b793d392aca0403162Wink Saville 923767a662ecde33c3979bf02b793d392aca0403162Wink Saville switch(msg.what) { 924767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_RADIO_AVAILABLE: { 925767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.getBasebandVersion(obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE)); 926767a662ecde33c3979bf02b793d392aca0403162Wink Saville 927767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCM.getDeviceIdentity(obtainMessage(EVENT_GET_DEVICE_IDENTITY_DONE)); 928767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 929767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 930767a662ecde33c3979bf02b793d392aca0403162Wink Saville 931767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_GET_BASEBAND_VERSION_DONE:{ 932767a662ecde33c3979bf02b793d392aca0403162Wink Saville ar = (AsyncResult)msg.obj; 933767a662ecde33c3979bf02b793d392aca0403162Wink Saville 934767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (ar.exception != null) { 935767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 936767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 937767a662ecde33c3979bf02b793d392aca0403162Wink Saville 938767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (LOCAL_DEBUG) Log.d(LOG_TAG, "Baseband version: " + ar.result); 93922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville setSystemProperty(TelephonyProperties.PROPERTY_BASEBAND_VERSION, (String)ar.result); 940767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 941767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 942767a662ecde33c3979bf02b793d392aca0403162Wink Saville 943767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_GET_DEVICE_IDENTITY_DONE:{ 944767a662ecde33c3979bf02b793d392aca0403162Wink Saville ar = (AsyncResult)msg.obj; 945767a662ecde33c3979bf02b793d392aca0403162Wink Saville 946767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (ar.exception != null) { 947767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 948767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 949767a662ecde33c3979bf02b793d392aca0403162Wink Saville String[] respId = (String[])ar.result; 950767a662ecde33c3979bf02b793d392aca0403162Wink Saville mEsn = respId[2]; 951767a662ecde33c3979bf02b793d392aca0403162Wink Saville mMeid = respId[3]; 952767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 953767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 954767a662ecde33c3979bf02b793d392aca0403162Wink Saville 955dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case EVENT_EMERGENCY_CALLBACK_MODE_ENTER:{ 956dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville handleEnterEmergencyCallbackMode(msg); 957dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 958dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 959dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 960dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE:{ 961dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville handleExitEmergencyCallbackMode(msg); 962e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 963dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 964dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 965767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_RUIM_RECORDS_LOADED:{ 966767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_RUIM_RECORDS_LOADED Received"); 967767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 968767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 969767a662ecde33c3979bf02b793d392aca0403162Wink Saville 970767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_RADIO_OFF_OR_NOT_AVAILABLE:{ 971767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_RADIO_OFF_OR_NOT_AVAILABLE Received"); 972767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 973767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 974767a662ecde33c3979bf02b793d392aca0403162Wink Saville 975767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_RADIO_ON:{ 976767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_RADIO_ON Received"); 977767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 978767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 979767a662ecde33c3979bf02b793d392aca0403162Wink Saville 980767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_SSN:{ 981767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_SSN Received"); 982767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 983767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 984767a662ecde33c3979bf02b793d392aca0403162Wink Saville 985767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_CALL_RING:{ 986767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_CALL_RING Received"); 987767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 988767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 989767a662ecde33c3979bf02b793d392aca0403162Wink Saville 990767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_REGISTERED_TO_NETWORK:{ 991767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_REGISTERED_TO_NETWORK Received"); 992767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 993767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 994767a662ecde33c3979bf02b793d392aca0403162Wink Saville 995767a662ecde33c3979bf02b793d392aca0403162Wink Saville case EVENT_NV_READY:{ 996767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG, "Event EVENT_NV_READY Received"); 997767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Inform the Service State Tracker 998e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriManager.loadEriFile(); 999767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNvLoadedRegistrants.notifyRegistrants(); 1000e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if(mEriManager.isEriFileLoaded()) { 1001e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // when the ERI file is loaded 1002e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Log.d(LOG_TAG, "ERI read, notify registrants"); 1003e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriFileLoadedRegistrants.notifyRegistrants(); 1004e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 100522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE,"false"); 1006767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1007767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 1008767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1009ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause case EVENT_SET_VM_NUMBER_DONE:{ 1010ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause ar = (AsyncResult)msg.obj; 1011ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause if (IccException.class.isInstance(ar.exception)) { 1012ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause storeVoiceMailNumber(mVmNumber); 1013ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause ar.exception = null; 1014ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause } 1015ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause onComplete = (Message) ar.userObj; 1016ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause if (onComplete != null) { 1017ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause AsyncResult.forMessage(onComplete, ar.result, ar.exception); 1018ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause onComplete.sendToTarget(); 1019ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause } 1020ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause } 1021ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause 1022767a662ecde33c3979bf02b793d392aca0403162Wink Saville default:{ 1023767a662ecde33c3979bf02b793d392aca0403162Wink Saville throw new RuntimeException("unexpected event not handled"); 1024767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1025767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1026767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1027767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1028767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1029dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1030dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Retrieves the PhoneSubInfo of the CDMAPhone 1031dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1032dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public PhoneSubInfo getPhoneSubInfo() { 1033767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mSubInfo; 1034dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1035767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1036dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1037dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Retrieves the IccSmsInterfaceManager of the CDMAPhone 1038dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1039dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public IccSmsInterfaceManager getIccSmsInterfaceManager() { 1040dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return mRuimSmsInterfaceManager; 1041dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1042767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1043dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1044dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Retrieves the IccPhoneBookInterfaceManager of the CDMAPhone 1045dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1046dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager() { 1047dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return mRuimPhoneBookInterfaceManager; 1048dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1049767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1050767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForNvLoaded(Handler h, int what, Object obj) { 1051767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 1052767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNvLoadedRegistrants.add(r); 1053767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1054767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1055767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForNvLoaded(Handler h) { 1056767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNvLoadedRegistrants.remove(h); 1057767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1058767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1059e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void registerForEriFileLoaded(Handler h, int what, Object obj) { 1060e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Registrant r = new Registrant (h, what, obj); 1061e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriFileLoadedRegistrants.add(r); 1062e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1063e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1064e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void unregisterForEriFileLoaded(Handler h) { 1065e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEriFileLoadedRegistrants.remove(h); 1066e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1067e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1068dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // override for allowing access from other classes of this package 1069dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1070dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * {@inheritDoc} 1071dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1072dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public final void setSystemProperty(String property, String value) { 1073dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville super.setSystemProperty(property, value); 1074dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1075767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1076dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1077dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * {@inheritDoc} 1078dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1079dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public Handler getHandler() { 1080dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return h; 1081dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1082767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1083dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1084dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * {@inheritDoc} 1085dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1086dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public IccFileHandler getIccFileHandler() { 1087dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return this.mIccFileHandler; 1088dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1089767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1090dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1091dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Set the TTY mode of the CDMAPhone 1092dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1093dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void setTTYMode(int ttyMode, Message onComplete) { 1094dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville this.mCM.setTTYMode(ttyMode, onComplete); 1095dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1096767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1097dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1098dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Queries the TTY mode of the CDMAPhone 1099dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1100dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void queryTTYMode(Message onComplete) { 1101dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville this.mCM.queryTTYMode(onComplete); 1102dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1103e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1104dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1105dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Activate or deactivate cell broadcast SMS. 1106dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * 1107dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @param activate 0 = activate, 1 = deactivate 1108dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @param response Callback message is empty on completion 1109dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1110dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void activateCellBroadcastSms(int activate, Message response) { 1111dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mSMS.activateCellBroadcastSms(activate, response); 1112dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1113767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1114dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1115dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Query the current configuration of cdma cell broadcast SMS. 1116dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * 1117dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @param response Callback message is empty on completion 1118dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1119dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void getCellBroadcastSmsConfig(Message response) { 1120dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mSMS.getCellBroadcastSmsConfig(response); 1121dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1122767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1123dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /** 1124dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * Configure cdma cell broadcast SMS. 1125dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * 1126dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @param response Callback message is empty on completion 1127dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville */ 1128dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response) { 1129dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mSMS.setCellBroadcastConfig(configValuesArray, response); 1130dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1131dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1132dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public static final String IS683A_FEATURE_CODE = "*228" ; 1133dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public static final int IS683A_FEATURE_CODE_NUM_DIGITS = 4 ; 1134dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public static final int IS683A_SYS_SEL_CODE_NUM_DIGITS = 2 ; 1135dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public static final int IS683A_SYS_SEL_CODE_OFFSET = 4; 1136dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1137dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_800MHZ_A_BAND = 0; 1138dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_800MHZ_B_BAND = 1; 1139dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_A_BLOCK = 2; 1140dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_B_BLOCK = 3; 1141dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_C_BLOCK = 4; 1142dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_D_BLOCK = 5; 1143dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_E_BLOCK = 6; 1144dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private static final int IS683_CONST_1900MHZ_F_BLOCK = 7; 1145dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1146dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville private boolean isIs683OtaSpDialStr(String dialStr) { 1147dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int sysSelCodeInt; 1148dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville boolean isOtaspDialString = false; 1149dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int dialStrLen = dialStr.length(); 1150dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1151dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (dialStrLen == IS683A_FEATURE_CODE_NUM_DIGITS) { 1152dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (dialStr.equals(IS683A_FEATURE_CODE)) { 1153dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville isOtaspDialString = true; 1154dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1155dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } else if ((dialStr.regionMatches(0, IS683A_FEATURE_CODE, 0, 1156dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville IS683A_FEATURE_CODE_NUM_DIGITS) == true) 1157dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville && (dialStrLen >= 1158dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville (IS683A_FEATURE_CODE_NUM_DIGITS + IS683A_SYS_SEL_CODE_NUM_DIGITS))) { 1159dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville StringBuilder sb = new StringBuilder(dialStr); 1160dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Separate the System Selection Code into its own string 1161dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville char[] sysSel = new char[2]; 1162dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville sb.delete(0, IS683A_SYS_SEL_CODE_OFFSET); 1163dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville sb.getChars(0, IS683A_SYS_SEL_CODE_NUM_DIGITS, sysSel, 0); 1164dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1165dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if ((PhoneNumberUtils.isISODigit(sysSel[0])) 1166dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville && (PhoneNumberUtils.isISODigit(sysSel[1]))) { 1167dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville String sysSelCode = new String(sysSel); 1168dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville sysSelCodeInt = Integer.parseInt((String)sysSelCode); 1169dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville switch (sysSelCodeInt) { 1170dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_800MHZ_A_BAND: 1171dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_800MHZ_B_BAND: 1172dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_A_BLOCK: 1173dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_B_BLOCK: 1174dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_C_BLOCK: 1175dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_D_BLOCK: 1176dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_E_BLOCK: 1177dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case IS683_CONST_1900MHZ_F_BLOCK: 1178dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville isOtaspDialString = true; 1179dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 1180dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1181dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville default: 1182dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 1183dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1184dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1185dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1186dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return isOtaspDialString; 1187dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1188767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1189767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 1190dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * isOTASPNumber: checks a given number against the IS-683A OTASP dial string and carrier 1191dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * OTASP dial string. 1192767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 1193dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @param dialStr the number to look up. 1194dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville * @return true if the number is in IS-683A OTASP dial string or carrier OTASP dial string 1195767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 1196dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville @Override 1197dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public boolean isOtaSpNumber(String dialStr){ 1198dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville boolean isOtaSpNum = false; 1199dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if(dialStr != null){ 1200dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville isOtaSpNum=isIs683OtaSpDialStr(dialStr); 1201dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if(isOtaSpNum == false){ 1202dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville //TO DO:Add carrier specific OTASP number detection here. 1203dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1204dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 1205dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return isOtaSpNum; 1206e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1207e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1208e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 1209e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaEriIconIndex() { 1210e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int roamInd = getServiceState().getCdmaRoamingIndicator(); 1211e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int defRoamInd = getServiceState().getCdmaDefaultRoamingIndicator(); 1212f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville return mEriManager.getCdmaEriIconIndex(roamInd, defRoamInd); 1213e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1214e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1215e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 1216e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Returns the CDMA ERI icon mode, 1217e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 0 - ON 1218e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * 1 - FLASHING 1219e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 1220e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 1221e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public int getCdmaEriIconMode() { 1222e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int roamInd = getServiceState().getCdmaRoamingIndicator(); 1223e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int defRoamInd = getServiceState().getCdmaDefaultRoamingIndicator(); 1224f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville return mEriManager.getCdmaEriIconMode(roamInd, defRoamInd); 1225e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1226e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1227e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 1228e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * Returns the CDMA ERI text, 1229e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 1230e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 1231e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public String getCdmaEriText() { 1232e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int roamInd = getServiceState().getCdmaRoamingIndicator(); 1233e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville int defRoamInd = getServiceState().getCdmaDefaultRoamingIndicator(); 1234f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville return mEriManager.getCdmaEriText(roamInd, defRoamInd); 1235e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 1236ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause 1237ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause /** 1238ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause * Store the voicemail number in preferences 1239ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause */ 1240ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause private void storeVoiceMailNumber(String number) { 1241ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause // Update the preference value of voicemail number 1242ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); 1243ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause SharedPreferences.Editor editor = sp.edit(); 1244ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause editor.putString(VM_NUMBER_CDMA, number); 1245ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause editor.commit(); 1246ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause } 1247ce099c3226b33b43e0dd5d1f24347b14a2223ee1David Krause 1248767a662ecde33c3979bf02b793d392aca0403162Wink Saville} 1249