10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.test; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.HandlerThread; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Looper; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message; 23ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.BaseCommands; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CommandException; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CommandsInterface; 28ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 29ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DataCallResponse; 309d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajanimport com.android.internal.telephony.dataconnection.DataProfile; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Phone; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.UUSInfo; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.CallFailCause; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class SimulatedCommands extends BaseCommands 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville implements CommandsInterface, SimulatedRadioControl { 41cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville private final static String LOG_TAG = "SimulatedCommands"; 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private enum SimLockState { 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NONE, 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PIN, 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PUK, 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SIM_PERM_LOCKED 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private enum SimFdnState { 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NONE, 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PIN2, 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PUK2, 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SIM_PERM_LOCKED 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static SimLockState INITIAL_LOCK_STATE = SimLockState.NONE; 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String DEFAULT_SIM_PIN_CODE = "1234"; 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String SIM_PUK_CODE = "12345678"; 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static SimFdnState INITIAL_FDN_STATE = SimFdnState.NONE; 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String DEFAULT_SIM_PIN2_CODE = "5678"; 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String SIM_PUK2_CODE = "87654321"; 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimulatedGsmCallState simulatedCallState; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mHandlerThread; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimLockState mSimLockedState; 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSimLockEnabled; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPinUnlockAttempts; 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPukUnlockAttempts; 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String mPinCode; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimFdnState mSimFdnEnabledState; 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSimFdnEnabled; 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPin2UnlockAttempts; 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPuk2UnlockAttempts; 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mNetworkType; 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String mPin2Code; 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSsnNotifyOn = false; 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville int mPausedResponseCount; 8222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville ArrayList<Message> mPausedResponses = new ArrayList<Message>(); 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville int mNextCallFailCause = CallFailCause.NORMAL_CLEARING; 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructor 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimulatedCommands() { 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(null); // Don't log statistics 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mHandlerThread = new HandlerThread("SimulatedCommands"); 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mHandlerThread.start(); 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mHandlerThread.getLooper(); 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState = new SimulatedGsmCallState(looper); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_OFF); 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = INITIAL_LOCK_STATE; 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockEnabled = (mSimLockedState != SimLockState.NONE); 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinCode = DEFAULT_SIM_PIN_CODE; 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = INITIAL_FDN_STATE; 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabled = (mSimFdnEnabledState != SimFdnState.NONE); 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2Code = DEFAULT_SIM_PIN2_CODE; 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 108cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIccCardStatus(Message result) { 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 113cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin(String pin, Message result) { 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.REQUIRE_PIN) { 116ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin: wrong state, state=" + 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPinCode)) { 126ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin: success!"); 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts = 0; 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.NONE; 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts ++; 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 142ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin: failed! attempt=" + 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts); 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPinUnlockAttempts >= 3) { 145ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin: set state to REQUIRE_PUK"); 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.REQUIRE_PUK; 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 156cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk(String puk, String newPin, Message result) { 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.REQUIRE_PUK) { 159ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk: wrong state, state=" + 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (puk != null && puk.equals(SIM_PUK_CODE)) { 169ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk: success!"); 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.NONE; 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts = 0; 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts ++; 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 185ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk: failed! attempt=" + 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts); 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPukUnlockAttempts >= 10) { 188ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk: set state to SIM_PERM_LOCKED"); 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.SIM_PERM_LOCKED; 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 199cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin2(String pin2, Message result) { 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimFdnEnabledState != SimFdnState.REQUIRE_PIN2) { 202ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin2: wrong state, state=" + 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState); 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin2 != null && pin2.equals(mPin2Code)) { 212ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin2: success!"); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts = 0; 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.NONE; 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts ++; 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 227ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin2: failed! attempt=" + 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts); 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPin2UnlockAttempts >= 3) { 230ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPin2: set state to REQUIRE_PUK2"); 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.REQUIRE_PUK2; 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 241cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk2(String puk2, String newPin2, Message result) { 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimFdnEnabledState != SimFdnState.REQUIRE_PUK2) { 244ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk2: wrong state, state=" + 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (puk2 != null && puk2.equals(SIM_PUK2_CODE)) { 254ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk2: success!"); 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.NONE; 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts = 0; 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts ++; 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 269ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk2: failed! attempt=" + 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts); 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPuk2UnlockAttempts >= 10) { 272ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] supplyIccPuk2: set state to SIM_PERM_LOCKED"); 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.SIM_PERM_LOCKED; 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 283cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin(String oldPin, String newPin, Message result) { 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (oldPin != null && oldPin.equals(mPinCode)) { 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinCode = newPin; 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 296ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] changeIccPin: pin failed!"); 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 305cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin2(String oldPin2, String newPin2, Message result) { 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (oldPin2 != null && oldPin2.equals(mPin2Code)) { 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2Code = newPin2; 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 318ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] changeIccPin2: pin2 failed!"); 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 333cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (enable && mSsnNotifyOn) { 339ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "Supp Service Notifications already enabled!"); 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnNotifyOn = enable; 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryFacilityLock(String facility, String pin, 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message result) { 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, pin, serviceClass, null, result); 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryFacilityLockForApp(String facility, String pin, int serviceClass, 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String appId, Message result) { 3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (facility != null && facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) { 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] r = new int[1]; 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville r[0] = (mSimLockEnabled ? 1 : 0); 358ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] queryFacilityLock: SIM is " 3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (r[0] == 0 ? "unlocked" : "locked")); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, r, null); 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (facility != null && facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) { 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] r = new int[1]; 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville r[0] = (mSimFdnEnabled ? 1 : 0); 368ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] queryFacilityLock: FDN is " 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (r[0] == 0 ? "disabled" : "enabled")); 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, r, null); 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setFacilityLock(String facility, boolean lockEnabled, String pin, int serviceClass, 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockEnabled, pin, serviceClass, null, result); 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setFacilityLockForApp(String facility, boolean lockEnabled, 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String pin, int serviceClass, String appId, 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (facility != null && 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) { 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPinCode)) { 392ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] setFacilityLock: pin is valid"); 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockEnabled = lockEnabled; 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 404ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] setFacilityLock: pin failed!"); 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.GENERIC_FAILURE); 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (facility != null && 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) { 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPin2Code)) { 416ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 is valid"); 4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabled = lockEnabled; 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 428ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 failed!"); 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.GENERIC_FAILURE); 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 442cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyNetworkDepersonalization(String netpin, Message result) { 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result contains a List of DriverCall 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The ar.result List is sorted by DriverCall.index 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 455cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCurrentCalls (Message result) { 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((mState == RadioState.RADIO_ON) && !isSimLocked()) { 458ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville //Rlog.i("GSM", "[SimCmds] getCurrentCalls"); 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, simulatedCallState.getDriverCalls()); 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 461ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville //Rlog.i("GSM", "[SimCmds] getCurrentCalls: RADIO_OFF or SIM not ready!"); 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new CommandException( 4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.RADIO_NOT_AVAILABLE)); 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 471cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 472cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPDPContextList(Message result) { 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 482ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville * ar.result contains a List of DataCallResponse 4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 484cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getDataCallList(Message result) { 486ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville resultSuccess(result, new ArrayList<DataCallResponse>(0)); 4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_DEFAULT == on "use subscription default value" 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 500cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dial (String address, int clirMode, Message result) { 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.onDial(address); 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_DEFAULT == on "use subscription default value" 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 518cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.onDial(address); 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 525cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMSI(Message result) { 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMSI on success 5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 536cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMSIForApp(String aid, Message result) { 5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "012345678901234"); 5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMEI on success 5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 548cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMEI(Message result) { 5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "012345678901234"); 5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMEISV on success 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 560cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMEISV(Message result) { 5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "99"); 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Hang up one individual connection. 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases a specific active call X" 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 576cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupConnection (int gsmIndex, Message result) { 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('1', (char)('0'+gsmIndex)); 5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 583ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i("GSM", "[SimCmd] hangupConnection: resultFail"); 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 586ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i("GSM", "[SimCmd] hangupConnection: resultSuccess"); 5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases all held calls or sets User Determined User Busy (UDUB) 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for a waiting call." 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 599cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupWaitingOrBackground (Message result) { 6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('0', '\0'); 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases all active calls (if any exist) and accepts 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the other (held or waiting) call." 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 621cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupForegroundResumeBackground (Message result) { 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('1', '\0'); 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Places all active calls (if any exist) on hold and accepts 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the other (held or waiting) call." 6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 643cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void switchWaitingOrHoldingAndActive (Message result) { 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('2', '\0'); 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Adds a held call to the conversation" 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 664cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void conference (Message result) { 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('3', '\0'); 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Connects the two calls and disconnects the subscriber from both calls" 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 685cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void explicitCallTransfer (Message result) { 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('4', '\0'); 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Places all active calls on hold except call X with which 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * communication shall be supported." 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 703cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void separateConnection (int gsmIndex, Message result) { 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char ch = (char)(gsmIndex + '0'); 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('2', ch); 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 723cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acceptCall (Message result) { 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onAnswer(); 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * also known as UDUB 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 742cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void rejectCall (Message result) { 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('0', '\0'); 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * cause code returned as Integer in Message.obj.response 7570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns integer cause code defined in TS 24.008 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Annex H or closest approximation. 7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Most significant codes: 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - Any defined in 22.001 F.4 (for generating busy/congestion) 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - Cause 68: ACM >= ACMMax 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 763cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastCallFailCause (Message result) { 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] ret = new int[1]; 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 76722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville ret[0] = mNextCallFailCause; 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 774cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 775cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastPdpFailCause (Message result) { 7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 780cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastDataCallFailCause(Message result) { 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 786cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setMute (boolean enableMute, Message result) {unimplemented(result);} 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 789cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getMute (Message result) {unimplemented(result);} 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj is an AsyncResult 7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an int[2] 7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is received signal strength (0-31, 99) 7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is bit error rate (0-7, 99) 7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as defined in TS 27.007 8.5 7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 799cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSignalStrength (Message result) { 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[2]; 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 23; 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = 0; 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result is callback message 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 815cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message result) { 8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 8180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result is callback message 8248a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * ((AsyncResult)response.obj).result is an int[] where int[0] is 8258a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * the size of the array and the rest of each element representing 8268a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * one available BM_*_BAND 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 828cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message result) { 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int [4]; 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 4; 8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = Phone.BM_US_BAND; 8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = Phone.BM_JPN_BAND; 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = Phone.BM_AUS_BAND; 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 843cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 851cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 859cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 867cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an String[14] 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See ril.h for details 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Please note that registration state 4 ("unknown") is treated 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as "out of service" above 8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 880cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRegistrationState (Message result) { 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ret[] = new String[14]; 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "5"; // registered roam 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = null; 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = null; 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = null; 8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[4] = null; 8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[5] = null; 8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[6] = null; 8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[7] = null; 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[8] = null; 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[9] = null; 8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[10] = null; 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[11] = null; 8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[12] = null; 8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[13] = null; 8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an String[4] 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is LAC if registered or NULL if not 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[2] is CID if registered or NULL if not 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[3] indicates the available radio technology, where: 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 == unknown 9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 == GPRS only 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 == EDGE 9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3 == UMTS 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * valid LAC are 0x0000 - 0xffff 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * valid CID are 0x00000000 - 0xffffffff 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Please note that registration state 4 ("unknown") is treated 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as "out of service" in the Android telephony system 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 919cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getDataRegistrationState (Message result) { 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ret[] = new String[4]; 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "5"; // registered roam 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = null; 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = null; 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = "2"; 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is a String[3] 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is long alpha or null if unregistered 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is short alpha or null if unregistered 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[2] is numeric or null if unregistered 9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 937cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getOperator(Message result) { 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] ret = new String[3]; 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "El Telco Loco"; 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = "Telco Loco"; 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = "001001"; 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 953cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendDtmf(char c, Message result) { 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 963cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void startDtmf(char c, Message result) { 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 973cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void stopDtmf(Message result) { 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 983cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendBurstDtmf(String dtmfString, int on, int off, Message result) { 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * smscPDU is smsc address in PDU form GSM BCD format prefixed 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * by a length byte (as expected by TS 27.005) or NULL for default SMSC 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * pdu is SMS in PDU format as an ASCII hex string 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * less the SMSC address 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 994cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendSMS (String smscPDU, String pdu, Message result) {unimplemented(result);} 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9976ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi /** 9986ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * Send an SMS message, Identical to sendSMS, 9996ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * except that more messages are expected to be sent soon 10006ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * smscPDU is smsc address in PDU form GSM BCD format prefixed 10016ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * by a length byte (as expected by TS 27.005) or NULL for default SMSC 10026ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * pdu is SMS in PDU format as an ASCII hex string 10036ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi * less the SMSC address 10046ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi */ 10056ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi @Override 10066ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi public void sendSMSExpectMore (String smscPDU, String pdu, Message result) { 10076ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi unimplemented(result); 10086ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi } 10096ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi 1010cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 1012ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "Delete message at index " + index); 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1016cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 1018ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "Delete RUIM message at index " + index); 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1022cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 1024ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "Write SMS to SIM with status " + status); 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1028cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 1030ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "Write SMS to RUIM with status " + status); 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1034cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setupDataCall(String radioTechnology, String profile, 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String apn, String user, String password, String authType, 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String protocol, Message result) { 10380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1041cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deactivateDataCall(int cid, int reason, Message result) {unimplemented(result);} 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1044cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message result) { 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNetworkType = networkType; 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1050cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message result) { 10520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[1]; 10530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = mNetworkType; 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 10560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1058cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message result) { 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[7]; 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 6; 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i<7; i++) { 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[i] = i; 10650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1069cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1074cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1079cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1084cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1089cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message result) { 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private boolean isSimLocked() { 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.NONE) { 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return true; 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1106cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setRadioPower(boolean on, Message result) { 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(on) { 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_ON); 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_OFF); 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1116cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1121cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1126cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1132cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, 11340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String pin2, Message response) { 11350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data,pin2, null, response); 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * parameters equivalent to 27.007 AT+CRSM command 11400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj will be an AsyncResult 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.userObj will be a SimIoResult on success 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1143cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void iccIOForApp (int command, int fileid, String path, int p1, int p2, 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int p3, String data, String pin2, String aid, Message result) { 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 11510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned". 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1155cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCLIP(Message response) { unimplemented(response); } 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj will be a an int[2] 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj[0] will be TS 27.007 +CLIR parameter 'n' 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 presentation indicator is used according to the subscription of the CLIR service 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 CLIR invocation 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 CLIR suppression 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj[1] will be TS 27.007 +CLIR parameter 'm' 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 CLIR not provisioned 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 CLIR provisioned in permanent mode 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 unknown (e.g. no network, etc.) 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3 CLIR temporary mode presentation restricted 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4 CLIR temporary mode presentation allowed 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1175cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCLIR(Message result) {unimplemented(result);} 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * clirMode is one of the CLIR_* constants above 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj is null 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1184cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCLIR(int clirMode, Message result) {unimplemented(result);} 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 for disabled, 1 for enabled. 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASS_* 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1195cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCallWaiting(int serviceClass, Message response) { 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 11980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param enable is true to enable, false to disable 12020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASS_* 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1206cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallWaiting(boolean enable, int serviceClass, 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param action is one of CF_ACTION_* 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param cfReason is one of CF_REASON_* 12150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASSS_* 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1217cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallForward(int action, int cfReason, int serviceClass, 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message result) {unimplemented(result);} 12200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * cfReason is one of CF_REASON_* 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 12240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result will be an array of 12250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CallForwardInfo's 12260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 12270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * An array of length 0 means "disabled for all codes" 12280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1229cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCallForwardStatus(int cfReason, int serviceClass, 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message result) {unimplemented(result);} 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1233cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setNetworkSelectionModeAutomatic(Message result) {unimplemented(result);} 1235cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message result) {unimplemented(result);} 1237cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setNetworkSelectionModeManual( 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorNumeric, Message result) {unimplemented(result);} 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Queries whether the current network selection mode is automatic 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * or manual 12440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with element [0] being 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a 0 for automatic selection and a 1 for manual selection 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1249cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNetworkSelectionMode(Message result) { 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[1]; 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 0; 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 12550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Queries the currently available networks 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is a List of NetworkInfo objects 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1262cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getAvailableNetworks(Message result) {unimplemented(result);} 12640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1265cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getBasebandVersion (Message result) { 12670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "SimulatedCommands"); 12680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 127109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * Simulates an Stk Call Control Alpha message 127209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja * @param alphaString Alpha string to send. 127309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja */ 127409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja public void triggerIncomingStkCcAlpha(String alphaString) { 127509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (mCatCcAlphaRegistrant != null) { 127609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja mCatCcAlphaRegistrant.notifyResult(alphaString); 127709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 127809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 127909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 128009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja public void sendStkCcAplha(String alphaString) { 128109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja triggerIncomingStkCcAlpha(alphaString); 128209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 128309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 128409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja /** 12850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Simulates an incoming USSD message 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param statusCode Status code string. See <code>setOnUSSD</code> 12870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * in CommandsInterface.java 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param message Message text to send or null if none 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1290cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void triggerIncomingUssd(String statusCode, String message) { 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] result = {statusCode, message}; 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyResult(result); 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1299cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendUSSD (String ussdString, Message result) { 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // We simulate this particular sequence 13030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ussdString.equals("#646#")) { 13040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 13050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 0 == USSD-Notify 13070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingUssd("0", "You have NNN minutes remaining."); 13080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingUssd("0", "All Done"); 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 1316cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 13180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 13190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Just echo back data 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response != null) { 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(response).result = data; 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.sendToTarget(); 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1336cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 13380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Just echo back data 13390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response != null) { 13400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(response).result = strings; 13410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.sendToTarget(); 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** SimulatedRadioControl 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** Start the simulated phone ringing */ 1349cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerRing(String number) { 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerRing(number); 13530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 13540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1356cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville progressConnectingCallState() { 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.progressConnectingCallState(); 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** If a call is DIALING or ALERTING, progress it all the way to ACTIVE */ 1364cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville progressConnectingToActive() { 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.progressConnectingToActive(); 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** automatically progress mobile originated calls to ACTIVE. 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * default to true 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1374cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setAutoProgressConnectingCall(boolean b) { 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.setAutoProgressConnectingCall(b); 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1380cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNextDialFailImmediately(boolean b) { 13830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.setNextDialFailImmediately(b); 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1386cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNextCallFailCause(int gsmCause) { 138922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mNextCallFailCause = gsmCause; 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1392cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupForeground() { 13950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupForeground(); 13960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 13970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** hangup holding calls */ 1400cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupBackground() { 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupBackground(); 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1407cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void triggerSsn(int type, int code) { 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification not = new SuppServiceNotification(); 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville not.notificationType = type; 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville not.code = code; 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant(new AsyncResult(null, not, null)); 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1415cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville shutdown() { 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_UNAVAILABLE); 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mHandlerThread.getLooper(); 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (looper != null) { 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville looper.quit(); 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** hangup all */ 14260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1427cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupAll() { 14300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupAll(); 14310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1434cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingSMS(String message) { 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //TODO 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1440cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pauseResponses() { 144322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponseCount++; 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1446cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resumeResponses() { 144922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponseCount--; 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 145122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mPausedResponseCount == 0) { 145222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville for (int i = 0, s = mPausedResponses.size(); i < s ; i++) { 145322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponses.get(i).sendToTarget(); 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 145522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponses.clear(); 14560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 1457ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e("GSM", "SimulatedCommands.resumeResponses < 0"); 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 14620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unimplemented(Message result) { 14640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).exception 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = new RuntimeException("Unimplemented"); 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 146822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mPausedResponseCount > 0) { 146922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponses.add(result); 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 14710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 14720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void resultSuccess(Message result, Object ret) { 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 14780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).result = ret; 147922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mPausedResponseCount > 0) { 148022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponses.add(result); 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void resultFail(Message result, Throwable tr) { 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).exception = tr; 149022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mPausedResponseCount > 0) { 149122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mPausedResponses.add(result); 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 14930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 14940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 1499cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 1502ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1506cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 1509ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1513cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response) { 1516ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1520cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 1522ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1526cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 1528ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1532cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPhoneType(int phoneType) { 1535ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1538cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 1540ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 15420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1544cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 1546ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 15480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 15510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Set the TTY mode 15520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 15530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param ttyMode is one of the following: 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 15570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 15580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 15590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1560cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 1562ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "Not implemented in SimulatedCommands"); 15630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 15670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the TTY mode 15680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 15690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * tty mode: 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 15730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 15740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 15750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1576cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 1578ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 15830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 15840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1585cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendCDMAFeatureCode(String FeatureCode, Message response) { 1587ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 15920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1594cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendCdmaSms(byte[] pdu, Message response){ 1596ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1599cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 16010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1605cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1611cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1612a63f55cf17629426d976830429a7612387532195Rika Brooks public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 16130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void forceDataDormancy(Message response) { 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1621cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1627cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1632cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPinForApp(String pin, String aid, Message response) { 16390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPukForApp(String puk, String newPin, String aid, Message response) { 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin2ForApp(String pin2, String aid, Message response) { 16490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message response) { 16540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message response) { 16590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, 16640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 16650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1668cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 16700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1673cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1674ce083ae9d277bea9fbc1c143766adf1013f4a50eAmit Mahajan public void requestIccSimAuthentication(int authContext, String data, String aid, Message response) { 1675a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville unimplemented(response); 1676a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 1677a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1678a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 16790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message response) { 16800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 16810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16825fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 16835fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 16845fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void getCellInfoList(Message response) { 16855fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville unimplemented(response); 16865fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 16875fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 16885fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 16895fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void setCellInfoListRate(int rateInMillis, Message response) { 16905fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville unimplemented(response); 16915fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 16925d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 16935d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi @Override 16945d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi public void setInitialAttachApn(String apn, String protocol, int authType, String username, 16955d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi String password, Message result) { 16965d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi } 16971260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 16981260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa @Override 16999d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan public void setDataProfile(DataProfile[] dps, Message result) { 17009d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan } 17019d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan 17029d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan @Override 17031260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void getImsRegistrationState(Message response) { 17041260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa unimplemented(response); 17051260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 17061260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 17071260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa @Override 17081260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void sendImsCdmaSms(byte[] pdu, int retry, int messageRef, 17091260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa Message response){ 17101260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa unimplemented(response); 17111260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 17121260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 17131260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa @Override 17141260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void sendImsGsmSms(String smscPDU, String pdu, 17151260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa int retry, int messageRef, Message response){ 17161260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa unimplemented(response); 17171260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 171840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 171940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 172040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccOpenLogicalChannel(String AID, Message response) { 172140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal unimplemented(response); 172240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 172340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 172440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 172540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccCloseLogicalChannel(int channel, Message response) { 172640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal unimplemented(response); 172740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 172840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 172940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 173040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 173140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal int p1, int p2, int p3, String data, Message response) { 173240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal unimplemented(response); 173340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 173440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 173540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 173640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, 173740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal int p3, String data, Message response) { 173840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal unimplemented(response); 173940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 1740f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 1741f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 1742f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvReadItem(int itemID, Message response) { 1743f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby unimplemented(response); 1744f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 1745f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 1746f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 1747f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvWriteItem(int itemID, String itemValue, Message response) { 1748f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby unimplemented(response); 1749f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 1750f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 1751f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 1752f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response) { 1753f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby unimplemented(response); 1754f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 1755f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 1756f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 1757f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvResetConfig(int resetType, Message response) { 1758f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby unimplemented(response); 1759f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 1760a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1761a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 1762a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void getHardwareConfig(Message result) { 1763a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville unimplemented(result); 1764a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 176503586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla 176603586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla @Override 176703586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla public void requestShutdown(Message result) { 176803586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla setRadioState(RadioState.RADIO_UNAVAILABLE); 176903586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla } 17700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 1771