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; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.BaseCommands; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CommandException; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.CommandsInterface; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.DataCallState; 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.Phone; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.UUSInfo; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.CallFailCause; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class SimulatedCommands extends BaseCommands 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville implements CommandsInterface, SimulatedRadioControl { 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String LOG_TAG = "SIM"; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private enum SimLockState { 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NONE, 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PIN, 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PUK, 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SIM_PERM_LOCKED 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private enum SimFdnState { 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NONE, 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PIN2, 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville REQUIRE_PUK2, 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SIM_PERM_LOCKED 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static SimLockState INITIAL_LOCK_STATE = SimLockState.NONE; 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String DEFAULT_SIM_PIN_CODE = "1234"; 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String SIM_PUK_CODE = "12345678"; 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static SimFdnState INITIAL_FDN_STATE = SimFdnState.NONE; 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String DEFAULT_SIM_PIN2_CODE = "5678"; 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private final static String SIM_PUK2_CODE = "87654321"; 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimulatedGsmCallState simulatedCallState; 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mHandlerThread; 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimLockState mSimLockedState; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSimLockEnabled; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPinUnlockAttempts; 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPukUnlockAttempts; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String mPinCode; 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimFdnState mSimFdnEnabledState; 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSimFdnEnabled; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPin2UnlockAttempts; 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mPuk2UnlockAttempts; 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mNetworkType; 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String mPin2Code; 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean mSsnNotifyOn = false; 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int pausedResponseCount; 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<Message> pausedResponses = new ArrayList<Message>(); 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int nextCallFailCause = CallFailCause.NORMAL_CLEARING; 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructor 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SimulatedCommands() { 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(null); // Don't log statistics 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mHandlerThread = new HandlerThread("SimulatedCommands"); 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mHandlerThread.start(); 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mHandlerThread.getLooper(); 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState = new SimulatedGsmCallState(looper); 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_OFF); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = INITIAL_LOCK_STATE; 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockEnabled = (mSimLockedState != SimLockState.NONE); 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinCode = DEFAULT_SIM_PIN_CODE; 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = INITIAL_FDN_STATE; 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabled = (mSimFdnEnabledState != SimFdnState.NONE); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2Code = DEFAULT_SIM_PIN2_CODE; 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIccCardStatus(Message result) { 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin(String pin, Message result) { 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.REQUIRE_PIN) { 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin: wrong state, state=" + 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPinCode)) { 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin: success!"); 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts = 0; 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.NONE; 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts ++; 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin: failed! attempt=" + 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinUnlockAttempts); 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPinUnlockAttempts >= 3) { 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin: set state to REQUIRE_PUK"); 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.REQUIRE_PUK; 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk(String puk, String newPin, Message result) { 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.REQUIRE_PUK) { 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk: wrong state, state=" + 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (puk != null && puk.equals(SIM_PUK_CODE)) { 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk: success!"); 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.NONE; 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts = 0; 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts ++; 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk: failed! attempt=" + 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPukUnlockAttempts); 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPukUnlockAttempts >= 10) { 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk: set state to SIM_PERM_LOCKED"); 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState = SimLockState.SIM_PERM_LOCKED; 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin2(String pin2, Message result) { 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimFdnEnabledState != SimFdnState.REQUIRE_PIN2) { 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin2: wrong state, state=" + 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState); 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin2 != null && pin2.equals(mPin2Code)) { 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin2: success!"); 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts = 0; 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.NONE; 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts ++; 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin2: failed! attempt=" + 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2UnlockAttempts); 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPin2UnlockAttempts >= 3) { 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPin2: set state to REQUIRE_PUK2"); 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.REQUIRE_PUK2; 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk2(String puk2, String newPin2, Message result) { 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimFdnEnabledState != SimFdnState.REQUIRE_PUK2) { 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk2: wrong state, state=" + 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockedState); 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (puk2 != null && puk2.equals(SIM_PUK2_CODE)) { 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk2: success!"); 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.NONE; 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts = 0; 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts ++; 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk2: failed! attempt=" + 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPuk2UnlockAttempts); 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mPuk2UnlockAttempts >= 10) { 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] supplyIccPuk2: set state to SIM_PERM_LOCKED"); 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabledState = SimFdnState.SIM_PERM_LOCKED; 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin(String oldPin, String newPin, Message result) { 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (oldPin != null && oldPin.equals(mPinCode)) { 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPinCode = newPin; 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] changeIccPin: pin failed!"); 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin2(String oldPin2, String newPin2, Message result) { 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (oldPin2 != null && oldPin2.equals(mPin2Code)) { 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPin2Code = newPin2; 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] changeIccPin2: pin2 failed!"); 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.PASSWORD_INCORRECT); 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (enable && mSsnNotifyOn) { 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "Supp Service Notifications already enabled!"); 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnNotifyOn = enable; 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryFacilityLock(String facility, String pin, 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message result) { 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, pin, serviceClass, null, result); 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryFacilityLockForApp(String facility, String pin, int serviceClass, 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String appId, Message result) { 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (facility != null && facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) { 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] r = new int[1]; 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville r[0] = (mSimLockEnabled ? 1 : 0); 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] queryFacilityLock: SIM is " 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (r[0] == 0 ? "unlocked" : "locked")); 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, r, null); 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (facility != null && facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) { 3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] r = new int[1]; 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville r[0] = (mSimFdnEnabled ? 1 : 0); 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] queryFacilityLock: FDN is " 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (r[0] == 0 ? "disabled" : "enabled")); 3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, r, null); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setFacilityLock(String facility, boolean lockEnabled, String pin, int serviceClass, 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockEnabled, pin, serviceClass, null, result); 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setFacilityLockForApp(String facility, boolean lockEnabled, 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String pin, int serviceClass, String appId, 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (facility != null && 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) { 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPinCode)) { 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin is valid"); 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimLockEnabled = lockEnabled; 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin failed!"); 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.GENERIC_FAILURE); 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (facility != null && 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) { 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pin != null && pin.equals(mPin2Code)) { 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 is valid"); 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSimFdnEnabled = lockEnabled; 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, null); 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 failed!"); 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex = new CommandException( 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.GENERIC_FAILURE); 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result, null, ex); 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyNetworkDepersonalization(String netpin, Message result) { 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result contains a List of DriverCall 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The ar.result List is sorted by DriverCall.index 4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCurrentCalls (Message result) { 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((mState == RadioState.RADIO_ON) && !isSimLocked()) { 4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Log.i("GSM", "[SimCmds] getCurrentCalls"); 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, simulatedCallState.getDriverCalls()); 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Log.i("GSM", "[SimCmds] getCurrentCalls: RADIO_OFF or SIM not ready!"); 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new CommandException( 4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException.Error.RADIO_NOT_AVAILABLE)); 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPDPContextList(Message result) { 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result contains a List of DataCallState 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getDataCallList(Message result) { 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, new ArrayList<DataCallState>(0)); 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_DEFAULT == on "use subscription default value" 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dial (String address, int clirMode, Message result) { 4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.onDial(address); 4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_DEFAULT == on "use subscription default value" 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) 5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.onDial(address); 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMSI(Message result) { 5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMSI on success 5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMSIForApp(String aid, Message result) { 5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "012345678901234"); 5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMEI on success 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMEI(Message result) { 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "012345678901234"); 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is String containing IMEISV on success 5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getIMEISV(Message result) { 5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "99"); 5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Hang up one individual connection. 5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * returned message 5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * retMsg.obj = AsyncResult ar 5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases a specific active call X" 5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupConnection (int gsmIndex, Message result) { 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('1', (char)('0'+gsmIndex)); 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i("GSM", "[SimCmd] hangupConnection: resultFail"); 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.i("GSM", "[SimCmd] hangupConnection: resultSuccess"); 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases all held calls or sets User Determined User Busy (UDUB) 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for a waiting call." 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupWaitingOrBackground (Message result) { 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('0', '\0'); 5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Releases all active calls (if any exist) and accepts 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the other (held or waiting) call." 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupForegroundResumeBackground (Message result) { 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('1', '\0'); 6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Places all active calls (if any exist) on hold and accepts 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the other (held or waiting) call." 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void switchWaitingOrHoldingAndActive (Message result) { 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('2', '\0'); 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Adds a held call to the conversation" 6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void conference (Message result) { 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('3', '\0'); 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Connects the two calls and disconnects the subscriber from both calls" 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void explicitCallTransfer (Message result) { 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('4', '\0'); 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3GPP 22.030 6.5.5 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * "Places all active calls on hold except call X with which 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * communication shall be supported." 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void separateConnection (int gsmIndex, Message result) { 6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char ch = (char)(gsmIndex + '0'); 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('2', ch); 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acceptCall (Message result) { 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onAnswer(); 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * also known as UDUB 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void rejectCall (Message result) { 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean success; 7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville success = simulatedCallState.onChld('0', '\0'); 7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!success){ 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultFail(result, new RuntimeException("Hangup Error")); 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * cause code returned as Integer in Message.obj.response 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns integer cause code defined in TS 24.008 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Annex H or closest approximation. 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Most significant codes: 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - Any defined in 22.001 F.4 (for generating busy/congestion) 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - Cause 68: ACM >= ACMMax 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastCallFailCause (Message result) { 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] ret = new int[1]; 7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = nextCallFailCause; 7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastPdpFailCause (Message result) { 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getLastDataCallFailCause(Message result) { 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setMute (boolean enableMute, Message result) {unimplemented(result);} 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getMute (Message result) {unimplemented(result);} 7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj is an AsyncResult 7570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an int[2] 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is received signal strength (0-31, 99) 7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is bit error rate (0-7, 99) 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as defined in TS 27.007 8.5 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSignalStrength (Message result) { 7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[2]; 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 23; 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = 0; 7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result is callback message 7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message result) { 7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result is callback message 7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with every 7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * element representing one available BM_*_BAND 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message result) { 7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int [4]; 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 4; 7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = Phone.BM_US_BAND; 7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = Phone.BM_JPN_BAND; 7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = Phone.BM_AUS_BAND; 7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an String[14] 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See ril.h for details 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Please note that registration state 4 ("unknown") is treated 8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as "out of service" above 8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRegistrationState (Message result) { 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ret[] = new String[14]; 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "5"; // registered roam 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = null; 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = null; 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = null; 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[4] = null; 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[5] = null; 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[6] = null; 8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[7] = null; 8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[8] = null; 8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[9] = null; 8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[10] = null; 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[11] = null; 8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[12] = null; 8510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[13] = null; 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is an String[4] 8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 8590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is LAC if registered or NULL if not 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[2] is CID if registered or NULL if not 8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[3] indicates the available radio technology, where: 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 == unknown 8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 == GPRS only 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 == EDGE 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3 == UMTS 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * valid LAC are 0x0000 - 0xffff 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * valid CID are 0x00000000 - 0xffffffff 8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Please note that registration state 4 ("unknown") is treated 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * as "out of service" in the Android telephony system 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getDataRegistrationState (Message result) { 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ret[] = new String[4]; 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "5"; // registered roam 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = null; 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = null; 8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[3] = "2"; 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result is a String[3] 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[0] is long alpha or null if unregistered 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[1] is short alpha or null if unregistered 8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.result[2] is numeric or null if unregistered 8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getOperator(Message result) { 8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] ret = new String[3]; 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = "El Telco Loco"; 8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[1] = "Telco Loco"; 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[2] = "001001"; 8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendDtmf(char c, Message result) { 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void startDtmf(char c, Message result) { 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void stopDtmf(Message result) { 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.exception carries exception on failure 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.userObject contains the original value of result.obj 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ar.result is null on success and failure 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendBurstDtmf(String dtmfString, int on, int off, Message result) { 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * smscPDU is smsc address in PDU form GSM BCD format prefixed 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * by a length byte (as expected by TS 27.005) or NULL for default SMSC 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * pdu is SMS in PDU format as an ASCII hex string 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * less the SMSC address 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendSMS (String smscPDU, String pdu, Message result) {unimplemented(result);} 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.d(LOG_TAG, "Delete message at index " + index); 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.d(LOG_TAG, "Delete RUIM message at index " + index); 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.d(LOG_TAG, "Write SMS to SIM with status " + status); 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.d(LOG_TAG, "Write SMS to RUIM with status " + status); 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setupDataCall(String radioTechnology, String profile, 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String apn, String user, String password, String authType, 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String protocol, Message result) { 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deactivateDataCall(int cid, int reason, Message result) {unimplemented(result);} 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message result) { 9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNetworkType = networkType; 9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message result) { 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[1]; 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = mNetworkType; 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message result) { 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[7]; 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 6; 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i<7; i++) { 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[i] = i; 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 9990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 10070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 10120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 10150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message result) { 10160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private boolean isSimLocked() { 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSimLockedState != SimLockState.NONE) { 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return true; 10220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setRadioPower(boolean on, Message result) { 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(on) { 10280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_ON); 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 10300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_OFF); 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, 10440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String pin2, Message response) { 10500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data,pin2, null, response); 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * parameters equivalent to 27.007 AT+CRSM command 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj will be an AsyncResult 10560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj.userObj will be a SimIoResult on success 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void iccIOForApp (int command, int fileid, String path, int p1, int p2, 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int p3, String data, String pin2, String aid, Message result) { 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 10650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned". 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCLIP(Message response) { unimplemented(response); } 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj will be a an int[2] 10740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj[0] will be TS 27.007 +CLIR parameter 'n' 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 presentation indicator is used according to the subscription of the CLIR service 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 CLIR invocation 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 CLIR suppression 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj[1] will be TS 27.007 +CLIR parameter 'm' 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 CLIR not provisioned 10820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1 CLIR provisioned in permanent mode 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2 unknown (e.g. no network, etc.) 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 3 CLIR temporary mode presentation restricted 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4 CLIR temporary mode presentation allowed 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCLIR(Message result) {unimplemented(result);} 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * clirMode is one of the CLIR_* constants above 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 10930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * response.obj is null 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCLIR(int clirMode, Message result) {unimplemented(result);} 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 0 for disabled, 1 for enabled. 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASS_* 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCallWaiting(int serviceClass, Message response) { 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param enable is true to enable, false to disable 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASS_* 11130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallWaiting(boolean enable, int serviceClass, 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param action is one of CF_ACTION_* 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param cfReason is one of CF_REASON_* 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param serviceClass is a sum of SERVICE_CLASSS_* 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCallForward(int action, int cfReason, int serviceClass, 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message result) {unimplemented(result);} 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * cfReason is one of CF_REASON_* 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result will be an array of 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * CallForwardInfo's 11340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * An array of length 0 means "disabled for all codes" 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCallForwardStatus(int cfReason, int serviceClass, 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message result) {unimplemented(result);} 11390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setNetworkSelectionModeAutomatic(Message result) {unimplemented(result);} 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message result) {unimplemented(result);} 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setNetworkSelectionModeManual( 11430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String operatorNumeric, Message result) {unimplemented(result);} 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Queries whether the current network selection mode is automatic 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * or manual 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with element [0] being 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a 0 for automatic selection and a 1 for manual selection 11510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNetworkSelectionMode(Message result) { 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ret[] = new int[1]; 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret[0] = 0; 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, ret); 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Queries the currently available networks 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is a List of NetworkInfo objects 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getAvailableNetworks(Message result) {unimplemented(result);} 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getBasebandVersion (Message result) { 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, "SimulatedCommands"); 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Simulates an incoming USSD message 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param statusCode Status code string. See <code>setOnUSSD</code> 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * in CommandsInterface.java 11750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param message Message text to send or null if none 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void triggerIncomingUssd(String statusCode, String message) { 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] result = {statusCode, message}; 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyResult(result); 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendUSSD (String ussdString, Message result) { 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // We simulate this particular sequence 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ussdString.equals("#646#")) { 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 0 == USSD-Notify 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingUssd("0", "You have NNN minutes remaining."); 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(result, null); 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingUssd("0", "All Done"); 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 12020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resultSuccess(response, null); 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Just echo back data 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response != null) { 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(response).result = data; 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.sendToTarget(); 12150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Just echo back data 12200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response != null) { 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(response).result = strings; 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.sendToTarget(); 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** SimulatedRadioControl 12270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** Start the simulated phone ringing */ 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerRing(String number) { 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerRing(number); 12330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 12340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville progressConnectingCallState() { 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.progressConnectingCallState(); 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** If a call is DIALING or ALERTING, progress it all the way to ACTIVE */ 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville progressConnectingToActive() { 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.progressConnectingToActive(); 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** automatically progress mobile originated calls to ACTIVE. 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * default to true 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setAutoProgressConnectingCall(boolean b) { 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.setAutoProgressConnectingCall(b); 12550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNextDialFailImmediately(boolean b) { 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.setNextDialFailImmediately(b); 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNextCallFailCause(int gsmCause) { 12640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville nextCallFailCause = gsmCause; 12650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupForeground() { 12690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupForeground(); 12700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 12710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** hangup holding calls */ 12740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupBackground() { 12760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupBackground(); 12770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 12780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void triggerSsn(int type, int code) { 12810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification not = new SuppServiceNotification(); 12820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville not.notificationType = type; 12830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville not.code = code; 12840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant(new AsyncResult(null, not, null)); 12850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville shutdown() { 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(RadioState.RADIO_UNAVAILABLE); 12900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mHandlerThread.getLooper(); 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (looper != null) { 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville looper.quit(); 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** hangup all */ 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerHangupAll() { 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville simulatedCallState.triggerHangupAll(); 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants.notifyRegistrants(); 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville triggerIncomingSMS(String message) { 13060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //TODO 13070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pauseResponses() { 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponseCount++; 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resumeResponses() { 13160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponseCount--; 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pausedResponseCount == 0) { 13190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = pausedResponses.size(); i < s ; i++) { 13200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponses.get(i).sendToTarget(); 13210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponses.clear(); 13230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.e("GSM", "SimulatedCommands.resumeResponses < 0"); 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unimplemented(Message result) { 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).exception 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = new RuntimeException("Unimplemented"); 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pausedResponseCount > 0) { 13360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponses.add(result); 13370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 13380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 13390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void resultSuccess(Message result, Object ret) { 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).result = ret; 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pausedResponseCount > 0) { 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponses.add(result); 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 13490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void resultFail(Message result, Throwable tr) { 13550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null) { 13560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(result).exception = tr; 13570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (pausedResponseCount > 0) { 13580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pausedResponses.add(result); 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result.sendToTarget(); 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response) { 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 13920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPhoneType(int phoneType) { 13960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 13970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 14000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(result); 14070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Set the TTY mode 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param ttyMode is one of the following: 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 14140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 14150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 14160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 14170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "Not implemented in SimulatedCommands"); 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 14250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the TTY mode 14260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * (AsyncResult)response.obj).result is an int[] with element [0] set to 14270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * tty mode: 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_OFF} 14290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_FULL} 14300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_HCO} 14310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * - {@link com.android.internal.telephony.Phone#TTY_MODE_VCO} 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 14400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 14410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendCDMAFeatureCode(String FeatureCode, Message response) { 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 14480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 14490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendCdmaSms(byte[] pdu, Message response){ 14510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.w(LOG_TAG, "CDMA not implemented in SimulatedCommands"); 14520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 14550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void forceDataDormancy(Message response) { 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 14800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPinForApp(String pin, String aid, Message response) { 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 14930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPukForApp(String puk, String newPin, String aid, Message response) { 14940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 14950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPin2ForApp(String pin2, String aid, Message response) { 14990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 15030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message response) { 15040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message response) { 15090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 15130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 15190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message response) { 15230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville unimplemented(response); 15240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 1526