CDMALTEPhone.java revision f61aaae6608243be4e0da97a56ff9fed488cb173
11260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa/* 2ace9a749c5a2a5e07527f728b7331423d16c36cdSukanya Rajkhowa * Copyright (C) 2011 The Android Open Source Project 3c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 4c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * you may not use this file except in compliance with the License. 6c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * You may obtain a copy of the License at 7c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 8c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 10c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Unless required by applicable law or agreed to in writing, software 11c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * See the License for the specific language governing permissions and 14c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * limitations under the License. 15c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 16c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 17c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepackage com.android.internal.telephony.cdma; 18c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 19c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.ContentValues; 20c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.Context; 21c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.SharedPreferences; 22c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.database.SQLException; 23c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.net.Uri; 24c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.AsyncResult; 25c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Message; 26c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.preference.PreferenceManager; 27c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.provider.Telephony; 28ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog; 29c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 30c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.CommandsInterface; 311260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 32c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.OperatorInfo; 33c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.PhoneConstants; 34c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.PhoneNotifier; 35c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.PhoneProxy; 36c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.SMSDispatcher; 370d4bcdf379842af4b6304809156971e926f374f0Jake Hambyimport com.android.internal.telephony.SmsBroadcastUndelivered; 38c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.gsm.GsmSMSDispatcher; 39c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.gsm.SmsMessage; 40d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IsimRecords; 41d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IsimUiccRecords; 42d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.SIMRecords; 43d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.UiccCardApplication; 44c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.uicc.UiccController; 45c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 46c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.FileDescriptor; 47c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.PrintWriter; 48c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 49c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepublic class CDMALTEPhone extends CDMAPhone { 50cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final String LOG_LTE_TAG = "CDMALTEPhone"; 51c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static final boolean DBG = true; 52c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 53e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** CdmaLtePhone in addition to RuimRecords available from 54e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * PhoneBase needs access to SIMRecords and IsimUiccRecords 55e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 56e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka private SIMRecords mSimRecords; 57e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka private IsimUiccRecords mIsimUiccRecords; 58e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 59c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Constructors 60c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public CDMALTEPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) { 61c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super(context, ci, notifier, false); 62c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 63c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 64c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 65c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville protected void initSstIcc() { 66c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSST = new CdmaLteServiceStateTracker(this); 67c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 68c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 69c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 70c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void dispose() { 71c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized(PhoneProxy.lockForRadioTechnologyChange) { 72c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super.dispose(); 73c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 74c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 75c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 76c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 77c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void removeReferences() { 78c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super.removeReferences(); 79c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 80c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 81c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 82c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public PhoneConstants.DataState getDataConnectionState(String apnType) { 83c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville PhoneConstants.DataState ret = PhoneConstants.DataState.DISCONNECTED; 84c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 85c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSST == null) { 86c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Radio Technology Change is ongoing, dispose() and 87c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // removeReferences() have already been called 88c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 89c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.DISCONNECTED; 90454b1dfd508844b42eb775e4ab2359be74d3672bWink Saville } else if (mDcTracker.isApnTypeEnabled(apnType) == false) { 91c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.DISCONNECTED; 92c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 93454b1dfd508844b42eb775e4ab2359be74d3672bWink Saville switch (mDcTracker.getState(apnType)) { 94c6bbea82bf74ebb492508199b6f3e172b7ce860aWink Saville case RETRYING: 95c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case FAILED: 96c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case IDLE: 97c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.DISCONNECTED; 98c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 99c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case CONNECTED: 101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case DISCONNECTING: 10222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mCT.mState != PhoneConstants.State.IDLE && 103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville !mSST.isConcurrentVoiceAndDataAllowed()) { 104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.SUSPENDED; 105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.CONNECTED; 107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case CONNECTING: 111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case SCANNING: 112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = PhoneConstants.DataState.CONNECTING; 113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville log("getDataConnectionState apnType=" + apnType + " ret=" + ret); 118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return ret; 119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 121ce06370fc58f59abda3cb072326e9425da3d755dWink Saville /** 122ce06370fc58f59abda3cb072326e9425da3d755dWink Saville * Sets the "current" field in the telephony provider according to the 123ce06370fc58f59abda3cb072326e9425da3d755dWink Saville * build-time operator numeric property 124ce06370fc58f59abda3cb072326e9425da3d755dWink Saville * 125ce06370fc58f59abda3cb072326e9425da3d755dWink Saville * @return true for success; false otherwise. 126ce06370fc58f59abda3cb072326e9425da3d755dWink Saville */ 127ce06370fc58f59abda3cb072326e9425da3d755dWink Saville @Override 128ce06370fc58f59abda3cb072326e9425da3d755dWink Saville boolean updateCurrentCarrierInProvider(String operatorNumeric) { 129ce06370fc58f59abda3cb072326e9425da3d755dWink Saville boolean retVal; 130ce06370fc58f59abda3cb072326e9425da3d755dWink Saville if (mUiccController.getUiccCardApplication(UiccController.APP_FAM_3GPP) == null) { 131ce06370fc58f59abda3cb072326e9425da3d755dWink Saville if (DBG) log("updateCurrentCarrierInProvider APP_FAM_3GPP == null"); 132ce06370fc58f59abda3cb072326e9425da3d755dWink Saville retVal = super.updateCurrentCarrierInProvider(operatorNumeric); 133ce06370fc58f59abda3cb072326e9425da3d755dWink Saville } else { 134ce06370fc58f59abda3cb072326e9425da3d755dWink Saville if (DBG) log("updateCurrentCarrierInProvider not updated"); 135ce06370fc58f59abda3cb072326e9425da3d755dWink Saville retVal = true; 136ce06370fc58f59abda3cb072326e9425da3d755dWink Saville } 137ce06370fc58f59abda3cb072326e9425da3d755dWink Saville if (DBG) log("updateCurrentCarrierInProvider X retVal=" + retVal); 138ce06370fc58f59abda3cb072326e9425da3d755dWink Saville return retVal; 139ce06370fc58f59abda3cb072326e9425da3d755dWink Saville } 140ce06370fc58f59abda3cb072326e9425da3d755dWink Saville 141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 142c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public boolean updateCurrentCarrierInProvider() { 143e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (mSimRecords != null) { 144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Uri uri = Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"); 146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ContentValues map = new ContentValues(); 147e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka String operatorNumeric = mSimRecords.getOperatorNumeric(); 148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville map.put(Telephony.Carriers.NUMERIC, operatorNumeric); 149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (DBG) log("updateCurrentCarrierInProvider from UICC: numeric=" + 150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville operatorNumeric); 151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mContext.getContentResolver().insert(uri, map); 152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return true; 153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (SQLException e) { 154cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville loge("Can't store current operator ret false", e); 155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 156c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (DBG) log("updateCurrentCarrierInProvider mIccRecords == null ret false"); 158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return false; 160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // return IMSI from USIM as subscriber ID. 163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public String getSubscriberId() { 165e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return (mSimRecords != null) ? mSimRecords.getIMSI() : ""; 166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1680e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi // return GID1 from USIM 1690e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi @Override 1700e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi public String getGroupIdLevel1() { 1710e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi return (mSimRecords != null) ? mSimRecords.getGid1() : ""; 1720e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi } 1730e4abef0d7e978d4c3dea5199f451a1c69158d03Sungmin Choi 174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public String getImei() { 176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return mImei; 177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public String getDeviceSvn() { 181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return mImeiSv; 182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 184c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public IsimRecords getIsimRecords() { 186e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return mIsimUiccRecords; 187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public String getMsisdn() { 191e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return (mSimRecords != null) ? mSimRecords.getMsisdnNumber() : null; 192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getAvailableNetworks(Message response) { 19622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mCi.getAvailableNetworks(response); 197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void requestIsimAuthentication(String nonce, Message result) { 20122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mCi.requestIsimAuthentication(nonce, result); 202c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 205e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected void onUpdateIccAvailability() { 206e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (mUiccController == null ) { 207bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka return; 208bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka } 209bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka 210e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // Update IsimRecords 211e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka UiccCardApplication newUiccApplication = 212e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka mUiccController.getUiccCardApplication(UiccController.APP_FAM_IMS); 213e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IsimUiccRecords newIsimUiccRecords = null; 214e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 215e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (newUiccApplication != null) { 216e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka newIsimUiccRecords = (IsimUiccRecords)newUiccApplication.getIccRecords(); 217bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka } 218e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka mIsimUiccRecords = newIsimUiccRecords; 219e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 220e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // Update UsimRecords 221e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka newUiccApplication = mUiccController.getUiccCardApplication(UiccController.APP_FAM_3GPP); 222e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka SIMRecords newSimRecords = null; 223e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (newUiccApplication != null) { 224e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka newSimRecords = (SIMRecords)newUiccApplication.getIccRecords(); 225e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 226e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (mSimRecords != newSimRecords) { 227e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (mSimRecords != null) { 228e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka log("Removing stale SIMRecords object."); 229e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka mSimRecords = null; 230e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 231e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (newSimRecords != null) { 232e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka log("New SIMRecords found"); 233e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka mSimRecords = newSimRecords; 234e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 235e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 236e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 237e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka super.onUpdateIccAvailability(); 238bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka } 239bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka 240bb36adde615d3d85fa0fc23935197c6bc6a799edAlex Yakavenka @Override 241c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville protected void log(String s) { 242cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Rlog.d(LOG_LTE_TAG, s); 243cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville } 244cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville 245cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville protected void loge(String s) { 246cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Rlog.e(LOG_LTE_TAG, s); 247c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 248c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 249cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville protected void loge(String s, Throwable e) { 250cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Rlog.e(LOG_LTE_TAG, s, e); 251f61aaae6608243be4e0da97a56ff9fed488cb173Shishir Agrawal } 252cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville 253c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 254c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 255c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println("CDMALTEPhone extends:"); 256c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super.dump(fd, pw, args); 257c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 258c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville} 259