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