RIL.java revision cf57b29a755b0249da687201bcc726941d37d42b
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; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static com.android.internal.telephony.RILConstants.*; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.BroadcastReceiver; 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Intent; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.IntentFilter; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.ConnectivityManager; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocket; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocketAddress; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.HandlerThread; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Looper; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager; 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager.WakeLock; 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.NeighboringCellInfo; 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.PhoneNumberUtils; 465b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingamimport android.telephony.SignalStrength; 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsManager; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsMessage; 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.text.TextUtils; 50ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog; 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 54d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardApplicationStatus; 55d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardStatus; 56d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccIoResult; 57d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccRefreshResponse; 58d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaInformationRecords; 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.ByteArrayInputStream; 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.DataInputStream; 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileDescriptor; 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException; 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.InputStream; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.PrintWriter; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Collections; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass RILRequest { 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final String LOG_TAG = "RILJ"; 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Class Variables 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static int sNextSerial = 0; 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static Object sSerialMonitor = new Object(); 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static Object sPoolSync = new Object(); 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static RILRequest sPool = null; 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int sPoolSize = 0; 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int MAX_POOL_SIZE = 4; 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mSerial; 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequest; 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message mResult; 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Parcel mp; 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest mNext; 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Retrieves a new RILRequest instance from the pool. 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param request RIL_REQUEST_* 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result sent when operation completes 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return a RILRequest instance from the pool. 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static RILRequest obtain(int request, Message result) { 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = null; 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sPoolSync) { 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPool != null) { 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = sPool; 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = rr.mNext; 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mNext = null; 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize--; 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = new RILRequest(); 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sSerialMonitor) { 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mSerial = sNextSerial++; 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mRequest = request; 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult = result; 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp = Parcel.obtain(); 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null && result.getTarget() == null) { 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new NullPointerException("Message target must not be null"); 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // first elements in any RIL Parcel 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(request); 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(rr.mSerial); 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns a RILRequest instance to the pool. 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Note: This should only be called once per use. 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void release() { 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (sPoolSync) { 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPoolSize < MAX_POOL_SIZE) { 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville this.mNext = sPool; 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = this; 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize++; 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult = null; 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest() { 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static void 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resetSerial() { 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sSerialMonitor) { 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sNextSerial = 0; 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serialString() { 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Cheesy way to do %04d 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb = new StringBuilder(8); 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String sn; 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sn = Integer.toString(mSerial); 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //sb.append("J["); 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('['); 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('0'); 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(sn); 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(']'); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sb.toString(); 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onError(int error, Object ret) { 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex; 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex = CommandException.fromRilErrno(error); 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 185ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville if (RIL.RILJ_LOGD) Rlog.d(LOG_TAG, serialString() + "< " 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + RIL.requestToString(mRequest) 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " error: " + ex); 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResult != null) { 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(mResult, ret, ex); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult.sendToTarget(); 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mp != null) { 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mp.recycle(); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mp = null; 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * RIL implementation of the CommandsInterface. 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final String LOG_TAG = "RILJ"; 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final boolean RILJ_LOGD = true; 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final boolean RILJ_LOGV = false; // STOP SHIP if true 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Wake lock timeout should be longer than the longest timeout in 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the vendor ril. 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket mSocket; 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mSenderThread; 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILSender mSender; 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread mReceiverThread; 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver mReceiver; 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville WakeLock mWakeLock; 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mWakeLockTimeout; 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of requests pending to be sent out, it increases before calling 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // EVENT_SEND and decreases while handling EVENT_SEND. It gets cleared while 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT occurs. 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequestMessagesPending; 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of requests sent out but waiting for response. It increases while 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // sending request and decreases while handling response. It should match 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestList.size() unless there are requests no replied while 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT occurs. 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequestMessagesWaiting; 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //I'd rather this be LinkedList or something 238892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt ArrayList<RILRequest> mRequestList = new ArrayList<RILRequest>(); 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object mLastNITZTimeInfo; 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // When we are testing emergency calls 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Events 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_SEND = 1; 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constants 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // match with constant in ril.cpp 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_SOLICITED = 0; 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_UNSOLICITED = 1; 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final String SOCKET_NAME_RIL = "rild"; 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // RIL_CDMA_BroadcastServiceInfo 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void onReceive(Context context, Intent intent) { 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(true); 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(false); 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 275ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILSender extends Handler implements Runnable { 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RILSender(Looper looper) { 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(looper); 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Only allocated once 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] dataLength = new byte[4]; 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Runnable implementation 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //setup if needed 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Handler implementation 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville handleMessage(Message msg) { 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = (RILRequest)(msg.obj); 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest req = null; 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (msg.what) { 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_SEND: 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * mRequestMessagePending++ already happened for every 3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * EVENT_SEND, thus we must make sure 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * mRequestMessagePending-- happens once and only once 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean alreadySubtracted = false; 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s; 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = mSocket; 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s == null) { 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending > 0) 3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville alreadySubtracted = true; 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 323892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 324892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.add(rr); 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting++; 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending > 0) 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville alreadySubtracted = true; 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] data; 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville data = rr.mp.marshall(); 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.recycle(); 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp = null; 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (data.length > RIL_MAX_COMMAND_BYTES) { 3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Parcel larger than max bytes allowed! " 3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + data.length); 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // parcel length in big endian 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[0] = dataLength[1] = 0; 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[2] = (byte)((data.length >> 8) & 0xff); 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[3] = (byte)((data.length) & 0xff); 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 349ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville //Rlog.v(LOG_TAG, "writing packet: " + data.length + " bytes"); 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(dataLength); 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(data); 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 354ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "IOException", ex); 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (req != null || !alreadySubtracted) { 3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RuntimeException exc) { 363ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Uncaught exception ", exc); 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (req != null || !alreadySubtracted) { 3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(GENERIC_FAILURE, null); 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } finally { 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note: We are "Done" only if there are no outstanding 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // requests or replies. Thus this code path will only release 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // the wake lock on errors. 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone(); 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!alreadySubtracted && mRequestMessagesPending > 0) { 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_WAKE_LOCK_TIMEOUT: 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Haven't heard back from the last request. Assume we're 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not getting a response and release the wake lock. 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mWakeLock.isHeld()) { 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The timer of WAKE_LOCK_TIMEOUT is reset with each 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // new send request. So when WAKE_LOCK_TIMEOUT occurs 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // all requests in mRequestList already waited at 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Reset mRequestMessagesWaiting to enable 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // releaseWakeLockIfDone(). 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note: Keep mRequestList so that delayed response 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // can still be handled when response finally comes. 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesWaiting != 0) { 399ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "NOTE: mReqWaiting is NOT 0 but" 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + mRequestMessagesWaiting + " at TIMEOUT, reset!" 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " There still msg waitng for response"); 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 406892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 407892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 408ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 412892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt rr = mRequestList.get(i); 413ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, i + ": [" + rr.mSerial + "] " 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestMessagesPending shows how many 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // requests are waiting to be sent (and before 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // to be added in request list) since star the 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT timer. Since WAKE_LOCK_TIMEOUT 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // is the expected time to get response, all requests 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // should already sent out (i.e. 4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestMessagesPending is 0 )while TIMEOUT occurs. 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending != 0) { 427ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "ERROR: mReqPending is NOT 0 but" 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + mRequestMessagesPending + " at TIMEOUT, reset!"); 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending = 0; 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Reads in a single RIL message off the wire. A RIL message consists 4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * of a 4-byte little-endian length and a subsequent series of bytes. 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The final message (length header omitted) is read into 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * <code>buffer</code> and the length of the final message (less header) 4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * is returned. A return value of -1 indicates end-of-stream. 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param is non-null; Stream to read from 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param buffer Buffer to fill in. Must be as large as maximum 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * message size, or an ArrayOutOfBounds exception will be thrown. 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return Length of message less header, or -1 on end of stream. 4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @throws IOException 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int readRilMessage(InputStream is, byte[] buffer) 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throws IOException { 4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int countRead; 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int offset; 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int remaining; 4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageLength; 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // First, read in the length of the message 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = 4; 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 467ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Hit EOS reading message length"); 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageLength = ((buffer[0] & 0xff) << 24) 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[1] & 0xff) << 16) 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[2] & 0xff) << 8) 4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | (buffer[3] & 0xff); 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Then, re-use the buffer and read in the message itself 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = messageLength; 4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 487ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " remaining=" + remaining); 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return messageLength; 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILReceiver implements Runnable { 5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] buffer; 5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver() { 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville buffer = new byte[RIL_MAX_COMMAND_BYTES]; 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int retryCount = 0; 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {for (;;) { 5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s = null; 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress l; 5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = new LocalSocket(); 5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville l = new LocalSocketAddress(SOCKET_NAME_RIL, 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress.Namespace.RESERVED); 5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.connect(l); 5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex){ 5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s != null) { 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.close(); 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex2) { 5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //ignore failure to close after failure to connect 5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // don't print an error message after the the first time 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // or after the 8th time 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (retryCount == 8) { 532ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e (LOG_TAG, 5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket after " + retryCount 5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " times, continuing to retry silently"); 5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (retryCount > 0 && retryCount < 8) { 537ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i (LOG_TAG, 5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket; retrying after timeout"); 5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException er) { 5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount++; 5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville continue; 5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount = 0; 5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = s; 554ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length = 0; 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InputStream is = mSocket.getInputStream(); 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (;;) { 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Parcel p; 5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = readRilMessage(is, buffer); 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length < 0) { 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // End-of-stream reached 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p = Parcel.obtain(); 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.unmarshall(buffer, 0, length); 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.setDataPosition(0); 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 574ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville //Rlog.v(LOG_TAG, "Read packet: " + length + " bytes"); 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse(p); 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.recycle(); 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (java.io.IOException ex) { 580ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex); 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (Throwable tr) { 583ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Uncaught exception read length=" + length + 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 587ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.i(LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket"); 5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState (RadioState.RADIO_UNAVAILABLE); 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket.close(); 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = null; 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest.resetSerial(); 5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Clear request list on close 601892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt clearRequestList(RADIO_NOT_AVAILABLE, false); 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 603ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG,"Uncaught exception", tr); 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* We're disconnected so we don't know the ril version */ 6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(-1); 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructors 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(context); 6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscription = cdmaSubscription; 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = preferredNetworkType; 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = RILConstants.NO_PHONE; 6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); 6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.setReferenceCounted(false); 6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending = 0; 6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 6320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread = new HandlerThread("RILSender"); 6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread.start(); 6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mSenderThread.getLooper(); 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender = new RILSender(looper); 6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Context.CONNECTIVITY_SERVICE); 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Starting RILReceiver"); 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiver = new RILReceiver(); 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread.start(); 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IntentFilter filter = new IntentFilter(); 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville context.registerReceiver(mIntentReceiver, filter); 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message result) { 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setOnNITZTime(h, what, obj); 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Send the last NITZ time if we have it 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLastNITZTimeInfo != null) { 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant( 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = null; 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIccCardStatus(Message result) { 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin(String pin, Message result) { 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(pin, null, result); 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pin); 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(puk, newPin, null, result); 7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(puk); 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(newPin); 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2(String pin, Message result) { 7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(pin, null, result); 7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pin); 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(puk); 7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(newPin2); 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(oldPin); 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(newPin); 7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(oldPin2); 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(newPin2); 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 8180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(facility); 8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(oldPwd); 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(newPwd); 8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(netpin); 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCurrentCalls (Message result) { 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Deprecated public void 8510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getPDPContextList(Message result) { 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(Message result) { 8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial (String address, int clirMode, Message result) { 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(address, clirMode, null, result); 8670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(address); 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(clirMode); 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(0); // UUS information is absent 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfo == null) { 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(0); // UUS information is absent 8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); // UUS information is present 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(uusInfo.getType()); 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(uusInfo.getDcs()); 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByteArray(uusInfo.getUserData()); 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSI(Message result) { 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(String aid, Message result) { 8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "> getIMSI: " + requestToString(rr.mRequest) 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEI(Message result) { 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEISV(Message result) { 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupConnection (int gsmIndex, Message result) { 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gsmIndex); 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(gsmIndex); 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupWaitingOrBackground (Message result) { 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupForegroundResumeBackground (Message result) { 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchWaitingOrHoldingAndActive (Message result) { 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville conference (Message result) { 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(enable ? 1:0); 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 9980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 9990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 10000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville separateConnection (int gsmIndex, Message result) { 10050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 10070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + gsmIndex); 10100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 10120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(gsmIndex); 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acceptCall (Message result) { 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rejectCall (Message result) { 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville explicitCallTransfer (Message result) { 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastCallFailCause (Message result) { 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastPdpFailCause (Message result) { 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (result); 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The preferred new alternative to getLastPdpFailCause 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (Message result) { 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setMute (boolean enableMute, Message response) { 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 10820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enableMute); 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(enableMute ? 1 : 0); 10880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getMute (Message response) { 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getSignalStrength (Message result) { 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getVoiceRegistrationState (Message result) { 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataRegistrationState (Message result) { 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 11260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperator(Message result) { 11340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendDtmf(char c, Message result) { 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Character.toString(c)); 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville startDtmf(char c, Message result) { 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Character.toString(c)); 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville stopDtmf(Message result) { 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(3); 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(dtmfString); 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(on)); 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(off)); 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + dtmfString); 11870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(smscPDU); 11980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pdu); 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCdmaSms(byte[] pdu, Message result) { 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int address_nbr_of_digits; 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int subaddr_nbr_of_digits; 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int bearerDataLength; 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataInputStream dis = new DataInputStream(bais); 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 12150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.readInt()); //teleServiceId 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte((byte) dis.readInt()); //servicePresent 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.readInt()); //serviceCategory 12200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.read()); //address_digit_mode 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_mode 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.read()); //address_ton 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_plan 12240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville address_nbr_of_digits = (byte) dis.read(); 12250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte((byte) address_nbr_of_digits); 12260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 12270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte(dis.readByte()); // address_orig_bytes[i] 12280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(dis.read()); //subaddressType 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte((byte) dis.read()); //subaddr_odd 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte((byte) subaddr_nbr_of_digits); 12330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 12340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville bearerDataLength = dis.read(); 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(bearerDataLength); 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < bearerDataLength; i++){ 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByte(dis.readByte()); //bearerData[i] 12410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }catch (IOException ex){ 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 12440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ex); 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 12550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(index); 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (false) { 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 12620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + index); 12630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 12690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 12700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 12710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 12730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(index); 12740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (false) { 12760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 12770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 12780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + index); 12790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 12850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(status); 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pdu); 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(smsc); 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (false) { 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + status); 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 13040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 13070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(status); 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pdu); 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (false) { 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + status); 13160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 13220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Translates EF_SMS status bits to a status value compatible with 13230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SMS AT commands. See TS 27.005 3.1. 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int translateStatus(int status) { 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(status & 0x7) { 13270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_READ: 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 3; 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 2; 13350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Default to READ. 13380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String user, String password, String authType, String protocol, 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(7); 13490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(radioTechnology); 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(profile); 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(apn); 13530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(user); 13540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(password); 13550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(authType); 13560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(protocol); 13570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + profile + " " + apn + " " + user + " " 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + password + " " + authType + " " + protocol); 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville deactivateDataCall(int cid, int reason, Message result) { 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(cid)); 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(reason)); 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(boolean on, Message result) { 13830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(on ? 1 : 0); 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (on ? " on" : " off")); 13910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 13980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 14000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(enable ? 1 : 0); 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 14140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 14160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(success ? 1 : 0); 14170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cause); 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 14270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 14290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 14310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // cause code according to X.S004-550E 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cause); 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 14460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(success ? "1" : "0"); 14470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(ackPdu); 14480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ' ' + success + " [" + ackPdu + ']'); 14510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 14570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, Message result) { 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 14620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, String aid, Message result) { 14630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 14640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(command); 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(fileid); 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(path); 14710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(p1); 14720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(p2); 14730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(p3); 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(data); 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(pin2); 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(aid); 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 14790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 14800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(command) 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " path: " + path + "," 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + p1 + "," + p2 + "," + p3 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCLIR(Message result) { 14910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 14930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 14950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCLIR(int clirMode, Message result) { 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 15030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count ints 15050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 15060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(clirMode); 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + clirMode); 15110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallWaiting(int serviceClass, Message response) { 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 15190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 15210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(serviceClass); 15220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + serviceClass); 15250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 15310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 15330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); 15350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(enable ? 1 : 0); 15360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(serviceClass); 15370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enable + ", " + serviceClass); 15400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeAutomatic(Message response) { 15460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 15480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 15570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 15590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + operatorNumeric); 15630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(operatorNumeric); 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getNetworkSelectionMode(Message response) { 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 15730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getAvailableNetworks(Message response) { 15820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 15840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallForward(int action, int cfReason, int serviceClass, 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message response) { 15940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 15960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(action); 15980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cfReason); 15990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(serviceClass); 16000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 16010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(number); 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt (timeSeconds); 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + action + " " + cfReason + " " + serviceClass 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + timeSeconds); 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallForwardStatus(int cfReason, int serviceClass, 16130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message response) { 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(2); // 2 is for query action, not in used anyway 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cfReason); 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(serviceClass); 16200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 16210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(number); 16220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt (0); 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + cfReason + " " + serviceClass); 16260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCLIP(Message response) { 16320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getBasebandVersion (Message response) { 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 16540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 16560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 16610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 16620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 16630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 166488e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 166588e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + serviceClass 166688e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + appId + "]"); 16670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(4); 16700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(facility); 16720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(password); 16730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(serviceClass)); 16750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(appId); 16760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLock (String facility, boolean lockState, String password, 16830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message response) { 16840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 16850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 16880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 16900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, String appId, Message response) { 16910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String lockString; 16920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 16940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 169588e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 169688e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + lockState 169788e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + serviceClass + " " + appId + "]"); 16980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 17000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(5); 17010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(facility); 17030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville lockString = (lockState)?"1":"0"; 17040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(lockString); 17050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(password); 17060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(Integer.toString(serviceClass)); 17070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(appId); 17080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendUSSD (String ussdString, Message response) { 17150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 17170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 171872000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGD) { 171972000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO String logUssdString = "*******"; 172072000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGV) logUssdString = ussdString; 172172000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 172272000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO + " " + logUssdString); 172372000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO } 17240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(ussdString); 17260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 17310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 17320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 17340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 17360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest)); 17370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 17430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 17450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 17520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 17540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 17570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeByteArray(data); 17590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 17650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 17670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeStringArray(strings); 17710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 17760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 17770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 17780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 17790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 17800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 17810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message response) { 17820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 17840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 17860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(bandMode); 17870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + bandMode); 17900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 17950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 17960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 17970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 17980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with every 17990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * element representing one avialable BM_*_BAND 18000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message response) { 18020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 18040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 18150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 18170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(contents); 18210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 18280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 18300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(contents); 18340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 18410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 18430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + '[' + contents + ']'); 18460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(contents); 18480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 18550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 18560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 18590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] param = new int[1]; 18640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville param[0] = accept ? 1 : 0; 18650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeIntArray(param); 18660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 18730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCurrentPreferredNetworkType() { 18740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 18750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 18760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int mSetPreferredNetworkType; 18780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 18820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message response) { 18830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 18850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 18870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(networkType); 18880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSetPreferredNetworkType = networkType; 18900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = networkType; 18910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + networkType); 18940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message response) { 19020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 19040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 19140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 19160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 19260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 19270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 19280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(enable ? 1 : 0); 19290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 19310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + enable); 19320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 19400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 19410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 19510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 19520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(address); 19540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + address); 19570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 19650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 19660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 19670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(available ? 1 : 0); 19680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 19700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + available); 19710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 19790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 19800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 19900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 19910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 20000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 20010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 20020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numOfConfig = config.length; 20040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(numOfConfig); 20050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < numOfConfig; i++) { 20070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(config[i].getFromServiceId()); 20080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(config[i].getToServiceId()); 20090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(config[i].getFromCodeScheme()); 20100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(config[i].getToCodeScheme()); 20110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(config[i].isSelected() ? 1 : 0); 20120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 20150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " with " + numOfConfig + " configs : "); 20170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numOfConfig; i++) { 20180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(config[i].toString()); 20190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 20280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 20290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 20300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 20320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(activate ? 0 : 1); 20330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 20400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void sendScreenState(boolean on) { 20420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 20430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 20440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(on ? 1 : 0); 20450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 20470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 20480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void 20530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onRadioAvailable() { 20540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // In case screen state was lost (due to process crash), 20550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // this ensures that the RIL knows the correct screen state. 20560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2057cf57b29a755b0249da687201bcc726941d37d42bBin Li PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 2058cf57b29a755b0249da687201bcc726941d37d42bBin Li sendScreenState(pm.isScreenOn()); 20590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RadioState getRadioStateFromInt(int stateInt) { 20620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState state; 20630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* RIL_RadioState ril.h */ 20650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(stateInt) { 20660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 0: state = RadioState.RADIO_OFF; break; 20670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 20680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 10: state = RadioState.RADIO_ON; break; 20690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 20710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 20720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Unrecognized RIL_RadioState: " + stateInt); 20730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 20750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void switchToRadioState(RadioState newState) { 20780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(newState); 20790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Holds a PARTIAL_WAKE_LOCK whenever 20830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 20840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * b) There is a request pending to be sent out. 20850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 20860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 20870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * happen often. 20880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 20890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 20910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock() { 20920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 20930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.acquire(); 20940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending++; 20950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 20970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 20980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 20990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone() { 21040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mWakeLock.isHeld() && 21060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesPending == 0) && 21070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesWaiting == 0)) { 21080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 21100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(RILRequest rr) { 21160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg; 21170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSocket == null) { 21190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 21200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 21210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 21220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 21250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock(); 21270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.sendToTarget(); 21290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse (Parcel p) { 21330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int type; 21340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville type = p.readInt(); 21360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (type == RESPONSE_UNSOLICITED) { 21380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (p); 21390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (type == RESPONSE_SOLICITED) { 21400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (p); 21410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone(); 21440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2147892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * Release each request in mRequestList then clear the list 21480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param error is the RIL_Errno sent back 2149892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * @param loggable true means to print all requests in mRequestList 21500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2151892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt private void clearRequestList(int error, boolean loggable) { 21520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 2153892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2154892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 21550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2156ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 21570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mReqPending=" + mRequestMessagesPending + 21580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 21590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count ; i++) { 2162892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt rr = mRequestList.get(i); 21630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2164ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, i + ": [" + rr.mSerial + "] " + 21650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest)); 21660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, null); 21680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 21690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2170892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.clear(); 21710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 21720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 2176892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2177892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt for (int i = 0, s = mRequestList.size() ; i < s ; i++) { 2178892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 21790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mSerial == serial) { 2181892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.remove(i); 21820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesWaiting > 0) 21830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting--; 21840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 21850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 21900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (Parcel p) { 21940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serial, error; 21950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean found = false; 21960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serial = p.readInt(); 21980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville error = p.readInt(); 21990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 22010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = findAndRemoveRequestFromList(serial); 22030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 2205ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, "Unexpected solicited response! sn: " 22060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + serial + " error: " + error); 22070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret = null; 22110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error == 0 || p.dataAvail() > 0) { 22130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // either command succeeds or command fails but with data payload 22140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch (rr.mRequest) { 22150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* 22160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 22170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 22180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 22190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 22200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 22210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 22220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 22230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 22240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 22250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 22260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 22270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 22280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 22290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 22300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 22310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 22320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 22330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 22340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mTestingEmergencyCall.getAndSet(false)) { 22350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 22360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("testing emergency call, notify ECM Registrants"); 22370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 22380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = responseVoid(p); 22410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 22420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 22440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 22450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 22460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 22470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 22480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 22490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 22500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 22510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 22520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 22530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 22540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 22550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 22560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 22570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 22580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 22590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 22600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 22610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 22620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 22630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 22640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 22650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 22660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 22670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 22680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 22690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 22700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 22710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 22720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 22730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 22740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 22750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 22760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 22770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 22780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 22790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 22800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 22810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 22820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 22830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 22840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 22850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 22860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 22870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 22880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 22890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 22900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 22910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 22920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 22930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 22940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 22950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 22960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 22970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 22980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 22990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 23000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 23010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 23020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 23030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 23040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 23050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 23060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 23070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 23080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 23090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 23100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 23110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 23120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 23130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 23140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 23150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 23160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 23170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 23180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 23190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 23200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 23210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 23220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 23230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 23240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 23250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 23260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 23270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 23280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 23290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 23300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 23310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 23320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 23330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 23340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 23350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 23360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 23370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 23380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 23390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; 23400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 23410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Exceptions here usually mean invalid RIL responses 23420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2343ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.w(LOG_TAG, rr.serialString() + "< " 23440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 23450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " exception, possible invalid RIL response", tr); 23460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 23480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, null, tr); 23490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 23500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 23520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 23530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2356f860a3f42f87c9c8572623aff33349168d689477Wink Saville // Here and below fake RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, see b/7255789. 2357f860a3f42f87c9c8572623aff33349168d689477Wink Saville // This is needed otherwise we don't automatically transition to the main lock 2358f860a3f42f87c9c8572623aff33349168d689477Wink Saville // screen when the pin or puk is entered incorrectly. 2359be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville switch (rr.mRequest) { 2360be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK: 2361be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: 2362be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville if (mIccStatusChangedRegistrants != null) { 2363f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2364f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON enter sim puk fakeSimStatusChanged: reg count=" 2365f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2366f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2367be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2368be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2369be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville break; 2370be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2371be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville 23720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error != 0) { 2373f860a3f42f87c9c8572623aff33349168d689477Wink Saville switch (rr.mRequest) { 2374f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: 2375f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: 2376f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: 2377f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: 2378f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: 2379f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (mIccStatusChangedRegistrants != null) { 2380f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2381f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON some errors fakeSimStatusChanged: reg count=" 2382f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2383f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2384f860a3f42f87c9c8572623aff33349168d689477Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2385f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2386f860a3f42f87c9c8572623aff33349168d689477Wink Saville break; 2387f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2388f860a3f42f87c9c8572623aff33349168d689477Wink Saville 23890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, ret); 23900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 23910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 23920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 23950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + retToString(rr.mRequest, ret)); 23960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 23980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, ret, null); 23990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String 24060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retToString(int req, Object ret) { 24070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret == null) return ""; 24080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (req) { 24090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Don't log these return values, for privacy's sake. 24100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: 24110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: 24120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: 24130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!RILJ_LOGV) { 24140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 24150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ""; 24160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb; 24200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s; 24210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length; 24220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret instanceof int[]){ 24230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] intArray = (int[]) ret; 24240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = intArray.length; 24250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 24260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 24270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 24280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(intArray[i++]); 24290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 24300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(intArray[i++]); 24310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 24340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 24350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (ret instanceof String[]) { 24360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] strings = (String[]) ret; 24370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = strings.length; 24380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 24390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 24400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 24410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(strings[i++]); 24420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 24430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(strings[i++]); 24440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 24470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 24480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 24490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 24500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 24510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (DriverCall dc : calls) { 24520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("[").append(dc).append("] "); 24530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 24550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 24560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> cells; 24570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cells = (ArrayList<NeighboringCellInfo>) ret; 24580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 24590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (NeighboringCellInfo cell : cells) { 24600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(cell).append(" "); 24610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 24630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 24640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = ret.toString(); 24650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 24670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 24700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (Parcel p) { 24710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response; 24720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret; 24730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readInt(); 24750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch(response) { 24770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 24780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 24790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 24800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 24810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 24820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 24840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 24850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 24860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 24870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 24880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 24890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 24900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 24910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 24920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 24930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 24940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 24950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 24960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 24970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 24980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 24990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 25000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 25010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 25020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 25030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 25040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 25050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 25070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 25080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 25090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 25100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 25110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 25120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 25130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 25140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 25150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 25160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 25170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 25180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 25200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 25210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; (implied) 25220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 2523ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Exception processing unsol response: " + response + 25240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 25250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 25260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(response) { 25290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 25300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* has bonus radio state int */ 25310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 25320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 25330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchToRadioState(newState); 25350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 25370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 25380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants 25400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 25410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 25430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 25440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceNetworkStateRegistrants 25460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 25470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 25490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 25500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME this should move up a layer 25520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String a[] = new String[2]; 25530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville a[1] = (String)ret; 25550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 25570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromCMT(a); 25590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmSmsRegistrant != null) { 25600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmSmsRegistrant 25610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 25620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 25660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 25670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsStatusRegistrant != null) { 25690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsStatusRegistrant.notifyRegistrant( 25700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 25710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 25740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 25750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] smsIndex = (int[])ret; 25770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(smsIndex.length == 1) { 25790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsOnSimRegistrant != null) { 25800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsOnSimRegistrant. 25810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 25820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 25840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 25850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + smsIndex.length); 25860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 25880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: 25890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] resp = (String[])ret; 25900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (resp.length < 2) { 25920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = new String[2]; 25930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[0] = ((String[])ret)[0]; 25940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[1] = null; 25950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 25970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 25980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyRegistrant( 25990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, resp, null)); 26000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 26030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // has bonus long containing milliseconds since boot that the NITZ 26060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // time was received 26070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long nitzReceiveTime = p.readLong(); 26080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object[] result = new Object[2]; 26100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[0] = ret; 26120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[1] = Long.valueOf(nitzReceiveTime); 26130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 26150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 26160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ignoreNitz) { 26180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 26190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 26200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNITZTimeRegistrant != null) { 26210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 26230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 26240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 26250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // in case NITZ time registrant isnt registered yet 26260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = result; 26270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 26320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note this is set to "verbose" because it happens 26330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // frequently 26340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 26350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalStrengthRegistrant != null) { 26370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalStrengthRegistrant.notifyRegistrant( 26380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 26420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 26450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 26480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSsnRegistrant != null) { 26510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant( 26520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: 26570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatSessionEndRegistrant != null) { 26600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatSessionEndRegistrant.notifyRegistrant( 26610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 26660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatProCmdRegistrant != null) { 26690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatProCmdRegistrant.notifyRegistrant( 26700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 26750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatEventRegistrant != null) { 26780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatEventRegistrant.notifyRegistrant( 26790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: 26840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatCallSetUpRegistrant != null) { 26870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatCallSetUpRegistrant.notifyRegistrant( 26880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 26890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 26930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 26960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 26970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: 27010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccRefreshRegistrants != null) { 27040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccRefreshRegistrants.notifyRegistrants( 27050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: 27100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingRegistrant != null) { 27130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingRegistrant.notifyRegistrant( 27140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 27190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 27200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRestrictedStateRegistrant != null) { 27210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRestrictedStateRegistrant.notifyRegistrant( 27220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 27270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccStatusChangedRegistrants != null) { 27300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 27310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 27350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms = (SmsMessage) ret; 27380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSmsRegistrant != null) { 27400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSmsRegistrant 27410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 27420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 27460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmBroadcastSmsRegistrant != null) { 27490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmBroadcastSmsRegistrant 27500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 27510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 27550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 27580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 27590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 27630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 27660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 27670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 27710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCallWaitingInfoRegistrants != null) { 27740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 27750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 27800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mOtaProvisionRegistrants != null) { 27830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 27840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 27890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 27900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 27920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 27930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (ClassCastException e) { 2794ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 27950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 27990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 28000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(rec); 28010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 28050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 28060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUnsolOemHookRawRegistrant != null) { 28070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 28080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: 28120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 28130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingbackToneRegistrants != null) { 28140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean playtone = (((int[])ret)[0] == 1); 28150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackToneRegistrants.notifyRegistrants( 28160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, playtone, null)); 28170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 28210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResendIncallMuteRegistrants != null) { 28240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResendIncallMuteRegistrants.notifyRegistrants( 28250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 28300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mVoiceRadioTechChangedRegistrants != null) { 28330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 28340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 28350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 28390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 28420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 28430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 28480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaPrlChangedRegistrants != null) { 28510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 28520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 28570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 28600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 28610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, null, null)); 28620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 28660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Initial conditions 28690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(false, null); 28700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mPreferredNetworkType, null); 28710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 28720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 28730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 28790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 28800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 28810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 28820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 28830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 28840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilVersion = rilVer; 28850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRilConnectedRegistrants != null) { 28860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilConnectedRegistrants.notifyRegistrants( 28870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 28880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 28920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseInts(Parcel p) { 28930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 28940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 28950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = p.readInt(); 28970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 28990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInts ; i++) { 29010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 29020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 29050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseVoid(Parcel p) { 29100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 29110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallForward(Parcel p) { 29150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInfos; 29160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CallForwardInfo infos[]; 29170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInfos = p.readInt(); 29190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos = new CallForwardInfo[numInfos]; 29210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInfos ; i++) { 29230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i] = new CallForwardInfo(); 29240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].status = p.readInt(); 29260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].reason = p.readInt(); 29270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].serviceClass = p.readInt(); 29280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].toa = p.readInt(); 29290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].number = p.readString(); 29300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].timeSeconds = p.readInt(); 29310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return infos; 29340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSuppServiceNotification(Parcel p) { 29380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification notification = new SuppServiceNotification(); 29390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.notificationType = p.readInt(); 29410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.code = p.readInt(); 29420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.index = p.readInt(); 29430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.type = p.readInt(); 29440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 29450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 29470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaSms(Parcel p) { 29510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 29520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromParcel(p); 29530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sms; 29550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseString(Parcel p) { 29590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response; 29600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readString(); 29620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 29640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseStrings(Parcel p) { 29680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 29690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response[]; 29700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readStringArray(); 29720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (false) { 29740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 29750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new String[num]; 29770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 29780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readString(); 29790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 29830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseRaw(Parcel p) { 29870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 29880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte response[]; 29890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.createByteArray(); 29910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 29930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSMS(Parcel p) { 29970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageRef, errorCode; 29980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ackPDU; 29990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageRef = p.readInt(); 30010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ackPDU = p.readString(); 30020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville errorCode = p.readInt(); 30030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 30050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseICC_IO(Parcel p) { 30120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int sw1, sw2; 30130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte data[] = null; 30140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message ret; 30150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw1 = p.readInt(); 30170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw2 = p.readInt(); 30180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s = p.readString(); 30200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 30220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw1) 30230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 30240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + s); 30250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new IccIoResult(sw1, sw2, s); 30270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseIccCardStatus(Parcel p) { 3031e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 3032e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 3033e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 3034e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 3035e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 3036e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 3037e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 3038e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 30390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numApplications = p.readInt(); 30400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // limit to maximum allowed applications 30420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 30430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 30440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3045e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 30460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numApplications ; i++) { 3047e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3048e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3049e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3050e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3051e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3052e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3053e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3054e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3055e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3056e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 30570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3058e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 30590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSimRefresh(Parcel p) { 30630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IccRefreshResponse response = new IccRefreshResponse(); 30640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.refreshResult = p.readInt(); 30660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.efId = p.readInt(); 30670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.aid = p.readString(); 30680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallList(Parcel p) { 30730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int voiceSettings; 30750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> response; 30760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DriverCall dc; 30770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 30790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DriverCall>(num); 30800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) { 30820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: num=" + num + 30830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 30840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 30850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 30870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc = new DriverCall(); 30880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 30900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.index = p.readInt(); 30910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.TOA = p.readInt(); 30920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMpty = (0 != p.readInt()); 30930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMT = (0 != p.readInt()); 30940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.als = p.readInt(); 30950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville voiceSettings = p.readInt(); 30960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 30970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 30980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = p.readString(); 30990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int np = p.readInt(); 31000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 31010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.name = p.readString(); 31020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.namePresentation = p.readInt(); 31030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int uusInfoPresent = p.readInt(); 31040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfoPresent == 1) { 31050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo = new UUSInfo(); 31060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setType(p.readInt()); 31070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setDcs(p.readInt()); 31080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] userData = p.createByteArray(); 31090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setUserData(userData); 31100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 31110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 31120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getUserData().length)); 31130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (string)=" 31140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + new String(dc.uusInfo.getUserData())); 31150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (hex): " 31160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 31170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 31180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : NOT present!"); 31190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 31220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 31230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(dc); 31250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dc.isVoicePrivacy) { 31270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 31280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is enabled"); 31290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 31300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 31310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is disabled"); 31320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Collections.sort(response); 31360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 31380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 31390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: call ended, testing emergency call," + 31400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " notify ECM Registrants"); 31410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 31420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private DataCallState getDataCallState(Parcel p, int version) { 31490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataCallState dataCall = new DataCallState(); 31500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = version; 31520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 5) { 31530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 31540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 31550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 31560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 31570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 31580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 31590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 31610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.status = p.readInt(); 31620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.suggestedRetryTime = p.readInt(); 31630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 31640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 31650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 31660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 31670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((dataCall.status == DataConnection.FailCause.NONE.getErrorCode()) && 31680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TextUtils.isEmpty(dataCall.ifname)) { 31690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("getDataCallState, no ifname"); 31700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 31720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 31730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 31740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 31760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 31770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 31780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 31800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 31810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 31820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 31850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseDataCallList(Parcel p) { 31890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DataCallState> response; 31900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 31920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 31930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 31940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DataCallState>(num); 31960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 31970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(getDataCallState(p, ver)); 31980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSetupDataCall(Parcel p) { 32050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 32070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 32080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataCallState dataCall; 32100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ver < 5) { 32120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall = new DataCallState(); 32130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = ver; 32140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 32150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 32160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 32170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 32180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 32190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 4) { 32250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 32260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 32270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 32280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 32290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 5) { 32320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 32330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 32340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 32350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 32360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num != 1) { 32400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 32410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 32420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " got " + num); 32430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall = getDataCallState(p, ver); 32450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 32480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseOperatorInfos(Parcel p) { 32520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String strings[] = (String [])responseStrings(p); 32530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<OperatorInfo> ret; 32540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (strings.length % 4 != 0) { 32560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 32570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 32580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + strings.length + " strings, expected multible of 4"); 32590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 32620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < strings.length ; i += 4) { 32640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret.add ( 32650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new OperatorInfo( 32660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+0], 32670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+1], 32680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+2], 32690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+3])); 32700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ret; 32730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCellList(Parcel p) { 32770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num, rssi; 32780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String location; 32790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> response; 32800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NeighboringCellInfo cell; 32810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 32830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<NeighboringCellInfo>(); 32840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Determine the radio access type 32860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String radioString = SystemProperties.get( 32870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 32880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int radioType; 32890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioString.equals("GPRS")) { 32900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_GPRS; 32910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("EDGE")) { 32920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_EDGE; 32930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("UMTS")) { 32940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UMTS; 32950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSDPA")) { 32960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSDPA; 32970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSUPA")) { 32980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSUPA; 32990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSPA")) { 33000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSPA; 33010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UNKNOWN; 33030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Interpret the location based on radio access type 33060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 33070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 33080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rssi = p.readInt(); 33090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville location = p.readString(); 33100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 33110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(cell); 33120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 33150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGetPreferredNetworkType(Parcel p) { 33180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int [] response = (int[]) responseInts(p); 33190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response.length >= 1) { 33210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Since this is the response for getPreferredNetworkType 33220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we'll assume that it should be the value we want the 33230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // vendor ril to take if we reestablish a connection to it. 33240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = response[0]; 33250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 33270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGmsBroadcastConfig(Parcel p) { 33300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 33310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<SmsBroadcastConfigInfo> response; 33320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsBroadcastConfigInfo info; 33330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 33350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 33360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 33380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromId = p.readInt(); 33390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toId = p.readInt(); 33400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromScheme = p.readInt(); 33410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toScheme = p.readInt(); 33420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean selected = (p.readInt() == 1); 33430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 33450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville toScheme, selected); 33460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(info); 33470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 33490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaBroadcastConfig(Parcel p) { 33530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numServiceCategories; 33540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 33550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numServiceCategories = p.readInt(); 33570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numServiceCategories == 0) { 33590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: The logic of providing default values should 33600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not be done by this transport layer. And needs to 33610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // be done by the vendor ril or application logic. 33620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 33630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 33640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 33650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Faking a default record for all possible records. 33670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 33680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 33700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // default language and selection status to false for all. 33710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 33720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 33730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 1] = 1; 33740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 2] = 0; 33750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 33780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 33790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 33800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = numServiceCategories; 33820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1 ; i < numInts; i++) { 33830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 33840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 33880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSignalStrength(Parcel p) { 33925b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam SignalStrength signalStrength = new SignalStrength(p); 33935b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 33940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private ArrayList<CdmaInformationRecords> 33970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaInformationRecord(Parcel p) { 33980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numberOfInfoRecs; 33990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> response; 34000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 34020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Loop through all of the information records unmarshalling them 34030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * and converting them to Java Objects. 34040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 34050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numberOfInfoRecs = p.readInt(); 34060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 34070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 34090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 34100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(InfoRec); 34110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaCallWaiting(Parcel p) { 34180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 34190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 34210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPresentation = notification.presentationFromCLIP(p.readInt()); 34220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.name = p.readString(); 34230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.namePresentation = notification.numberPresentation; 34240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.isPresent = p.readInt(); 34250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signalType = p.readInt(); 34260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.alertPitch = p.readInt(); 34270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signal = p.readInt(); 34280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberType = p.readInt(); 34290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPlan = p.readInt(); 34300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 34320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallRing(Parcel p){ 34360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char response[] = new char[4]; 34370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = (char) p.readInt(); // isPresent 34390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[1] = (char) p.readInt(); // signalType 34400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[2] = (char) p.readInt(); // alertPitch 34410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[3] = (char) p.readInt(); // signal 34420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 34470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 34480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 34490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 34500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mDisplayInfoRegistrants != null) { 34510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 34530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 34560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalInfoRegistrants != null) { 34570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalInfoRegistrants.notifyRegistrants( 34590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 34620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNumberInfoRegistrants != null) { 34630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNumberInfoRegistrants.notifyRegistrants( 34650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 34680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRedirNumInfoRegistrants != null) { 34690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 34710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 34740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLineControlInfoRegistrants != null) { 34750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 34770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 34800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53ClirInfoRegistrants != null) { 34810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 34830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 34860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 34870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 34880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 34890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 34900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 34950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(int request) { 34960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 34970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 34980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 34990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 35000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 35010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 35020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 35030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 35040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 35050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 35060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 35070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 35080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 35090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 35100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 35110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: return "DIAL"; 35120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 35130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 35140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 35150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 35160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 35170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 35180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: return "UDUB"; 35190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 35200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 35210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 35220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 35230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 35240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 35250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: return "DTMF"; 35260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 35270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 35280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 35290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 35300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 35310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 35320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 35330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 35340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 35350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 35360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 35370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 35380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 35390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 35400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 35410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 35420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 35430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 35440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 35450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 35460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 35470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 35480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 35490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 35500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 35510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 35520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 35530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 35540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 35550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 35560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 35570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 35580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 35590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 35600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 35610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 35620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 35630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 35640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 35650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 35660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 35670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 35680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 35690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 35700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 35710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 35720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 35730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 35740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 35750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 35760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 35770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 35780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 35790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 35800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 35810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 35820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 35830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 35840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 35850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 35860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 35870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 35880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 35890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 35900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 35910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 35920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 35930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 35940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 35950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 35960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 35970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 35980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 35990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 36000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 36010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 36020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 36030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 36040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 36050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 36060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 36070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 36080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 36090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 36100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown request>"; 36110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 36150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseToString(int request) 36160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville { 36170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 36180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 36190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 36200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 36210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 36220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 36230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 36240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 36250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 36260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 36270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 36280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 36290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 36300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 36310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 36320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 36330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 36340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 36350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 36360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 36370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 36380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 36390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 36400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 36410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 36420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 36430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 36440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 36450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 36460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 36470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 36480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 36490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 36500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 36510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 36520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONG"; 36530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 36540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 36550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 36560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 36570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 36580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 36590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown reponse>"; 36600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLog(String msg) { 3664ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, msg); 36650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLogv(String msg) { 3668ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.v(LOG_TAG, msg); 36690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLog(int response) { 36720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response)); 36730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogMore(int response, String more) { 36760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 36770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogRet(int response, Object ret) { 36800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 36810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogvRet(int response, Object ret) { 36840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 36850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 36890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 36900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 36910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 36920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 36940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 36960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 36990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 37000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 37010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 37080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 37090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 37100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = phoneType; 37110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 37170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 37190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 37290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 37310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 37330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cdmaRoamingType); 37340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 37360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaRoamingType); 37370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 37450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 37470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 37490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(cdmaSubscription); 37500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 37520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaSubscription); 37530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 37610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message response) { 37620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 37640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 37740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 37760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 37840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 37850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 37860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 37870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 37880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 37900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(ttyMode); 37910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 37930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + ttyMode); 37940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 37960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 37990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 38010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 38030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 38040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(FeatureCode); 38060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + FeatureCode); 38090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 38140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 38150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig 38200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { 38210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 38220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < configValuesArray.length; i++) { 38240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(configValuesArray[i]); 38250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 38330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 38340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(1); 38360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeInt(activate ? 0 :1); 38370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 38460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message response) { 38470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 38480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 38550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 38560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mp.writeString(nonce); 38580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* (non-Javadoc) 38650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 38660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 38670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testingEmergencyCall() { 38690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 38700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mTestingEmergencyCall.set(true); 38710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 387405ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka pw.println("RIL: " + this); 38750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSocket=" + mSocket); 38760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSenderThread=" + mSenderThread); 38770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSender=" + mSender); 38780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 38790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiver=" + mReceiver); 38800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLock=" + mWakeLock); 38810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 3882892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 38830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesPending=" + mRequestMessagesPending); 38840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting); 3885892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 38860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestList count=" + count); 38870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 3888892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 38890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 38900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 38930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 38940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 3896