10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project 31260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static com.android.internal.telephony.RILConstants.*; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.BroadcastReceiver; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Intent; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.IntentFilter; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.ConnectivityManager; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocket; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocketAddress; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.HandlerThread; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Looper; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel; 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties; 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager.WakeLock; 455fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Savilleimport android.telephony.CellInfo; 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.NeighboringCellInfo; 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.PhoneNumberUtils; 48fa4fd4721082689c4b276f67b845e7be249cb8daWink Savilleimport android.telephony.Rlog; 495b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingamimport android.telephony.SignalStrength; 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsManager; 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsMessage; 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.text.TextUtils; 537cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwaltimport android.util.SparseArray; 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 57d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardApplicationStatus; 58d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardStatus; 59d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccIoResult; 60d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccRefreshResponse; 61d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaInformationRecords; 64a63f55cf17629426d976830429a7612387532195Rika Brooksimport com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 65ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DcFailCause; 66ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DataCallResponse; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.ByteArrayInputStream; 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.DataInputStream; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileDescriptor; 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException; 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.InputStream; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.PrintWriter; 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Collections; 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 777cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwaltimport java.util.concurrent.atomic.AtomicInteger; 787cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwaltimport java.util.Random; 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass RILRequest { 84cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final String LOG_TAG = "RilRequest"; 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Class Variables 877cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt static Random sRandom = new Random(); 887cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt static AtomicInteger sNextSerial = new AtomicInteger(0); 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static Object sPoolSync = new Object(); 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static RILRequest sPool = null; 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int sPoolSize = 0; 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int MAX_POOL_SIZE = 4; 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mSerial; 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequest; 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message mResult; 9822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville Parcel mParcel; 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest mNext; 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Retrieves a new RILRequest instance from the pool. 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param request RIL_REQUEST_* 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result sent when operation completes 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return a RILRequest instance from the pool. 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static RILRequest obtain(int request, Message result) { 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = null; 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sPoolSync) { 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPool != null) { 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = sPool; 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = rr.mNext; 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mNext = null; 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize--; 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = new RILRequest(); 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1247cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr.mSerial = sNextSerial.getAndIncrement(); 1257cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mRequest = request; 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult = result; 12822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = Parcel.obtain(); 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null && result.getTarget() == null) { 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new NullPointerException("Message target must not be null"); 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // first elements in any RIL Parcel 13522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(request); 13622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rr.mSerial); 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns a RILRequest instance to the pool. 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Note: This should only be called once per use. 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void release() { 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (sPoolSync) { 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPoolSize < MAX_POOL_SIZE) { 14922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mNext = sPool; 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = this; 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize++; 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult = null; 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest() { 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static void 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resetSerial() { 1627cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // use a random so that on recovery we probably don't mix old requests 1637cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // with new. 1647cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt sNextSerial.set(sRandom.nextInt()); 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serialString() { 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Cheesy way to do %04d 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb = new StringBuilder(8); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String sn; 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1737cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt long adjustedSerial = (((long)mSerial) - Integer.MIN_VALUE)%10000; 1747cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 1757cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt sn = Long.toString(adjustedSerial); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //sb.append("J["); 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('['); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('0'); 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(sn); 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(']'); 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sb.toString(); 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onError(int error, Object ret) { 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex; 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex = CommandException.fromRilErrno(error); 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 194fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville if (RIL.RILJ_LOGD) Rlog.d(LOG_TAG, serialString() + "< " 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + RIL.requestToString(mRequest) 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " error: " + ex); 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResult != null) { 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(mResult, ret, ex); 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult.sendToTarget(); 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mParcel != null) { 20422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel.recycle(); 20522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel = null; 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * RIL implementation of the CommandsInterface. 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 217fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville static final String RILJ_LOG_TAG = "RILJ"; 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final boolean RILJ_LOGD = true; 219cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final boolean RILJ_LOGV = false; // STOPSHIP if true 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Wake lock timeout should be longer than the longest timeout in 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the vendor ril. 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket mSocket; 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mSenderThread; 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILSender mSender; 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread mReceiverThread; 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver mReceiver; 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville WakeLock mWakeLock; 2357cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt final int mWakeLockTimeout; 2367cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // The number of wakelock requests currently active. Don't release the lock 2377cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // until dec'd to 0 2387cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt int mWakeLockCount; 2397cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 2407cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt SparseArray<RILRequest> mRequestList = new SparseArray<RILRequest>(); 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object mLastNITZTimeInfo; 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // When we are testing emergency calls 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Events 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_SEND = 1; 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constants 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // match with constant in ril.cpp 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_SOLICITED = 0; 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_UNSOLICITED = 1; 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final String SOCKET_NAME_RIL = "rild"; 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // RIL_CDMA_BroadcastServiceInfo 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void onReceive(Context context, Intent intent) { 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(true); 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(false); 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 277fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILSender extends Handler implements Runnable { 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RILSender(Looper looper) { 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(looper); 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Only allocated once 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] dataLength = new byte[4]; 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Runnable implementation 291cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //setup if needed 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Handler implementation 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville handleMessage(Message msg) { 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = (RILRequest)(msg.obj); 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest req = null; 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (msg.what) { 3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_SEND: 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s; 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = mSocket; 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s == null) { 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3147cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock(); 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 318892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 3197cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mRequestList.append(rr.mSerial, rr); 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] data; 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville data = rr.mParcel.marshall(); 32522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.recycle(); 32622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = null; 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (data.length > RIL_MAX_COMMAND_BYTES) { 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Parcel larger than max bytes allowed! " 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + data.length); 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // parcel length in big endian 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[0] = dataLength[1] = 0; 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[2] = (byte)((data.length >> 8) & 0xff); 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[3] = (byte)((data.length) & 0xff); 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 339fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "writing packet: " + data.length + " bytes"); 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(dataLength); 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(data); 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 344fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "IOException", ex); 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3487cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (req != null) { 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3517cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock(); 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RuntimeException exc) { 354fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception ", exc); 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3587cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (req != null) { 3590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(GENERIC_FAILURE, null); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3617cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock(); 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_WAKE_LOCK_TIMEOUT: 3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Haven't heard back from the last request. Assume we're 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not getting a response and release the wake lock. 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3717cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // The timer of WAKE_LOCK_TIMEOUT is reset with each 3727cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // new send request. So when WAKE_LOCK_TIMEOUT occurs 3737cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // all requests in mRequestList already waited at 3747cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 3757cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // 3767cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // Note: Keep mRequestList so that delayed response 3777cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // can still be handled when response finally comes. 3787cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 3797cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt synchronized (mRequestList) { 3807cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (clearWakeLock()) { 3817cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (RILJ_LOGD) { 3827cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt int count = mRequestList.size(); 3836613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, "WAKE_LOCK_TIMEOUT " + 3847cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt " mRequestList=" + count); 3857cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt for (int i = 0; i < count; i++) { 3867cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.valueAt(i); 3876613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " 3887cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt + requestToString(rr.mRequest)); 3897cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Reads in a single RIL message off the wire. A RIL message consists 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * of a 4-byte little-endian length and a subsequent series of bytes. 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The final message (length header omitted) is read into 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * <code>buffer</code> and the length of the final message (less header) 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * is returned. A return value of -1 indicates end-of-stream. 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param is non-null; Stream to read from 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param buffer Buffer to fill in. Must be as large as maximum 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * message size, or an ArrayOutOfBounds exception will be thrown. 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return Length of message less header, or -1 on end of stream. 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @throws IOException 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int readRilMessage(InputStream is, byte[] buffer) 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throws IOException { 4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int countRead; 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int offset; 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int remaining; 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageLength; 4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // First, read in the length of the message 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = 4; 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 425fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message length"); 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageLength = ((buffer[0] & 0xff) << 24) 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[1] & 0xff) << 16) 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[2] & 0xff) << 8) 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | (buffer[3] & 0xff); 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Then, re-use the buffer and read in the message itself 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = messageLength; 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 445fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " remaining=" + remaining); 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return messageLength; 4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILReceiver implements Runnable { 4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] buffer; 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver() { 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville buffer = new byte[RIL_MAX_COMMAND_BYTES]; 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 464cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int retryCount = 0; 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {for (;;) { 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s = null; 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress l; 4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = new LocalSocket(); 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville l = new LocalSocketAddress(SOCKET_NAME_RIL, 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress.Namespace.RESERVED); 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.connect(l); 4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex){ 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s != null) { 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.close(); 4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex2) { 4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //ignore failure to close after failure to connect 4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // don't print an error message after the the first time 4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // or after the 8th time 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (retryCount == 8) { 491fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e (RILJ_LOG_TAG, 4920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket after " + retryCount 4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " times, continuing to retry silently"); 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (retryCount > 0 && retryCount < 8) { 496fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i (RILJ_LOG_TAG, 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket; retrying after timeout"); 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException er) { 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount++; 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville continue; 5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount = 0; 5110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = s; 513fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length = 0; 5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InputStream is = mSocket.getInputStream(); 5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (;;) { 5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Parcel p; 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = readRilMessage(is, buffer); 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length < 0) { 5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // End-of-stream reached 5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p = Parcel.obtain(); 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.unmarshall(buffer, 0, length); 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.setDataPosition(0); 5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 533fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "Read packet: " + length + " bytes"); 5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse(p); 5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.recycle(); 5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (java.io.IOException ex) { 539fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex); 5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (Throwable tr) { 542fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception read length=" + length + 5430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 546fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket"); 5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState (RadioState.RADIO_UNAVAILABLE); 5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket.close(); 5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = null; 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest.resetSerial(); 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Clear request list on close 560892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt clearRequestList(RADIO_NOT_AVAILABLE, false); 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 562fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG,"Uncaught exception", tr); 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* We're disconnected so we don't know the ril version */ 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(-1); 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructors 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(context); 5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5807cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscription = cdmaSubscription; 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = preferredNetworkType; 5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = RILConstants.NO_PHONE; 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 586fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, RILJ_LOG_TAG); 5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.setReferenceCounted(false); 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 5907cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount = 0; 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread = new HandlerThread("RILSender"); 5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread.start(); 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mSenderThread.getLooper(); 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender = new RILSender(looper); 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Context.CONNECTIVITY_SERVICE); 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Starting RILReceiver"); 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiver = new RILReceiver(); 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread.start(); 6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IntentFilter filter = new IntentFilter(); 6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville context.registerReceiver(mIntentReceiver, filter); 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 617cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message result) { 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6271260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void getImsRegistrationState(Message result) { 6281260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_REGISTRATION_STATE, result); 6291260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 6301260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) { 6311260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6321260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 6331260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 6341260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 6351260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setOnNITZTime(h, what, obj); 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Send the last NITZ time if we have it 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLastNITZTimeInfo != null) { 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant( 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = null; 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 649cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIccCardStatus(Message result) { 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin(String pin, Message result) { 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(pin, null, result); 6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 67422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 67522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 67622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(puk, newPin, null, result); 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 69422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 69522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 69622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 69722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2(String pin, Message result) { 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(pin, null, result); 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 71522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 71622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 71722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 73522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 73622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 73722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 73822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 75622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 75722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin); 75822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 75922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 77722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 77822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin2); 77922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 78022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 785cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 79222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 79322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 79422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPwd); 79522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPwd); 7960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 800cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 80722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 80822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(netpin); 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 813cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCurrentCalls (Message result) { 8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 823cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Deprecated public void 8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getPDPContextList(Message result) { 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 829cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(Message result) { 8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 839cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial (String address, int clirMode, Message result) { 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(address, clirMode, null, result); 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 845cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 85022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 85122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfo == null) { 85422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(0); // UUS information is absent 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 85622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); // UUS information is present 85722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getType()); 85822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getDcs()); 85922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(uusInfo.getUserData()); 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 867cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSI(Message result) { 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 873cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(String aid, Message result) { 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 87822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 87922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "> getIMSI: " + requestToString(rr.mRequest) 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 888cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEI(Message result) { 8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 898cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEISV(Message result) { 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 909cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupConnection (int gsmIndex, Message result) { 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gsmIndex); 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 91922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 92022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 925cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupWaitingOrBackground (Message result) { 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 936cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupForegroundResumeBackground (Message result) { 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 948cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchWaitingOrHoldingAndActive (Message result) { 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 960cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville conference (Message result) { 9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 972cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 97722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 97822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1:0); 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 983cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 990cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville separateConnection (int gsmIndex, Message result) { 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + gsmIndex); 9980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 99922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 100022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1005cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acceptCall (Message result) { 10080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 10100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1016cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rejectCall (Message result) { 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1027cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville explicitCallTransfer (Message result) { 10300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1038cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastCallFailCause (Message result) { 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1052cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 1053cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastPdpFailCause (Message result) { 10560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (result); 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The preferred new alternative to getLastPdpFailCause 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1062cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (Message result) { 10650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1073cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setMute (boolean enableMute, Message response) { 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enableMute); 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 108222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 108322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enableMute ? 1 : 0); 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1088cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getMute (Message response) { 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 10930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1099cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getSignalStrength (Message result) { 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1110cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getVoiceRegistrationState (Message result) { 11130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1121cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataRegistrationState (Message result) { 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 11260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1132cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 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 1143cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendDtmf(char c, Message result) { 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 115122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1156cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville startDtmf(char c, Message result) { 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 116422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1169cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville stopDtmf(Message result) { 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1180cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 118522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 118622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(dtmfString); 118722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(on)); 118822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(off)); 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + dtmfString); 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11961260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa private void 11971260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest (RILRequest rr, String smscPDU, String pdu) { 11981260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(2); 11991260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeString(smscPDU); 12001260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeString(pdu); 12011260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 12021260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12081260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest(rr, smscPDU, pdu); 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12151260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa private void 12161260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(RILRequest rr, byte[] pdu) { 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int address_nbr_of_digits; 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int subaddr_nbr_of_digits; 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int bearerDataLength; 12200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataInputStream dis = new DataInputStream(bais); 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 122422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //teleServiceId 122522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.readInt()); //servicePresent 122622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //serviceCategory 122722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_digit_mode 122822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_mode 122922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_ton 123022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_plan 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville address_nbr_of_digits = (byte) dis.read(); 123222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) address_nbr_of_digits); 12330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 123422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); // address_orig_bytes[i] 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 123622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //subaddressType 123722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.read()); //subaddr_odd 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 123922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) subaddr_nbr_of_digits); 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 124122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 12420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville bearerDataLength = dis.read(); 124522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bearerDataLength); 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < bearerDataLength; i++){ 124722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //bearerData[i] 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }catch (IOException ex){ 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ex); 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12531260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 12541260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12551260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 12561260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendCdmaSms(byte[] pdu, Message result) { 12571260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr 12581260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 12591260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12601260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(rr, pdu); 12611260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12621260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12631260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12641260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 12651260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 12661260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12671260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 12681260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendImsGsmSms (String smscPDU, String pdu, int retry, int messageRef, 12691260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa Message result) { 12701260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_SEND_SMS, result); 12711260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12721260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(1); //RIL_IMS_SMS_Format.FORMAT_3GPP 12731260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeByte((byte)retry); 12741260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(messageRef); 12751260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12761260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest(rr, smscPDU, pdu); 12771260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12781260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12791260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12801260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 12811260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 12821260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12831260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 12841260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message result) { 12851260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_SEND_SMS, result); 12861260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12871260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(2); //RIL_IMS_SMS_Format.FORMAT_3GPP2 12881260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeByte((byte)retry); 12891260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(messageRef); 12901260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 12911260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(rr, pdu); 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1298cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 130322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 130422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1306cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1307cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1308cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1313cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 13160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 131822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 131922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1321cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1323cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1328cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 133522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 133622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 133722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smsc); 13380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1339cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1340cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1341cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1346cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 135322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 135422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 13550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1356cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1357cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1358cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 13640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Translates EF_SMS status bits to a status value compatible with 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SMS AT commands. See TS 27.005 3.1. 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int translateStatus(int status) { 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(status & 0x7) { 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_READ: 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 3; 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 2; 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Default to READ. 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1383cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String user, String password, String authType, String protocol, 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(7); 13920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(radioTechnology); 139422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(profile); 139522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(apn); 139622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(user); 139722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 139822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(authType); 139922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(protocol); 14000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + profile + " " + apn + " " + user + " " 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + password + " " + authType + " " + protocol); 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1409cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville deactivateDataCall(int cid, int reason, Message result) { 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 14140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 141522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 141622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(cid)); 141722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(reason)); 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1425cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(boolean on, Message result) { 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 14290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 143022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 143122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (on ? " on" : " off")); 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1441cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 14460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 144722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 144822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 14490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 14520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1456cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 14610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 146222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 146322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 1 : 0); 146422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1472cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 147822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 14790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // cause code according to X.S004-550E 148022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1488cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 14910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 14930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 149422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 149522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(success ? "1" : "0"); 149622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ackPdu); 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ' ' + success + " [" + ackPdu + ']'); 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1504cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, Message result) { 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 15090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1510cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 15130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, String aid, Message result) { 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 15160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 15180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 151922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(command); 152022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(fileid); 152122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(path); 152222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p1); 152322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p2); 152422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p3); 152522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(data); 152622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin2); 152722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 15280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 15300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 15310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(command) 15320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 15330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " path: " + path + "," 15340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + p1 + "," + p2 + "," + p3 15350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 15360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1540cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCLIR(Message result) { 15430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1551cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCLIR(int clirMode, Message result) { 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count ints 155822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 15590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 156022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 15610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + clirMode); 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1568cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallWaiting(int serviceClass, Message response) { 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 15730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 157422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 157522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + serviceClass); 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1583cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 15880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 158922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 159022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 159122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enable + ", " + serviceClass); 15950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1599cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeAutomatic(Message response) { 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1611cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + operatorNumeric); 16200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 162122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(operatorNumeric); 16220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1626cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getNetworkSelectionMode(Message response) { 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1638cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getAvailableNetworks(Message response) { 16410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1650cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallForward(int action, int cfReason, int serviceClass, 16530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message response) { 16540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 16560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 165722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(action); 165822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 165922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 166022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 166122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 166222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (timeSeconds); 16630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + action + " " + cfReason + " " + serviceClass 16660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + timeSeconds); 16670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1671cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallForwardStatus(int cfReason, int serviceClass, 16740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message response) { 16750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 16770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 167822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); // 2 is for query action, not in used anyway 167922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 168022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 168122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 168222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 168322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (0); 16840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + cfReason + " " + serviceClass); 16870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1691cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCLIP(Message response) { 16940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 16960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1703cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getBasebandVersion (Message response) { 17060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 17080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 17170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 17190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 17240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 17260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 172788e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 172888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + serviceClass 172988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + appId + "]"); 17300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 173222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(4); 17330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 173522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 17360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 173822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLock (String facility, boolean lockState, String password, 17460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message response) { 17470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 17480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 17530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, String appId, Message response) { 17540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String lockString; 17550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 17570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 175888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 175988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + lockState 176088e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + serviceClass + " " + appId + "]"); 17610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 176322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(5); 17640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 176522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 17660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville lockString = (lockState)?"1":"0"; 176722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(lockString); 176822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 176922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 177022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1776cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendUSSD (String ussdString, Message response) { 17790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 17810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 178272000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGD) { 178372000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO String logUssdString = "*******"; 178472000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGV) logUssdString = ussdString; 178572000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 178672000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO + " " + logUssdString); 178772000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO } 17880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 178922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ussdString); 17900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 1795cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 17970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 17990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 18010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest)); 18020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1807cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 18090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 18110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1817cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 18190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 18210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 18240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 182522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(data); 18260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1831cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 18330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 18350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 183822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeStringArray(strings); 18390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 18450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 18470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1849cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message response) { 18510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 18530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 185422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 185522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bandMode); 18560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + bandMode); 18590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 18650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with every 18680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * element representing one avialable BM_*_BAND 18690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1870cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message response) { 18720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 18740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1884cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 18860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 18880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 189122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 18920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1898cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 19000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 19020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1912cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 19140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 19160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + '[' + contents + ']'); 19190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 192022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1927cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 19290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 19300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 19330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 19340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] param = new int[1]; 19380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville param[0] = accept ? 1 : 0; 193922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeIntArray(param); 19400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 19470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCurrentPreferredNetworkType() { 19480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 19490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 19500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int mSetPreferredNetworkType; 19520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1956cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message response) { 19580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 19600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 196122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 196222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(networkType); 19630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSetPreferredNetworkType = networkType; 19650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = networkType; 19660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + networkType); 19690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1976cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message response) { 19780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 19800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1989cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 19910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 19930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2002cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 20040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 200522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 200622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 20070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + enable); 20100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2017cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 20190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 20200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2029cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 20310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 20320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 203322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 20340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + address); 20370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2044cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 20460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 204722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 204822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(available ? 1 : 0); 20490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + available); 20520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2059cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 20610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 20620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2071cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 20730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 20740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2083cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 20850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 20860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numOfConfig = config.length; 208822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(numOfConfig); 20890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < numOfConfig; i++) { 209122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromServiceId()); 209222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToServiceId()); 209322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromCodeScheme()); 209422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToCodeScheme()); 209522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].isSelected() ? 1 : 0); 20960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 20990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 21000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " with " + numOfConfig + " configs : "); 21010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numOfConfig; i++) { 21020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(config[i].toString()); 21030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2112cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 21140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 21150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 211622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 211722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 : 1); 21180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 21250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void sendScreenState(boolean on) { 21270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 212822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 212922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 21300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 21320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 21330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2137cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void 21390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onRadioAvailable() { 21400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // In case screen state was lost (due to process crash), 21410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // this ensures that the RIL knows the correct screen state. 21420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2143cf57b29a755b0249da687201bcc726941d37d42bBin Li PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 2144cf57b29a755b0249da687201bcc726941d37d42bBin Li sendScreenState(pm.isScreenOn()); 21450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RadioState getRadioStateFromInt(int stateInt) { 21480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState state; 21490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* RIL_RadioState ril.h */ 21510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(stateInt) { 21520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 0: state = RadioState.RADIO_OFF; break; 21530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 21540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 10: state = RadioState.RADIO_ON; break; 21550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 21570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 21580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Unrecognized RIL_RadioState: " + stateInt); 21590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 21610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void switchToRadioState(RadioState newState) { 21640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(newState); 21650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Holds a PARTIAL_WAKE_LOCK whenever 21690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 21700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * b) There is a request pending to be sent out. 21710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 21720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 21730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * happen often. 21740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 21750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock() { 21780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.acquire(); 21807cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount++; 21810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 21840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 21850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21897cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock() { 21900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21917cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (mWakeLockCount > 1) { 21927cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount--; 21937cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } else { 21947cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount = 0; 21950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 21967cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22017cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // true if we had the wakelock 22027cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt private boolean 22037cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt clearWakeLock() { 22047cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt synchronized (mWakeLock) { 22057cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (mWakeLockCount == 0 && mWakeLock.isHeld() == false) return false; 22066613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, "NOTE: mWakeLockCount is " + mWakeLockCount + "at time of clearing"); 22077cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount = 0; 22087cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLock.release(); 22097cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 22107cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return true; 22117cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 22127cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 22137cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 22140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(RILRequest rr) { 22160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg; 22170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSocket == null) { 22190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 22200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 22250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock(); 22270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.sendToTarget(); 22290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse (Parcel p) { 22330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int type; 22340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville type = p.readInt(); 22360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (type == RESPONSE_UNSOLICITED) { 22380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (p); 22390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (type == RESPONSE_SOLICITED) { 22407cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt RILRequest rr = processSolicited (p); 22417cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr != null) { 22427cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr.release(); 22437cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock(); 22447cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 22450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2249892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * Release each request in mRequestList then clear the list 22500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param error is the RIL_Errno sent back 2251892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * @param loggable true means to print all requests in mRequestList 22520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2253892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt private void clearRequestList(int error, boolean loggable) { 22540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 2255892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2256892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 22570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 22586613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, "clearRequestList " + 22597cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt " mWakeLockCount=" + mWakeLockCount + 22600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 22610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count ; i++) { 22647cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.valueAt(i); 22650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2266fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " + 22670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest)); 22680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, null); 22700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22717cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt decrementWakeLock(); 22720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2273892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.clear(); 22740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 22787cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt RILRequest rr = null; 2279892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 22807cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.get(serial); 22817cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr != null) { 22827cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mRequestList.remove(serial); 22830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22867cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 22870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22897cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt private RILRequest 22900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (Parcel p) { 22910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serial, error; 22920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean found = false; 22930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serial = p.readInt(); 22950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville error = p.readInt(); 22960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 22980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = findAndRemoveRequestFromList(serial); 23000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 2302fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "Unexpected solicited response! sn: " 23030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + serial + " error: " + error); 23047cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return null; 23050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret = null; 23080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error == 0 || p.dataAvail() > 0) { 23100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // either command succeeds or command fails but with data payload 23110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch (rr.mRequest) { 23120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* 23130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 23140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 23150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 23160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 23170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 23180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 23190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 23200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 23210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 23220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 23230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 23240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 23250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 23260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 23270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 23280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 23290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 23300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 23310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mTestingEmergencyCall.getAndSet(false)) { 23320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 23330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("testing emergency call, notify ECM Registrants"); 23340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 23350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = responseVoid(p); 23380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 23390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 23410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 23420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 23430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 23450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 23460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 23470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 23480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 23490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 23500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 23510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 23520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 23530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 23540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 23550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 23560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 23570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 23580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 23590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 23600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 23610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 23620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 23630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 23640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 23650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 23660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 23670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 23680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 23690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 23700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 23710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 23720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 23730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 23740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 23750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 23760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 23770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 23780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 23790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 23800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 23810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 23830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 23840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 23850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 23860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 23870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 23880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 23890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 23900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 23910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 23920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 23930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 23940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 23950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 23960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 23970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 23980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 23990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 24000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 24010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 24020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 24030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 24040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 24050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 24060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 24070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 24080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 24090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 24100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 24110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 24120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 24130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 24140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 24170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 24200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 24210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 24220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 24230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 24240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 24250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 24260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 24270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 24280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 24290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 24300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 24310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 24320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 24330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 24345fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 24355fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: ret = responseVoid(p); break; 24365d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi case RIL_REQUEST_SET_INITIAL_ATTACH_APN: ret = responseVoid(p); break; 24371260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_REGISTRATION_STATE: ret = responseInts(p); break; 24381260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_SEND_SMS: ret = responseSMS(p); break; 24390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 24400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 24410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; 24420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 24430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Exceptions here usually mean invalid RIL responses 24440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2445fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, rr.serialString() + "< " 24460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 24470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " exception, possible invalid RIL response", tr); 24480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 24500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, null, tr); 24510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24537cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 24540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2457f860a3f42f87c9c8572623aff33349168d689477Wink Saville // Here and below fake RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, see b/7255789. 2458f860a3f42f87c9c8572623aff33349168d689477Wink Saville // This is needed otherwise we don't automatically transition to the main lock 2459f860a3f42f87c9c8572623aff33349168d689477Wink Saville // screen when the pin or puk is entered incorrectly. 2460be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville switch (rr.mRequest) { 2461be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK: 2462be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: 2463be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville if (mIccStatusChangedRegistrants != null) { 2464f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2465f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON enter sim puk fakeSimStatusChanged: reg count=" 2466f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2467f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2468be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2469be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2470be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville break; 2471be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2472be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville 24730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error != 0) { 2474f860a3f42f87c9c8572623aff33349168d689477Wink Saville switch (rr.mRequest) { 2475f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: 2476f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: 2477f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: 2478f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: 2479f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: 2480f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (mIccStatusChangedRegistrants != null) { 2481f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2482f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON some errors fakeSimStatusChanged: reg count=" 2483f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2484f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2485f860a3f42f87c9c8572623aff33349168d689477Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2486f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2487f860a3f42f87c9c8572623aff33349168d689477Wink Saville break; 2488f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2489f860a3f42f87c9c8572623aff33349168d689477Wink Saville 24900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, ret); 24917cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } else { 24920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24937cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 24947cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt + " " + retToString(rr.mRequest, ret)); 24950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24967cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr.mResult != null) { 24977cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt AsyncResult.forMessage(rr.mResult, ret, null); 24987cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr.mResult.sendToTarget(); 24997cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 25000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25017cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 25020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String 25050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retToString(int req, Object ret) { 25060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret == null) return ""; 25070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (req) { 25080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Don't log these return values, for privacy's sake. 25090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: 25100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: 25110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: 25120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!RILJ_LOGV) { 25130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 25140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ""; 25150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb; 25190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s; 25200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length; 25210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret instanceof int[]){ 25220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] intArray = (int[]) ret; 25230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = intArray.length; 25240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(intArray[i++]); 25280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(intArray[i++]); 25300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (ret instanceof String[]) { 25350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] strings = (String[]) ret; 25360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = strings.length; 25370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(strings[i++]); 25410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(strings[i++]); 25430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 25480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 25490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (DriverCall dc : calls) { 25510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("[").append(dc).append("] "); 25520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 25550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> cells; 25560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cells = (ArrayList<NeighboringCellInfo>) ret; 25570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (NeighboringCellInfo cell : cells) { 25590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(cell).append(" "); 25600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 25630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = ret.toString(); 25640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 25660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 25690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (Parcel p) { 25700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response; 25710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret; 25720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readInt(); 25740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch(response) { 25760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 25770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 25780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 25790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 25800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 25810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 25830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 25840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 25850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 25860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 25870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 25880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 25890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 25900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 25910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 25920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 25930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 25940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 25950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 25960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 25970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 25990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 26000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 26010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 26020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 26030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 26040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 26050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 26060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 26070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 26080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 26090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 26100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 26110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 26120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 26130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 26140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 26150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 26160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 26175fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 26181260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 26190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 26210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 26220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; (implied) 26230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 2624fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Exception processing unsol response: " + response + 26250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 26260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 26270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(response) { 26300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 26310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* has bonus radio state int */ 26320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 26330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 26340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchToRadioState(newState); 26360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26371260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: 26381260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) unsljLog(response); 26391260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 26401260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa mImsNetworkStateChangedRegistrants 26411260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa .notifyRegistrants(new AsyncResult(null, null, null)); 26421260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa break; 26430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 26440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants 26470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 26500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceNetworkStateRegistrants 26530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 26560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME this should move up a layer 26590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String a[] = new String[2]; 26600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville a[1] = (String)ret; 26620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 26640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromCMT(a); 26660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmSmsRegistrant != null) { 26670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmSmsRegistrant 26680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 26690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 26730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsStatusRegistrant != null) { 26760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsStatusRegistrant.notifyRegistrant( 26770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 26780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 26810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] smsIndex = (int[])ret; 26840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(smsIndex.length == 1) { 26860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsOnSimRegistrant != null) { 26870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsOnSimRegistrant. 26880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 26890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 26910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 26920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + smsIndex.length); 26930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: 26960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] resp = (String[])ret; 26970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (resp.length < 2) { 26990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = new String[2]; 27000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[0] = ((String[])ret)[0]; 27010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[1] = null; 27020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 27040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 27050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyRegistrant( 27060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, resp, null)); 27070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 27100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // has bonus long containing milliseconds since boot that the NITZ 27130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // time was received 27140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long nitzReceiveTime = p.readLong(); 27150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object[] result = new Object[2]; 27170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[0] = ret; 27190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[1] = Long.valueOf(nitzReceiveTime); 27200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 27220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 27230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ignoreNitz) { 27250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 27260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNITZTimeRegistrant != null) { 27280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 27300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 27310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // in case NITZ time registrant isnt registered yet 27330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = result; 27340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 27390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note this is set to "verbose" because it happens 27400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // frequently 27410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 27420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalStrengthRegistrant != null) { 27440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalStrengthRegistrant.notifyRegistrant( 27450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 27490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 27520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 27550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSsnRegistrant != null) { 27580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant( 27590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: 27640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatSessionEndRegistrant != null) { 27670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatSessionEndRegistrant.notifyRegistrant( 27680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 27730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatProCmdRegistrant != null) { 27760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatProCmdRegistrant.notifyRegistrant( 27770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 27820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatEventRegistrant != null) { 27850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatEventRegistrant.notifyRegistrant( 27860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: 27910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatCallSetUpRegistrant != null) { 27940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatCallSetUpRegistrant.notifyRegistrant( 27950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 28000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 28030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 28040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: 28080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccRefreshRegistrants != null) { 28110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccRefreshRegistrants.notifyRegistrants( 28120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: 28170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingRegistrant != null) { 28200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingRegistrant.notifyRegistrant( 28210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 28260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 28270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRestrictedStateRegistrant != null) { 28280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRestrictedStateRegistrant.notifyRegistrant( 28290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 28340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccStatusChangedRegistrants != null) { 28370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 28380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 28420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms = (SmsMessage) ret; 28450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSmsRegistrant != null) { 28470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSmsRegistrant 28480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 28490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 28530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmBroadcastSmsRegistrant != null) { 28560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmBroadcastSmsRegistrant 28570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 28580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 28620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 28650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 28660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 28700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 28730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 28740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 28780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCallWaitingInfoRegistrants != null) { 28810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 28820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 28870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mOtaProvisionRegistrants != null) { 28900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 28910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 28960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 28970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 28990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 29000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (ClassCastException e) { 2901fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 29020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 29060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 29070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(rec); 29080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 29120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 29130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUnsolOemHookRawRegistrant != null) { 29140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 29150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: 29190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 29200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingbackToneRegistrants != null) { 29210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean playtone = (((int[])ret)[0] == 1); 29220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackToneRegistrants.notifyRegistrants( 29230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, playtone, null)); 29240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 29280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResendIncallMuteRegistrants != null) { 29310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResendIncallMuteRegistrants.notifyRegistrants( 29320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 29370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mVoiceRadioTechChangedRegistrants != null) { 29400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 29410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 29420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 29460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 29490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 29500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 29550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaPrlChangedRegistrants != null) { 29580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 29590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 29640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 29670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 29680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, null, null)); 29690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 29730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Initial conditions 29760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(false, null); 29770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mPreferredNetworkType, null); 29780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 2979121c056d398b68e2bd2d35e6f5c2730fa7fb81c9Wink Saville setCellInfoListRate(Integer.MAX_VALUE, null); 29800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 29810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29835fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: { 29845fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29855fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 29865fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (mRilCellInfoListRegistrants != null) { 29875fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville mRilCellInfoListRegistrants.notifyRegistrants( 29885fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville new AsyncResult (null, ret, null)); 29895fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29905fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville break; 29915fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 29960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 29970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 29980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 29990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 30000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 30010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilVersion = rilVer; 30020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRilConnectedRegistrants != null) { 30030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilConnectedRegistrants.notifyRegistrants( 30040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 30050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseInts(Parcel p) { 30100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 30110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 30120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = p.readInt(); 30140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 30160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInts ; i++) { 30180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 30190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseVoid(Parcel p) { 30270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 30280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallForward(Parcel p) { 30320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInfos; 30330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CallForwardInfo infos[]; 30340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInfos = p.readInt(); 30360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos = new CallForwardInfo[numInfos]; 30380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInfos ; i++) { 30400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i] = new CallForwardInfo(); 30410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].status = p.readInt(); 30430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].reason = p.readInt(); 30440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].serviceClass = p.readInt(); 30450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].toa = p.readInt(); 30460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].number = p.readString(); 30470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].timeSeconds = p.readInt(); 30480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return infos; 30510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSuppServiceNotification(Parcel p) { 30550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification notification = new SuppServiceNotification(); 30560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.notificationType = p.readInt(); 30580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.code = p.readInt(); 30590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.index = p.readInt(); 30600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.type = p.readInt(); 30610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 30620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 30640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaSms(Parcel p) { 30680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 30690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromParcel(p); 30700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sms; 30720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseString(Parcel p) { 30760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response; 30770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readString(); 30790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseStrings(Parcel p) { 30850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response[]; 30870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readStringArray(); 30890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseRaw(Parcel p) { 30950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte response[]; 30970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.createByteArray(); 30990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSMS(Parcel p) { 31050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageRef, errorCode; 31060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ackPDU; 31070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageRef = p.readInt(); 31090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ackPDU = p.readString(); 31100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville errorCode = p.readInt(); 31110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 31130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseICC_IO(Parcel p) { 31200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int sw1, sw2; 31210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message ret; 31220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw1 = p.readInt(); 31240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw2 = p.readInt(); 31250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s = p.readString(); 31270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 31290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw1) 31300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 31310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + s); 31320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new IccIoResult(sw1, sw2, s); 31340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseIccCardStatus(Parcel p) { 3138e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 3139e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 3140e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 3141e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 3142e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 3143e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 3144e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 3145e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 31460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numApplications = p.readInt(); 31470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // limit to maximum allowed applications 31490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 31500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 31510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3152e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 31530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numApplications ; i++) { 3154e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3155e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3156e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3157e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3158e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3159e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3160e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3161e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3162e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3163e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 31640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3165e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 31660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSimRefresh(Parcel p) { 31700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IccRefreshResponse response = new IccRefreshResponse(); 31710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.refreshResult = p.readInt(); 31730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.efId = p.readInt(); 31740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.aid = p.readString(); 31750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallList(Parcel p) { 31800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 31810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int voiceSettings; 31820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> response; 31830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DriverCall dc; 31840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 31860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DriverCall>(num); 31870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) { 31890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: num=" + num + 31900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 31910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 31920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 31940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc = new DriverCall(); 31950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 31970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.index = p.readInt(); 31980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.TOA = p.readInt(); 31990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMpty = (0 != p.readInt()); 32000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMT = (0 != p.readInt()); 32010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.als = p.readInt(); 32020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville voiceSettings = p.readInt(); 32030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 32040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 32050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = p.readString(); 32060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int np = p.readInt(); 32070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 32080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.name = p.readString(); 32090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.namePresentation = p.readInt(); 32100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int uusInfoPresent = p.readInt(); 32110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfoPresent == 1) { 32120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo = new UUSInfo(); 32130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setType(p.readInt()); 32140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setDcs(p.readInt()); 32150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] userData = p.createByteArray(); 32160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setUserData(userData); 32170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 32180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 32190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getUserData().length)); 32200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (string)=" 32210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + new String(dc.uusInfo.getUserData())); 32220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (hex): " 32230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 32240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : NOT present!"); 32260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 32290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 32300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(dc); 32320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dc.isVoicePrivacy) { 32340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 32350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is enabled"); 32360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 32380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is disabled"); 32390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Collections.sort(response); 32430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 32450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 32460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: call ended, testing emergency call," + 32470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " notify ECM Registrants"); 32480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 32490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3255ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville private DataCallResponse getDataCallResponse(Parcel p, int version) { 3256ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall = new DataCallResponse(); 32570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = version; 32590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 5) { 32600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.status = p.readInt(); 32690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.suggestedRetryTime = p.readInt(); 32700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 3274ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville if ((dataCall.status == DcFailCause.NONE.getErrorCode()) && 32750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TextUtils.isEmpty(dataCall.ifname)) { 3276ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville throw new RuntimeException("getDataCallResponse, no ifname"); 32770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 32830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 32840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 32850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 32870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 32880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 32890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 32920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseDataCallList(Parcel p) { 3296ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville ArrayList<DataCallResponse> response; 32970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 33000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 33010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3302ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response = new ArrayList<DataCallResponse>(num); 33030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 3304ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response.add(getDataCallResponse(p, ver)); 33050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 33080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSetupDataCall(Parcel p) { 33120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 33130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 33140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 33150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3316ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall; 33170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ver < 5) { 3319ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = new DataCallResponse(); 33200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = ver; 33210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 33220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 33230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 33240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 33260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 33280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 33290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 33300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 4) { 33320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 33330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 33340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 33350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 33360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 5) { 33390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 33400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 33410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 33420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 33430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num != 1) { 33470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 33490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " got " + num); 33500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3351ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = getDataCallResponse(p, ver); 33520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 33550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseOperatorInfos(Parcel p) { 33590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String strings[] = (String [])responseStrings(p); 33600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<OperatorInfo> ret; 33610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (strings.length % 4 != 0) { 33630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 33650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + strings.length + " strings, expected multible of 4"); 33660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 33690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < strings.length ; i += 4) { 33710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret.add ( 33720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new OperatorInfo( 33730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+0], 33740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+1], 33750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+2], 33760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+3])); 33770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ret; 33800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCellList(Parcel p) { 33840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num, rssi; 33850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String location; 33860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> response; 33870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NeighboringCellInfo cell; 33880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 33900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<NeighboringCellInfo>(); 33910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Determine the radio access type 33930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String radioString = SystemProperties.get( 33940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 33950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int radioType; 33960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioString.equals("GPRS")) { 33970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_GPRS; 33980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("EDGE")) { 33990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_EDGE; 34000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("UMTS")) { 34010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UMTS; 34020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSDPA")) { 34030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSDPA; 34040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSUPA")) { 34050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSUPA; 34060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSPA")) { 34070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSPA; 34080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 34090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UNKNOWN; 34100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Interpret the location based on radio access type 34130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 34140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 34150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rssi = p.readInt(); 34160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville location = p.readString(); 34170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 34180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(cell); 34190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGetPreferredNetworkType(Parcel p) { 34250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int [] response = (int[]) responseInts(p); 34260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response.length >= 1) { 34280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Since this is the response for getPreferredNetworkType 34290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we'll assume that it should be the value we want the 34300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // vendor ril to take if we reestablish a connection to it. 34310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = response[0]; 34320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGmsBroadcastConfig(Parcel p) { 34370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 34380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<SmsBroadcastConfigInfo> response; 34390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsBroadcastConfigInfo info; 34400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 34420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 34430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 34450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromId = p.readInt(); 34460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toId = p.readInt(); 34470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromScheme = p.readInt(); 34480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toScheme = p.readInt(); 34490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean selected = (p.readInt() == 1); 34500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 34520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville toScheme, selected); 34530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(info); 34540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaBroadcastConfig(Parcel p) { 34600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numServiceCategories; 34610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 34620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numServiceCategories = p.readInt(); 34640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numServiceCategories == 0) { 34660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: The logic of providing default values should 34670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not be done by this transport layer. And needs to 34680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // be done by the vendor ril or application logic. 34690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 34710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Faking a default record for all possible records. 34740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 34750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 34770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // default language and selection status to false for all. 34780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 34790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 34800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 1] = 1; 34810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 2] = 0; 34820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 34840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 34860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = numServiceCategories; 34890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1 ; i < numInts; i++) { 34900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 34910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSignalStrength(Parcel p) { 3499e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // Assume this is gsm, but doesn't matter as ServiceStateTracker 3500e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // sets the proper value. 3501e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville SignalStrength signalStrength = SignalStrength.makeSignalStrengthFromRilParcel(p); 35025b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 35030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private ArrayList<CdmaInformationRecords> 35060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaInformationRecord(Parcel p) { 35070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numberOfInfoRecs; 35080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> response; 35090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 35110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Loop through all of the information records unmarshalling them 35120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * and converting them to Java Objects. 35130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 35140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numberOfInfoRecs = p.readInt(); 35150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 35160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 35180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 35190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(InfoRec); 35200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaCallWaiting(Parcel p) { 35270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 35280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 3530cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville notification.numberPresentation = 3531cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville CdmaCallWaitingNotification.presentationFromCLIP(p.readInt()); 35320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.name = p.readString(); 35330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.namePresentation = notification.numberPresentation; 35340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.isPresent = p.readInt(); 35350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signalType = p.readInt(); 35360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.alertPitch = p.readInt(); 35370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signal = p.readInt(); 35380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberType = p.readInt(); 35390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPlan = p.readInt(); 35400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 35420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallRing(Parcel p){ 35460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char response[] = new char[4]; 35470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = (char) p.readInt(); // isPresent 35490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[1] = (char) p.readInt(); // signalType 35500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[2] = (char) p.readInt(); // alertPitch 35510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[3] = (char) p.readInt(); // signal 35520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 35570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 35580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 35590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 35600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mDisplayInfoRegistrants != null) { 35610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 35630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 35660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalInfoRegistrants != null) { 35670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalInfoRegistrants.notifyRegistrants( 35690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 35720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNumberInfoRegistrants != null) { 35730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNumberInfoRegistrants.notifyRegistrants( 35750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 35780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRedirNumInfoRegistrants != null) { 35790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 35810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 35840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLineControlInfoRegistrants != null) { 35850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 35870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 35900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53ClirInfoRegistrants != null) { 35910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 35930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 35960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 35970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 35990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 36000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36045fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville private ArrayList<CellInfo> responseCellInfoList(Parcel p) { 36055fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville int numberOfInfoRecs; 36065fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville ArrayList<CellInfo> response; 36075fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36085fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 36095fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * Loop through all of the information records unmarshalling them 36105fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * and converting them to Java Objects. 36115fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 36125fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville numberOfInfoRecs = p.readInt(); 36135fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response = new ArrayList<CellInfo>(numberOfInfoRecs); 36145fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36155fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 36165fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville CellInfo InfoRec = CellInfo.CREATOR.createFromParcel(p); 36175fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response.add(InfoRec); 36185fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36195fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36205fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville return response; 36215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 36240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(int request) { 36250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 36260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 36270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 36280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 36290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 36300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 36310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 36320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 36330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 36340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 36350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 36360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 36370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 36380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 36390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 36400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: return "DIAL"; 36410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 36420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 36430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 36440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 36450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 36460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 36470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: return "UDUB"; 36480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 36490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 36500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 36510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 36520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 36530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 36540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: return "DTMF"; 36550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 36560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 36570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 36580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 36590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 36600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 36610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 36620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 36630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 36640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 36650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 36660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 36670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 36680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 36690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 36700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 36710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 36720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 36730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 36740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 36750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 36760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 36770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 36780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 36790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 36800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 36810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 36820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 36830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 36840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 36850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 36860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 36870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 36880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 36890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 36900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 36910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 36920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 36930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 36940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 36950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 36960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 36970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 36980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 36990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 37000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 37010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 37020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 37030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 37040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 37050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 37060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 37070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 37080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 37090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 37100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 37110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 37120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 37130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 37140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 37150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 37160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 37170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 37180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 37190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 37200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 37210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 37220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 37230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 37240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 37250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 37260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 37270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 37280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 37290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 37300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 37310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 37320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 37330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 37340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 37350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 37360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 37370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 37380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 37395fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: return "RIL_REQUEST_GET_CELL_INFO_LIST"; 37405fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: return "RIL_REQUEST_SET_CELL_INFO_LIST_RATE"; 37415d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi case RIL_REQUEST_SET_INITIAL_ATTACH_APN: return "RIL_REQUEST_SET_INITIAL_ATTACH_APN"; 37421260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_REGISTRATION_STATE: return "RIL_REQUEST_IMS_REGISTRATION_STATE"; 37431260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_SEND_SMS: return "RIL_REQUEST_IMS_SEND_SMS"; 37440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown request>"; 37450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 37490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseToString(int request) 37500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville { 37510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 37520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 37530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 37540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 37550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 37560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 37570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 37580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 37590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 37600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 37610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 37620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 37630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 37640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 37650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 37660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 37670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 37680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 37690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 37700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 37710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 37720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 37730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 37740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 37750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 37760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 37770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 37780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 37790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 37800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 37810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 37820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 37830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 37840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 37850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 37865e1bc7508bd2f6cbe52ce1d7cb13194a0d265406Jiju Kinattingal case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONE"; 37870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 37880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 37890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 37900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 37910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 37920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 37935fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: return "UNSOL_CELL_INFO_LIST"; 37941260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: 37951260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa return "UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED"; 37961260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa default: return "<unknown response>"; 37970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLog(String msg) { 3801fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, msg); 38020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLogv(String msg) { 3805fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.v(RILJ_LOG_TAG, msg); 38060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLog(int response) { 38090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response)); 38100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogMore(int response, String more) { 38130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 38140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogRet(int response, Object ret) { 38170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 38180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogvRet(int response, Object ret) { 38210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 38220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 3826cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 38290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 38300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3836cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 38390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 38400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 38480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 38490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = phoneType; 38500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3855cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 38570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 38590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3868cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 38700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 38720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 387322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 387422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaRoamingType); 38750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaRoamingType); 38780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3885cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 38870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 38890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 389022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 389122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaSubscription); 38920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaSubscription); 38950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 39020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 39030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message response) { 39040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 39050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 39060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3915cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 39170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 39180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 39190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3928cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 39300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 39310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 39320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 393322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 393422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(ttyMode); 39350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + ttyMode); 39380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3945cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 39470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 39480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 39490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 395022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(FeatureCode); 39510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + FeatureCode); 39540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3958cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 39600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 39610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3965cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3966a63f55cf17629426d976830429a7612387532195Rika Brooks public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 39670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 39680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3969a63f55cf17629426d976830429a7612387532195Rika Brooks // Convert to 1 service category per config (the way RIL takes is) 3970a63f55cf17629426d976830429a7612387532195Rika Brooks ArrayList<CdmaSmsBroadcastConfigInfo> processedConfigs = 3971a63f55cf17629426d976830429a7612387532195Rika Brooks new ArrayList<CdmaSmsBroadcastConfigInfo>(); 3972a63f55cf17629426d976830429a7612387532195Rika Brooks for (CdmaSmsBroadcastConfigInfo config : configs) { 3973a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = config.getFromServiceCategory(); i <= config.getToServiceCategory(); i++) { 3974a63f55cf17629426d976830429a7612387532195Rika Brooks processedConfigs.add(new CdmaSmsBroadcastConfigInfo(i, 3975a63f55cf17629426d976830429a7612387532195Rika Brooks i, 3976a63f55cf17629426d976830429a7612387532195Rika Brooks config.getLanguage(), 3977a63f55cf17629426d976830429a7612387532195Rika Brooks config.isSelected())); 3978a63f55cf17629426d976830429a7612387532195Rika Brooks } 39790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3981a63f55cf17629426d976830429a7612387532195Rika Brooks CdmaSmsBroadcastConfigInfo[] rilConfigs = processedConfigs.toArray(configs); 398222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs.length); 3983a63f55cf17629426d976830429a7612387532195Rika Brooks for(int i = 0; i < rilConfigs.length; i++) { 398422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getFromServiceCategory()); 398522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getLanguage()); 398622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].isSelected() ? 1 : 0); 3987a63f55cf17629426d976830429a7612387532195Rika Brooks } 3988a63f55cf17629426d976830429a7612387532195Rika Brooks 3989a63f55cf17629426d976830429a7612387532195Rika Brooks if (RILJ_LOGD) { 3990a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3991a63f55cf17629426d976830429a7612387532195Rika Brooks + " with " + rilConfigs.length + " configs : "); 3992a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = 0; i < rilConfigs.length; i++) { 3993a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rilConfigs[i].toString()); 3994a63f55cf17629426d976830429a7612387532195Rika Brooks } 3995a63f55cf17629426d976830429a7612387532195Rika Brooks } 39960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4000cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 40010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 40020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 40030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 400422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 400522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 :1); 40060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 40130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 40140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4015cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 40160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message response) { 40170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 40180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4024cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 40250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 40260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 40270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 402822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(nonce); 40290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40355fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40365fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40375fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40385fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40395fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void getCellInfoList(Message result) { 40405fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CELL_INFO_LIST, result); 40415fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40425fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40435fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40445fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40455fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40465fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40475fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40485fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40495fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40505fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40515fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void setCellInfoListRate(int rateInMillis, Message response) { 40525fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog("setCellInfoListRate: " + rateInMillis); 40535fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, response); 40545fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40555fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(1); 40565fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(rateInMillis); 40575fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40585fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40595fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40605fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40615fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40625fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40635d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi public void setInitialAttachApn(String apn, String protocol, int authType, String username, 40645d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi String password, Message result) { 40655d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_INITIAL_ATTACH_APN, null); 40665d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 40675d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi if (RILJ_LOGD) riljLog("Set RIL_REQUEST_SET_INITIAL_ATTACH_APN"); 40685d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 40695d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(apn); 40705d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(protocol); 40715d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeInt(authType); 40725d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(username); 40735d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(password); 40745d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 40755d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 40765d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi + ", apn:" + apn + ", protocol:" + protocol + ", authType:" + authType 40775d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi + ", username:" + username + ", password:" + password); 40785d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 40795d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi send(rr); 40805d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi } 40815d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 40820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* (non-Javadoc) 40830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 40840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 40850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 40860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testingEmergencyCall() { 40870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 40880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mTestingEmergencyCall.set(true); 40890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 409205ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka pw.println("RIL: " + this); 40930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSocket=" + mSocket); 40940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSenderThread=" + mSenderThread); 40950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSender=" + mSender); 40960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 40970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiver=" + mReceiver); 40980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLock=" + mWakeLock); 40990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 4100892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 41017cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt synchronized (mWakeLock) { 41027cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt pw.println(" mWakeLockCount=" + mWakeLockCount); 41037cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 4104892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 41050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestList count=" + count); 41060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 41077cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt RILRequest rr = mRequestList.valueAt(i); 41080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 41090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 41120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 41130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 4115