RIL.java revision 5fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static com.android.internal.telephony.RILConstants.*; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.BroadcastReceiver; 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Intent; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.IntentFilter; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.ConnectivityManager; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocket; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocketAddress; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult; 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.HandlerThread; 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Looper; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager; 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.SystemProperties; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager.WakeLock; 445fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Savilleimport android.telephony.CellInfo; 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.NeighboringCellInfo; 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.PhoneNumberUtils; 47fa4fd4721082689c4b276f67b845e7be249cb8daWink Savilleimport android.telephony.Rlog; 485b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingamimport android.telephony.SignalStrength; 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsManager; 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsMessage; 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.text.TextUtils; 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 55d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardApplicationStatus; 56d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardStatus; 57d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccIoResult; 58d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccRefreshResponse; 59d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.cdma.CdmaInformationRecords; 62a63f55cf17629426d976830429a7612387532195Rika Brooksimport com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 63ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DcFailCause; 64ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Savilleimport com.android.internal.telephony.dataconnection.DataCallResponse; 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.ByteArrayInputStream; 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.DataInputStream; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileDescriptor; 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException; 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.InputStream; 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.PrintWriter; 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Collections; 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass RILRequest { 80cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final String LOG_TAG = "RilRequest"; 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Class Variables 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static int sNextSerial = 0; 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static Object sSerialMonitor = new Object(); 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static Object sPoolSync = new Object(); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static RILRequest sPool = null; 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int sPoolSize = 0; 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int MAX_POOL_SIZE = 4; 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mSerial; 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequest; 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message mResult; 9422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville Parcel mParcel; 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest mNext; 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Retrieves a new RILRequest instance from the pool. 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param request RIL_REQUEST_* 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result sent when operation completes 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return a RILRequest instance from the pool. 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static RILRequest obtain(int request, Message result) { 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = null; 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sPoolSync) { 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPool != null) { 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = sPool; 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = rr.mNext; 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mNext = null; 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize--; 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = new RILRequest(); 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sSerialMonitor) { 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mSerial = sNextSerial++; 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mRequest = request; 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult = result; 12522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = Parcel.obtain(); 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null && result.getTarget() == null) { 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new NullPointerException("Message target must not be null"); 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // first elements in any RIL Parcel 13222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(request); 13322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rr.mSerial); 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns a RILRequest instance to the pool. 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Note: This should only be called once per use. 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void release() { 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (sPoolSync) { 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPoolSize < MAX_POOL_SIZE) { 14622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mNext = sPool; 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = this; 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize++; 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult = null; 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest() { 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static void 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resetSerial() { 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sSerialMonitor) { 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sNextSerial = 0; 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serialString() { 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Cheesy way to do %04d 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb = new StringBuilder(8); 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String sn; 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sn = Integer.toString(mSerial); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //sb.append("J["); 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('['); 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('0'); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(sn); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(']'); 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sb.toString(); 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onError(int error, Object ret) { 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex; 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex = CommandException.fromRilErrno(error); 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 189fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville if (RIL.RILJ_LOGD) Rlog.d(LOG_TAG, serialString() + "< " 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + RIL.requestToString(mRequest) 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " error: " + ex); 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResult != null) { 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(mResult, ret, ex); 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult.sendToTarget(); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mParcel != null) { 19922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel.recycle(); 20022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel = null; 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * RIL implementation of the CommandsInterface. 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 212fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville static final String RILJ_LOG_TAG = "RILJ"; 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final boolean RILJ_LOGD = true; 214cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final boolean RILJ_LOGV = false; // STOPSHIP if true 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Wake lock timeout should be longer than the longest timeout in 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the vendor ril. 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket mSocket; 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mSenderThread; 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILSender mSender; 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread mReceiverThread; 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver mReceiver; 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville WakeLock mWakeLock; 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mWakeLockTimeout; 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of requests pending to be sent out, it increases before calling 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // EVENT_SEND and decreases while handling EVENT_SEND. It gets cleared while 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT occurs. 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequestMessagesPending; 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of requests sent out but waiting for response. It increases while 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // sending request and decreases while handling response. It should match 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestList.size() unless there are requests no replied while 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT occurs. 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequestMessagesWaiting; 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //I'd rather this be LinkedList or something 242892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt ArrayList<RILRequest> mRequestList = new ArrayList<RILRequest>(); 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object mLastNITZTimeInfo; 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // When we are testing emergency calls 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Events 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_SEND = 1; 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constants 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // match with constant in ril.cpp 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_SOLICITED = 0; 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_UNSOLICITED = 1; 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final String SOCKET_NAME_RIL = "rild"; 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // RIL_CDMA_BroadcastServiceInfo 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void onReceive(Context context, Intent intent) { 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(true); 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendScreenState(false); 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 279fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILSender extends Handler implements Runnable { 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RILSender(Looper looper) { 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(looper); 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Only allocated once 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] dataLength = new byte[4]; 2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Runnable implementation 293cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //setup if needed 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Handler implementation 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville handleMessage(Message msg) { 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = (RILRequest)(msg.obj); 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest req = null; 3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (msg.what) { 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_SEND: 3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * mRequestMessagePending++ already happened for every 3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * EVENT_SEND, thus we must make sure 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * mRequestMessagePending-- happens once and only once 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean alreadySubtracted = false; 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s; 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = mSocket; 3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s == null) { 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending > 0) 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville alreadySubtracted = true; 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 328892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 329892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.add(rr); 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting++; 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending > 0) 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville alreadySubtracted = true; 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] data; 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville data = rr.mParcel.marshall(); 34022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.recycle(); 34122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = null; 3420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (data.length > RIL_MAX_COMMAND_BYTES) { 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Parcel larger than max bytes allowed! " 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + data.length); 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // parcel length in big endian 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[0] = dataLength[1] = 0; 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[2] = (byte)((data.length >> 8) & 0xff); 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[3] = (byte)((data.length) & 0xff); 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 354fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "writing packet: " + data.length + " bytes"); 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(dataLength); 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(data); 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 359fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "IOException", ex); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (req != null || !alreadySubtracted) { 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RuntimeException exc) { 368fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception ", exc); 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (req != null || !alreadySubtracted) { 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(GENERIC_FAILURE, null); 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } finally { 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note: We are "Done" only if there are no outstanding 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // requests or replies. Thus this code path will only release 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // the wake lock on errors. 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone(); 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!alreadySubtracted && mRequestMessagesPending > 0) { 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending--; 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_WAKE_LOCK_TIMEOUT: 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Haven't heard back from the last request. Assume we're 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not getting a response and release the wake lock. 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mWakeLock.isHeld()) { 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The timer of WAKE_LOCK_TIMEOUT is reset with each 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // new send request. So when WAKE_LOCK_TIMEOUT occurs 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // all requests in mRequestList already waited at 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Reset mRequestMessagesWaiting to enable 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // releaseWakeLockIfDone(). 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note: Keep mRequestList so that delayed response 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // can still be handled when response finally comes. 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesWaiting != 0) { 404fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, "NOTE: mReqWaiting is NOT 0 but" 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + mRequestMessagesWaiting + " at TIMEOUT, reset!" 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " There still msg waitng for response"); 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 411892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 412892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 413fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, "WAKE_LOCK_TIMEOUT " + 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 417892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt rr = mRequestList.get(i); 418fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestMessagesPending shows how many 4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // requests are waiting to be sent (and before 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // to be added in request list) since star the 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // WAKE_LOCK_TIMEOUT timer. Since WAKE_LOCK_TIMEOUT 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // is the expected time to get response, all requests 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // should already sent out (i.e. 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // mRequestMessagesPending is 0 )while TIMEOUT occurs. 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesPending != 0) { 432fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "ERROR: mReqPending is NOT 0 but" 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + mRequestMessagesPending + " at TIMEOUT, reset!"); 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending = 0; 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Reads in a single RIL message off the wire. A RIL message consists 4470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * of a 4-byte little-endian length and a subsequent series of bytes. 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The final message (length header omitted) is read into 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * <code>buffer</code> and the length of the final message (less header) 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * is returned. A return value of -1 indicates end-of-stream. 4510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param is non-null; Stream to read from 4530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param buffer Buffer to fill in. Must be as large as maximum 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * message size, or an ArrayOutOfBounds exception will be thrown. 4550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return Length of message less header, or -1 on end of stream. 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @throws IOException 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int readRilMessage(InputStream is, byte[] buffer) 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throws IOException { 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int countRead; 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int offset; 4620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int remaining; 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageLength; 4640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // First, read in the length of the message 4660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = 4; 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 472fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message length"); 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 4790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageLength = ((buffer[0] & 0xff) << 24) 4810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[1] & 0xff) << 16) 4820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[2] & 0xff) << 8) 4830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | (buffer[3] & 0xff); 4840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Then, re-use the buffer and read in the message itself 4860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 4870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = messageLength; 4880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 4890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 4900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 492fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 4930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " remaining=" + remaining); 4940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 4990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 5000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return messageLength; 5020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILReceiver implements Runnable { 5050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] buffer; 5060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver() { 5080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville buffer = new byte[RIL_MAX_COMMAND_BYTES]; 5090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 511cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 5120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 5130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 5140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int retryCount = 0; 5150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {for (;;) { 5170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s = null; 5180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress l; 5190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = new LocalSocket(); 5220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville l = new LocalSocketAddress(SOCKET_NAME_RIL, 5230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress.Namespace.RESERVED); 5240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.connect(l); 5250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex){ 5260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s != null) { 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.close(); 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex2) { 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //ignore failure to close after failure to connect 5320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // don't print an error message after the the first time 5350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // or after the 8th time 5360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (retryCount == 8) { 538fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e (RILJ_LOG_TAG, 5390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 5400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket after " + retryCount 5410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " times, continuing to retry silently"); 5420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (retryCount > 0 && retryCount < 8) { 543fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i (RILJ_LOG_TAG, 5440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Couldn't find '" + SOCKET_NAME_RIL 5450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket; retrying after timeout"); 5460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 5500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException er) { 5510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount++; 5540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville continue; 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount = 0; 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = s; 560fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length = 0; 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InputStream is = mSocket.getInputStream(); 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (;;) { 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Parcel p; 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = readRilMessage(is, buffer); 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length < 0) { 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // End-of-stream reached 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p = Parcel.obtain(); 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.unmarshall(buffer, 0, length); 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.setDataPosition(0); 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 580fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "Read packet: " + length + " bytes"); 5810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse(p); 5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.recycle(); 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (java.io.IOException ex) { 586fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex); 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (Throwable tr) { 589fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception read length=" + length + 5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 593fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i(RILJ_LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket"); 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState (RadioState.RADIO_UNAVAILABLE); 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket.close(); 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 6010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = null; 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest.resetSerial(); 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Clear request list on close 607892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt clearRequestList(RADIO_NOT_AVAILABLE, false); 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 609fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG,"Uncaught exception", tr); 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* We're disconnected so we don't know the ril version */ 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(-1); 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructors 6200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(context); 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 6240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscription = cdmaSubscription; 6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = preferredNetworkType; 6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = RILConstants.NO_PHONE; 6300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 632fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, RILJ_LOG_TAG); 6330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.setReferenceCounted(false); 6340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 6350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending = 0; 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 6380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread = new HandlerThread("RILSender"); 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread.start(); 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mSenderThread.getLooper(); 6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender = new RILSender(looper); 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Context.CONNECTIVITY_SERVICE); 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 649c241cad754ecf27c96b09f1e585b8be341dfcb71Alex Yakavenka } if (SystemProperties.getBoolean("ro.radio.noril", false)) { 650c241cad754ecf27c96b09f1e585b8be341dfcb71Alex Yakavenka riljLog("Not starting RILReceiver: basebandless target"); 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Starting RILReceiver"); 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiver = new RILReceiver(); 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread.start(); 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IntentFilter filter = new IntentFilter(); 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville context.registerReceiver(mIntentReceiver, filter); 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 666cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message result) { 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setOnNITZTime(h, what, obj); 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Send the last NITZ time if we have it 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLastNITZTimeInfo != null) { 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant( 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = null; 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 689cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIccCardStatus(Message result) { 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin(String pin, Message result) { 7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(pin, null, result); 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 71422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 71522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 71622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(puk, newPin, null, result); 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 73422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 73522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 73622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 73722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2(String pin, Message result) { 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(pin, null, result); 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 75522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 75622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 75722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 77522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 77622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 77722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 77822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 79622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 79722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin); 79822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 79922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 81722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 81822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin2); 81922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 82022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 825cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 83222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 83322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 83422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPwd); 83522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPwd); 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 840cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 84722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 84822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(netpin); 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 853cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCurrentCalls (Message result) { 8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 863cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Deprecated public void 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getPDPContextList(Message result) { 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 8670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 869cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(Message result) { 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 879cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial (String address, int clirMode, Message result) { 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(address, clirMode, null, result); 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 885cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 89022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 89122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfo == null) { 89422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(0); // UUS information is absent 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 89622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); // UUS information is present 89722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getType()); 89822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getDcs()); 89922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(uusInfo.getUserData()); 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 907cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSI(Message result) { 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 9110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 913cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(String aid, Message result) { 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 91822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 91922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "> getIMSI: " + requestToString(rr.mRequest) 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 928cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEI(Message result) { 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 938cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEISV(Message result) { 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 949cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupConnection (int gsmIndex, Message result) { 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gsmIndex); 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 95922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 96022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 965cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupWaitingOrBackground (Message result) { 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 976cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupForegroundResumeBackground (Message result) { 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 988cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchWaitingOrHoldingAndActive (Message result) { 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1000cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville conference (Message result) { 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 10050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1012cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 10150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 10160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 101722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 101822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1:0); 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1023cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1030cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville separateConnection (int gsmIndex, Message result) { 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + gsmIndex); 10380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 103922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 104022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1045cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acceptCall (Message result) { 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 10500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1056cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rejectCall (Message result) { 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1067cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville explicitCallTransfer (Message result) { 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1078cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastCallFailCause (Message result) { 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1092cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 1093cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastPdpFailCause (Message result) { 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (result); 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The preferred new alternative to getLastPdpFailCause 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1102cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (Message result) { 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1113cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setMute (boolean enableMute, Message response) { 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enableMute); 11210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 112222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 112322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enableMute ? 1 : 0); 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1128cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getMute (Message response) { 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1139cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getSignalStrength (Message result) { 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1150cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getVoiceRegistrationState (Message result) { 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1161cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataRegistrationState (Message result) { 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1172cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperator(Message result) { 11750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1183cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendDtmf(char c, Message result) { 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 119122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1196cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville startDtmf(char c, Message result) { 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 120422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1209cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville stopDtmf(Message result) { 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1220cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 12240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 122522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 122622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(dtmfString); 122722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(on)); 122822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(off)); 12290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + dtmfString); 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1236cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 12410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 124222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 124322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smscPDU); 124422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1251cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCdmaSms(byte[] pdu, Message result) { 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int address_nbr_of_digits; 12550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int subaddr_nbr_of_digits; 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int bearerDataLength; 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataInputStream dis = new DataInputStream(bais); 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 12620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 126422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //teleServiceId 126522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.readInt()); //servicePresent 126622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //serviceCategory 126722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_digit_mode 126822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_mode 126922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_ton 127022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_plan 12710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville address_nbr_of_digits = (byte) dis.read(); 127222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) address_nbr_of_digits); 12730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 127422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); // address_orig_bytes[i] 12750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 127622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //subaddressType 127722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.read()); //subaddr_odd 12780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 127922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) subaddr_nbr_of_digits); 12800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 128122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 12820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville bearerDataLength = dis.read(); 128522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bearerDataLength); 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < bearerDataLength; i++){ 128722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //bearerData[i] 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }catch (IOException ex){ 12900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ex); 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1299cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 130422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 130522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1307cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1308cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1309cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1314cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 13160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 131922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 132022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1323cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1324cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1329cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 133622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 133722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 133822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smsc); 13390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1340cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1341cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1342cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1347cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 13490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 135422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 135522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 13560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1357cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1358cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1359cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Translates EF_SMS status bits to a status value compatible with 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SMS AT commands. See TS 27.005 3.1. 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int translateStatus(int status) { 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(status & 0x7) { 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_READ: 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 3; 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 2; 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Default to READ. 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1384cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String user, String password, String authType, String protocol, 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 13910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(7); 13930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(radioTechnology); 139522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(profile); 139622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(apn); 139722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(user); 139822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 139922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(authType); 140022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(protocol); 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + profile + " " + apn + " " + user + " " 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + password + " " + authType + " " + protocol); 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1410cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville deactivateDataCall(int cid, int reason, Message result) { 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 14150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 141622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 141722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(cid)); 141822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(reason)); 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1426cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(boolean on, Message result) { 14290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 14300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 143122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 143222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (on ? " on" : " off")); 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1442cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 14470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 144822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 144922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 14530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1457cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 14620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 146322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 146422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 1 : 0); 146522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1473cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 14780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 147922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 14800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // cause code according to X.S004-550E 148122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1489cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 14940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 149522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 149622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(success ? "1" : "0"); 149722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ackPdu); 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ' ' + success + " [" + ackPdu + ']'); 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1505cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, Message result) { 15090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 15100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1511cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, String aid, Message result) { 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 15160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 15190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 152022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(command); 152122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(fileid); 152222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(path); 152322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p1); 152422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p2); 152522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p3); 152622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(data); 152722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin2); 152822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 15290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 15310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 15320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(command) 15330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 15340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " path: " + path + "," 15350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + p1 + "," + p2 + "," + p3 15360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 15370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1541cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCLIR(Message result) { 15440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 15460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1552cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCLIR(int clirMode, Message result) { 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 15570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count ints 155922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 15600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 156122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 15620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + clirMode); 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1569cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallWaiting(int serviceClass, Message response) { 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 15740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 157522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 157622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + serviceClass); 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1584cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 15870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 15890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 159022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 159122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 159222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enable + ", " + serviceClass); 15960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1600cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeAutomatic(Message response) { 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 16050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1612cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + operatorNumeric); 16210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 162222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(operatorNumeric); 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1627cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getNetworkSelectionMode(Message response) { 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 16320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1639cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getAvailableNetworks(Message response) { 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1651cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallForward(int action, int cfReason, int serviceClass, 16540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message response) { 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 16570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 165822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(action); 165922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 166022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 166122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 166222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 166322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (timeSeconds); 16640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + action + " " + cfReason + " " + serviceClass 16670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + timeSeconds); 16680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1672cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallForwardStatus(int cfReason, int serviceClass, 16750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message response) { 16760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 16780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 167922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); // 2 is for query action, not in used anyway 168022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 168122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 168222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 168322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 168422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (0); 16850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + cfReason + " " + serviceClass); 16880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1692cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCLIP(Message response) { 16950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 16970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1704cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getBasebandVersion (Message response) { 17070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 17090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 17180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 17200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 17250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 17270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 172888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 172988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + serviceClass 173088e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + appId + "]"); 17310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 173322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(4); 17340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 173622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 17370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 173922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLock (String facility, boolean lockState, String password, 17470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message response) { 17480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 17490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 17540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, String appId, Message response) { 17550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String lockString; 17560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 17580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 175988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 176088e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + lockState 176188e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + serviceClass + " " + appId + "]"); 17620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 176422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(5); 17650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 176622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 17670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville lockString = (lockState)?"1":"0"; 176822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(lockString); 176922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 177022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 177122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1777cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendUSSD (String ussdString, Message response) { 17800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 17820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 178372000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGD) { 178472000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO String logUssdString = "*******"; 178572000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGV) logUssdString = ussdString; 178672000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 178772000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO + " " + logUssdString); 178872000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO } 17890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 179022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ussdString); 17910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 1796cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 17980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 18000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 18020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest)); 18030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1808cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 18100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 18120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1818cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 18200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 18220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 18250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 182622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(data); 18270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1832cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 18340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 18360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 183922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeStringArray(strings); 18400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 18460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 18480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1850cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message response) { 18520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 18540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 185522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 185622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bandMode); 18570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + bandMode); 18600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 18660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with every 18690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * element representing one avialable BM_*_BAND 18700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1871cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message response) { 18730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 18750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1885cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 18870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 18890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 189222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 18930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1899cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 19010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 19030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1913cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 19150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 19170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + '[' + contents + ']'); 19200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 192122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1928cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 19300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 19310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 19340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 19350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] param = new int[1]; 19390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville param[0] = accept ? 1 : 0; 194022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeIntArray(param); 19410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 19480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCurrentPreferredNetworkType() { 19490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 19500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 19510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int mSetPreferredNetworkType; 19530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1957cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message response) { 19590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 19610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 196222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 196322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(networkType); 19640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSetPreferredNetworkType = networkType; 19660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = networkType; 19670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + networkType); 19700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1977cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message response) { 19790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 19810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1990cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 19920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 19940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2003cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 20050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 200622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 200722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 20080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + enable); 20110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2018cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 20200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 20210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2030cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 20320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 20330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 203422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 20350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + address); 20380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2045cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 20470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 204822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 204922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(available ? 1 : 0); 20500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + available); 20530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2060cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 20620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 20630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2072cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 20740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 20750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2084cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 20860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 20870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numOfConfig = config.length; 208922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(numOfConfig); 20900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < numOfConfig; i++) { 209222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromServiceId()); 209322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToServiceId()); 209422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromCodeScheme()); 209522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToCodeScheme()); 209622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].isSelected() ? 1 : 0); 20970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 21000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 21010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " with " + numOfConfig + " configs : "); 21020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numOfConfig; i++) { 21030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(config[i].toString()); 21040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2113cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 21150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 21160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 211722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 211822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 : 1); 21190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 21260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void sendScreenState(boolean on) { 21280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 212922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 213022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 21310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 21330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 21340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2138cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void 21400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onRadioAvailable() { 21410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // In case screen state was lost (due to process crash), 21420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // this ensures that the RIL knows the correct screen state. 21430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2144cf57b29a755b0249da687201bcc726941d37d42bBin Li PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 2145cf57b29a755b0249da687201bcc726941d37d42bBin Li sendScreenState(pm.isScreenOn()); 21460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RadioState getRadioStateFromInt(int stateInt) { 21490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState state; 21500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* RIL_RadioState ril.h */ 21520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(stateInt) { 21530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 0: state = RadioState.RADIO_OFF; break; 21540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 21550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 10: state = RadioState.RADIO_ON; break; 21560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 21580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 21590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Unrecognized RIL_RadioState: " + stateInt); 21600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 21620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void switchToRadioState(RadioState newState) { 21650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(newState); 21660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Holds a PARTIAL_WAKE_LOCK whenever 21700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 21710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * b) There is a request pending to be sent out. 21720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 21730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 21740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * happen often. 21750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 21760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock() { 21790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.acquire(); 21810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending++; 21820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 21850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 21860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone() { 21910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mWakeLock.isHeld() && 21930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesPending == 0) && 21940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesWaiting == 0)) { 21950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 21970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(RILRequest rr) { 22030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg; 22040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSocket == null) { 22060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 22070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 22120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock(); 22140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.sendToTarget(); 22160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse (Parcel p) { 22200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int type; 22210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville type = p.readInt(); 22230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (type == RESPONSE_UNSOLICITED) { 22250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (p); 22260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (type == RESPONSE_SOLICITED) { 22270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (p); 22280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone(); 22310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2234892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * Release each request in mRequestList then clear the list 22350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param error is the RIL_Errno sent back 2236892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * @param loggable true means to print all requests in mRequestList 22370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2238892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt private void clearRequestList(int error, boolean loggable) { 22390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 2240892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2241892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 22420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2243fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, "WAKE_LOCK_TIMEOUT " + 22440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mReqPending=" + mRequestMessagesPending + 22450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 22460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count ; i++) { 2249892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt rr = mRequestList.get(i); 22500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2251fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " + 22520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest)); 22530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, null); 22550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2257892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.clear(); 22580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 22590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 2263892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2264892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt for (int i = 0, s = mRequestList.size() ; i < s ; i++) { 2265892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 22660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mSerial == serial) { 2268892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.remove(i); 22690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesWaiting > 0) 22700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting--; 22710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 22720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 22770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (Parcel p) { 22810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serial, error; 22820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean found = false; 22830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serial = p.readInt(); 22850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville error = p.readInt(); 22860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 22880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = findAndRemoveRequestFromList(serial); 22900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 2292fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "Unexpected solicited response! sn: " 22930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + serial + " error: " + error); 22940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret = null; 22980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error == 0 || p.dataAvail() > 0) { 23000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // either command succeeds or command fails but with data payload 23010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch (rr.mRequest) { 23020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* 23030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 23040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 23050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 23060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 23070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 23080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 23090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 23100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 23110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 23120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 23130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 23140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 23150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 23160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 23170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 23180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 23190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 23200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 23210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mTestingEmergencyCall.getAndSet(false)) { 23220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 23230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("testing emergency call, notify ECM Registrants"); 23240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 23250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = responseVoid(p); 23280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 23290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 23310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 23320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 23330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 23350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 23360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 23370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 23380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 23390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 23400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 23410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 23420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 23430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 23440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 23450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 23460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 23470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 23480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 23490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 23500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 23510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 23520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 23530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 23540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 23550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 23560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 23570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 23580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 23590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 23600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 23610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 23620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 23630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 23640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 23650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 23660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 23670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 23680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 23690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 23700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 23710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 23730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 23740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 23750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 23760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 23770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 23780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 23790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 23800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 23810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 23820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 23830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 23840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 23850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 23860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 23870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 23880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 23890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 23900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 23910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 23920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 23930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 23940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 23950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 23960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 23970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 23980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 23990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 24000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 24010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 24020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 24030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 24040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 24070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 24100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 24110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 24120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 24130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 24140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 24150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 24160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 24170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 24180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 24190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 24200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 24210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 24220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 24230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 24245fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 24255fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: ret = responseVoid(p); break; 24260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 24270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 24280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; 24290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 24300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Exceptions here usually mean invalid RIL responses 24310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2432fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, rr.serialString() + "< " 24330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 24340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " exception, possible invalid RIL response", tr); 24350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 24370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, null, tr); 24380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 24420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2445f860a3f42f87c9c8572623aff33349168d689477Wink Saville // Here and below fake RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, see b/7255789. 2446f860a3f42f87c9c8572623aff33349168d689477Wink Saville // This is needed otherwise we don't automatically transition to the main lock 2447f860a3f42f87c9c8572623aff33349168d689477Wink Saville // screen when the pin or puk is entered incorrectly. 2448be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville switch (rr.mRequest) { 2449be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK: 2450be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: 2451be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville if (mIccStatusChangedRegistrants != null) { 2452f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2453f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON enter sim puk fakeSimStatusChanged: reg count=" 2454f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2455f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2456be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2457be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2458be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville break; 2459be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2460be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville 24610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error != 0) { 2462f860a3f42f87c9c8572623aff33349168d689477Wink Saville switch (rr.mRequest) { 2463f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: 2464f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: 2465f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: 2466f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: 2467f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: 2468f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (mIccStatusChangedRegistrants != null) { 2469f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2470f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON some errors fakeSimStatusChanged: reg count=" 2471f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2472f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2473f860a3f42f87c9c8572623aff33349168d689477Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2474f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2475f860a3f42f87c9c8572623aff33349168d689477Wink Saville break; 2476f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2477f860a3f42f87c9c8572623aff33349168d689477Wink Saville 24780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, ret); 24790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 24810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 24840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + retToString(rr.mRequest, ret)); 24850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 24870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, ret, null); 24880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String 24950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retToString(int req, Object ret) { 24960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret == null) return ""; 24970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (req) { 24980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Don't log these return values, for privacy's sake. 24990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: 25000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: 25010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: 25020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!RILJ_LOGV) { 25030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 25040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ""; 25050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb; 25090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s; 25100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length; 25110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret instanceof int[]){ 25120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] intArray = (int[]) ret; 25130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = intArray.length; 25140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(intArray[i++]); 25180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(intArray[i++]); 25200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (ret instanceof String[]) { 25250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] strings = (String[]) ret; 25260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = strings.length; 25270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(strings[i++]); 25310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(strings[i++]); 25330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 25380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 25390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (DriverCall dc : calls) { 25410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("[").append(dc).append("] "); 25420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 25450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> cells; 25460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cells = (ArrayList<NeighboringCellInfo>) ret; 25470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (NeighboringCellInfo cell : cells) { 25490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(cell).append(" "); 25500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 25530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = ret.toString(); 25540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 25560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 25590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (Parcel p) { 25600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response; 25610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret; 25620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readInt(); 25640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch(response) { 25660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 25670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 25680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 25690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 25700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 25710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 25730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 25740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 25750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 25760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 25770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 25780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 25790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 25800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 25810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 25820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 25830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 25840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 25850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 25860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 25870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 25890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 25900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 25910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 25920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 25930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 25940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 25960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 25970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 25980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 25990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 26000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 26010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 26020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 26030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 26040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 26050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 26060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 26075fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 26080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 26100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 26110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; (implied) 26120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 2613fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Exception processing unsol response: " + response + 26140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 26150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 26160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(response) { 26190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 26200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* has bonus radio state int */ 26210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 26220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 26230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchToRadioState(newState); 26250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 26270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants 26300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 26330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceNetworkStateRegistrants 26360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 26390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME this should move up a layer 26420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String a[] = new String[2]; 26430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville a[1] = (String)ret; 26450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 26470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromCMT(a); 26490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmSmsRegistrant != null) { 26500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmSmsRegistrant 26510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 26520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 26560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsStatusRegistrant != null) { 26590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsStatusRegistrant.notifyRegistrant( 26600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 26610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 26640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] smsIndex = (int[])ret; 26670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(smsIndex.length == 1) { 26690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsOnSimRegistrant != null) { 26700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsOnSimRegistrant. 26710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 26720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 26740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 26750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + smsIndex.length); 26760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: 26790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] resp = (String[])ret; 26800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (resp.length < 2) { 26820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = new String[2]; 26830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[0] = ((String[])ret)[0]; 26840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[1] = null; 26850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 26870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 26880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyRegistrant( 26890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, resp, null)); 26900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 26930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // has bonus long containing milliseconds since boot that the NITZ 26960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // time was received 26970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long nitzReceiveTime = p.readLong(); 26980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object[] result = new Object[2]; 27000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[0] = ret; 27020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[1] = Long.valueOf(nitzReceiveTime); 27030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 27050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 27060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ignoreNitz) { 27080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 27090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNITZTimeRegistrant != null) { 27110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 27130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 27140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // in case NITZ time registrant isnt registered yet 27160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = result; 27170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 27220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note this is set to "verbose" because it happens 27230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // frequently 27240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 27250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalStrengthRegistrant != null) { 27270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalStrengthRegistrant.notifyRegistrant( 27280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 27320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 27350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 27380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSsnRegistrant != null) { 27410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant( 27420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: 27470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatSessionEndRegistrant != null) { 27500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatSessionEndRegistrant.notifyRegistrant( 27510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 27560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatProCmdRegistrant != null) { 27590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatProCmdRegistrant.notifyRegistrant( 27600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 27650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatEventRegistrant != null) { 27680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatEventRegistrant.notifyRegistrant( 27690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: 27740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatCallSetUpRegistrant != null) { 27770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatCallSetUpRegistrant.notifyRegistrant( 27780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 27830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 27860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 27870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: 27910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccRefreshRegistrants != null) { 27940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccRefreshRegistrants.notifyRegistrants( 27950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: 28000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingRegistrant != null) { 28030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingRegistrant.notifyRegistrant( 28040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 28090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 28100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRestrictedStateRegistrant != null) { 28110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRestrictedStateRegistrant.notifyRegistrant( 28120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 28170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccStatusChangedRegistrants != null) { 28200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 28210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 28250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms = (SmsMessage) ret; 28280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSmsRegistrant != null) { 28300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSmsRegistrant 28310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 28320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 28360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmBroadcastSmsRegistrant != null) { 28390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmBroadcastSmsRegistrant 28400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 28410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 28450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 28480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 28490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 28530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 28560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 28570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 28610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCallWaitingInfoRegistrants != null) { 28640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 28650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 28700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mOtaProvisionRegistrants != null) { 28730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 28740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 28790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 28800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 28820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 28830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (ClassCastException e) { 2884fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 28850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 28890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 28900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(rec); 28910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 28950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 28960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUnsolOemHookRawRegistrant != null) { 28970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 28980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: 29020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 29030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingbackToneRegistrants != null) { 29040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean playtone = (((int[])ret)[0] == 1); 29050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackToneRegistrants.notifyRegistrants( 29060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, playtone, null)); 29070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 29110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResendIncallMuteRegistrants != null) { 29140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResendIncallMuteRegistrants.notifyRegistrants( 29150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 29200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mVoiceRadioTechChangedRegistrants != null) { 29230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 29240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 29250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 29290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 29320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 29330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 29380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaPrlChangedRegistrants != null) { 29410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 29420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 29470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 29500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 29510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, null, null)); 29520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 29560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Initial conditions 29590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(false, null); 29600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mPreferredNetworkType, null); 29610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 29620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 29630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29655fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: { 29665fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29675fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 29685fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (mRilCellInfoListRegistrants != null) { 29695fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville mRilCellInfoListRegistrants.notifyRegistrants( 29705fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville new AsyncResult (null, ret, null)); 29715fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29725fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville break; 29735fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 29780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 29790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 29800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 29810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 29820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 29830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilVersion = rilVer; 29840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRilConnectedRegistrants != null) { 29850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilConnectedRegistrants.notifyRegistrants( 29860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 29870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseInts(Parcel p) { 29920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 29930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 29940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = p.readInt(); 29960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 29980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInts ; i++) { 30000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 30010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseVoid(Parcel p) { 30090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 30100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallForward(Parcel p) { 30140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInfos; 30150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CallForwardInfo infos[]; 30160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInfos = p.readInt(); 30180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos = new CallForwardInfo[numInfos]; 30200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInfos ; i++) { 30220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i] = new CallForwardInfo(); 30230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].status = p.readInt(); 30250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].reason = p.readInt(); 30260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].serviceClass = p.readInt(); 30270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].toa = p.readInt(); 30280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].number = p.readString(); 30290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].timeSeconds = p.readInt(); 30300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return infos; 30330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSuppServiceNotification(Parcel p) { 30370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification notification = new SuppServiceNotification(); 30380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.notificationType = p.readInt(); 30400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.code = p.readInt(); 30410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.index = p.readInt(); 30420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.type = p.readInt(); 30430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 30440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 30460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaSms(Parcel p) { 30500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 30510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromParcel(p); 30520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sms; 30540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseString(Parcel p) { 30580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response; 30590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readString(); 30610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseStrings(Parcel p) { 30670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response[]; 30690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readStringArray(); 30710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseRaw(Parcel p) { 30770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte response[]; 30790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.createByteArray(); 30810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSMS(Parcel p) { 30870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageRef, errorCode; 30880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ackPDU; 30890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageRef = p.readInt(); 30910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ackPDU = p.readString(); 30920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville errorCode = p.readInt(); 30930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 30950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseICC_IO(Parcel p) { 31020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int sw1, sw2; 31030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte data[] = null; 31040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message ret; 31050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw1 = p.readInt(); 31070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw2 = p.readInt(); 31080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s = p.readString(); 31100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 31120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw1) 31130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 31140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + s); 31150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new IccIoResult(sw1, sw2, s); 31170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseIccCardStatus(Parcel p) { 3121e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 3122e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 3123e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 3124e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 3125e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 3126e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 3127e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 3128e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 31290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numApplications = p.readInt(); 31300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // limit to maximum allowed applications 31320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 31330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 31340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3135e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 31360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numApplications ; i++) { 3137e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3138e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3139e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3140e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3141e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3142e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3143e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3144e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3145e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3146e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 31470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3148e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 31490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSimRefresh(Parcel p) { 31530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IccRefreshResponse response = new IccRefreshResponse(); 31540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.refreshResult = p.readInt(); 31560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.efId = p.readInt(); 31570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.aid = p.readString(); 31580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallList(Parcel p) { 31630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 31640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int voiceSettings; 31650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> response; 31660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DriverCall dc; 31670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 31690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DriverCall>(num); 31700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) { 31720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: num=" + num + 31730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 31740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 31750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 31770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc = new DriverCall(); 31780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 31800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.index = p.readInt(); 31810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.TOA = p.readInt(); 31820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMpty = (0 != p.readInt()); 31830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMT = (0 != p.readInt()); 31840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.als = p.readInt(); 31850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville voiceSettings = p.readInt(); 31860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 31870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 31880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = p.readString(); 31890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int np = p.readInt(); 31900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 31910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.name = p.readString(); 31920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.namePresentation = p.readInt(); 31930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int uusInfoPresent = p.readInt(); 31940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfoPresent == 1) { 31950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo = new UUSInfo(); 31960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setType(p.readInt()); 31970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setDcs(p.readInt()); 31980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] userData = p.createByteArray(); 31990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setUserData(userData); 32000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 32010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 32020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getUserData().length)); 32030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (string)=" 32040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + new String(dc.uusInfo.getUserData())); 32050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (hex): " 32060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 32070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : NOT present!"); 32090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 32120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 32130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(dc); 32150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dc.isVoicePrivacy) { 32170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 32180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is enabled"); 32190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 32210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is disabled"); 32220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Collections.sort(response); 32260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 32280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 32290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: call ended, testing emergency call," + 32300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " notify ECM Registrants"); 32310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 32320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3238ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville private DataCallResponse getDataCallResponse(Parcel p, int version) { 3239ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall = new DataCallResponse(); 32400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = version; 32420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 5) { 32430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.status = p.readInt(); 32520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.suggestedRetryTime = p.readInt(); 32530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 3257ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville if ((dataCall.status == DcFailCause.NONE.getErrorCode()) && 32580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TextUtils.isEmpty(dataCall.ifname)) { 3259ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville throw new RuntimeException("getDataCallResponse, no ifname"); 32600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 32660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 32670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 32680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 32700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 32710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 32720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 32750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseDataCallList(Parcel p) { 3279ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville ArrayList<DataCallResponse> response; 32800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 32830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 32840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3285ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response = new ArrayList<DataCallResponse>(num); 32860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 3287ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response.add(getDataCallResponse(p, ver)); 32880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSetupDataCall(Parcel p) { 32950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 32970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 32980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3299ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall; 33000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ver < 5) { 3302ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = new DataCallResponse(); 33030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = ver; 33040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 33050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 33060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 33070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 33090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 33110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 33120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 33130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 4) { 33150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 33160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 33170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 33180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 33190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 5) { 33220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 33230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 33240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 33250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 33260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num != 1) { 33300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 33320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " got " + num); 33330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3334ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = getDataCallResponse(p, ver); 33350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 33380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseOperatorInfos(Parcel p) { 33420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String strings[] = (String [])responseStrings(p); 33430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<OperatorInfo> ret; 33440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (strings.length % 4 != 0) { 33460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 33480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + strings.length + " strings, expected multible of 4"); 33490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 33520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < strings.length ; i += 4) { 33540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret.add ( 33550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new OperatorInfo( 33560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+0], 33570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+1], 33580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+2], 33590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+3])); 33600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ret; 33630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCellList(Parcel p) { 33670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num, rssi; 33680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String location; 33690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> response; 33700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NeighboringCellInfo cell; 33710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 33730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<NeighboringCellInfo>(); 33740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Determine the radio access type 33760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String radioString = SystemProperties.get( 33770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 33780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int radioType; 33790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioString.equals("GPRS")) { 33800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_GPRS; 33810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("EDGE")) { 33820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_EDGE; 33830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("UMTS")) { 33840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UMTS; 33850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSDPA")) { 33860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSDPA; 33870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSUPA")) { 33880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSUPA; 33890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSPA")) { 33900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSPA; 33910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UNKNOWN; 33930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Interpret the location based on radio access type 33960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 33970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 33980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rssi = p.readInt(); 33990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville location = p.readString(); 34000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 34010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(cell); 34020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGetPreferredNetworkType(Parcel p) { 34080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int [] response = (int[]) responseInts(p); 34090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response.length >= 1) { 34110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Since this is the response for getPreferredNetworkType 34120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we'll assume that it should be the value we want the 34130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // vendor ril to take if we reestablish a connection to it. 34140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = response[0]; 34150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGmsBroadcastConfig(Parcel p) { 34200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 34210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<SmsBroadcastConfigInfo> response; 34220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsBroadcastConfigInfo info; 34230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 34250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 34260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 34280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromId = p.readInt(); 34290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toId = p.readInt(); 34300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromScheme = p.readInt(); 34310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toScheme = p.readInt(); 34320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean selected = (p.readInt() == 1); 34330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 34350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville toScheme, selected); 34360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(info); 34370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaBroadcastConfig(Parcel p) { 34430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numServiceCategories; 34440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 34450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numServiceCategories = p.readInt(); 34470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numServiceCategories == 0) { 34490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: The logic of providing default values should 34500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not be done by this transport layer. And needs to 34510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // be done by the vendor ril or application logic. 34520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 34540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Faking a default record for all possible records. 34570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 34580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 34600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // default language and selection status to false for all. 34610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 34620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 34630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 1] = 1; 34640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 2] = 0; 34650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 34670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 34690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = numServiceCategories; 34720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1 ; i < numInts; i++) { 34730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 34740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSignalStrength(Parcel p) { 3482e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // Assume this is gsm, but doesn't matter as ServiceStateTracker 3483e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // sets the proper value. 3484e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville SignalStrength signalStrength = SignalStrength.makeSignalStrengthFromRilParcel(p); 34855b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 34860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private ArrayList<CdmaInformationRecords> 34890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaInformationRecord(Parcel p) { 34900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numberOfInfoRecs; 34910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> response; 34920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 34940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Loop through all of the information records unmarshalling them 34950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * and converting them to Java Objects. 34960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 34970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numberOfInfoRecs = p.readInt(); 34980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 34990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 35010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 35020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(InfoRec); 35030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaCallWaiting(Parcel p) { 35100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 35110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 3513cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville notification.numberPresentation = 3514cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville CdmaCallWaitingNotification.presentationFromCLIP(p.readInt()); 35150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.name = p.readString(); 35160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.namePresentation = notification.numberPresentation; 35170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.isPresent = p.readInt(); 35180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signalType = p.readInt(); 35190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.alertPitch = p.readInt(); 35200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signal = p.readInt(); 35210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberType = p.readInt(); 35220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPlan = p.readInt(); 35230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 35250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallRing(Parcel p){ 35290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char response[] = new char[4]; 35300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = (char) p.readInt(); // isPresent 35320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[1] = (char) p.readInt(); // signalType 35330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[2] = (char) p.readInt(); // alertPitch 35340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[3] = (char) p.readInt(); // signal 35350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 35400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 35410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 35420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 35430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mDisplayInfoRegistrants != null) { 35440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 35460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 35490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalInfoRegistrants != null) { 35500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalInfoRegistrants.notifyRegistrants( 35520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 35550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNumberInfoRegistrants != null) { 35560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNumberInfoRegistrants.notifyRegistrants( 35580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 35610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRedirNumInfoRegistrants != null) { 35620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 35640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 35670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLineControlInfoRegistrants != null) { 35680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 35700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 35730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53ClirInfoRegistrants != null) { 35740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 35760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 35790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 35800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 35820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35875fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville private ArrayList<CellInfo> responseCellInfoList(Parcel p) { 35885fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville int numberOfInfoRecs; 35895fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville ArrayList<CellInfo> response; 35905fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 35915fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 35925fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * Loop through all of the information records unmarshalling them 35935fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * and converting them to Java Objects. 35945fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 35955fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville numberOfInfoRecs = p.readInt(); 35965fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response = new ArrayList<CellInfo>(numberOfInfoRecs); 35975fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 35985fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 35995fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville CellInfo InfoRec = CellInfo.CREATOR.createFromParcel(p); 36005fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response.add(InfoRec); 36015fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36025fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36035fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville return response; 36045fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36055fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 36070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(int request) { 36080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 36090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 36100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 36110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 36120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 36130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 36140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 36150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 36160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 36170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 36180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 36190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 36200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 36210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 36220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 36230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: return "DIAL"; 36240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 36250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 36260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 36270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 36280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 36290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 36300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: return "UDUB"; 36310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 36320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 36330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 36340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 36350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 36360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 36370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: return "DTMF"; 36380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 36390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 36400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 36410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 36420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 36430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 36440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 36450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 36460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 36470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 36480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 36490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 36500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 36510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 36520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 36530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 36540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 36550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 36560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 36570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 36580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 36590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 36600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 36610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 36620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 36630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 36640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 36650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 36660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 36670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 36680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 36690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 36700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 36710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 36720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 36730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 36740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 36750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 36760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 36770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 36780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 36790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 36800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 36810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 36820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 36830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 36840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 36850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 36860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 36870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 36880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 36890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 36900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 36910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 36920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 36930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 36940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 36950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 36960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 36970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 36980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 36990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 37000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 37010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 37020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 37030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 37040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 37050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 37060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 37070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 37080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 37090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 37100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 37110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 37120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 37130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 37140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 37150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 37160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 37170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 37180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 37190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 37200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 37210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 37225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: return "RIL_REQUEST_GET_CELL_INFO_LIST"; 37235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: return "RIL_REQUEST_SET_CELL_INFO_LIST_RATE"; 37240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown request>"; 37250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 37290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseToString(int request) 37300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville { 37310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 37320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 37330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 37340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 37350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 37360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 37370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 37380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 37390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 37400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 37410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 37420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 37430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 37440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 37450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 37460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 37470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 37480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 37490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 37500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 37510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 37520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 37530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 37540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 37550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 37560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 37570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 37580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 37590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 37600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 37610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 37620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 37630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 37640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 37650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 37665e1bc7508bd2f6cbe52ce1d7cb13194a0d265406Jiju Kinattingal case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONE"; 37670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 37680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 37690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 37700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 37710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 37720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 37735fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: return "UNSOL_CELL_INFO_LIST"; 37740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown reponse>"; 37750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLog(String msg) { 3779fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, msg); 37800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLogv(String msg) { 3783fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.v(RILJ_LOG_TAG, msg); 37840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLog(int response) { 37870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response)); 37880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogMore(int response, String more) { 37910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 37920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogRet(int response, Object ret) { 37950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 37960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogvRet(int response, Object ret) { 37990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 38000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 3804cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 38070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 38080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3814cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 38170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 38180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 38260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 38270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = phoneType; 38280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3833cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 38350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 38370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3846cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 38480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 38500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 385122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 385222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaRoamingType); 38530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaRoamingType); 38560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3863cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 38650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 38670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 386822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 386922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaSubscription); 38700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaSubscription); 38730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 38800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message response) { 38820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 38840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3893cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 38950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 38970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3906cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 39080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 39090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 39100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 391122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 391222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(ttyMode); 39130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + ttyMode); 39160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3923cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 39250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 39260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 39270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 392822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(FeatureCode); 39290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + FeatureCode); 39320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3936cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 39380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 39390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3943cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3944a63f55cf17629426d976830429a7612387532195Rika Brooks public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 39450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 39460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3947a63f55cf17629426d976830429a7612387532195Rika Brooks // Convert to 1 service category per config (the way RIL takes is) 3948a63f55cf17629426d976830429a7612387532195Rika Brooks ArrayList<CdmaSmsBroadcastConfigInfo> processedConfigs = 3949a63f55cf17629426d976830429a7612387532195Rika Brooks new ArrayList<CdmaSmsBroadcastConfigInfo>(); 3950a63f55cf17629426d976830429a7612387532195Rika Brooks for (CdmaSmsBroadcastConfigInfo config : configs) { 3951a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = config.getFromServiceCategory(); i <= config.getToServiceCategory(); i++) { 3952a63f55cf17629426d976830429a7612387532195Rika Brooks processedConfigs.add(new CdmaSmsBroadcastConfigInfo(i, 3953a63f55cf17629426d976830429a7612387532195Rika Brooks i, 3954a63f55cf17629426d976830429a7612387532195Rika Brooks config.getLanguage(), 3955a63f55cf17629426d976830429a7612387532195Rika Brooks config.isSelected())); 3956a63f55cf17629426d976830429a7612387532195Rika Brooks } 39570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3959a63f55cf17629426d976830429a7612387532195Rika Brooks CdmaSmsBroadcastConfigInfo[] rilConfigs = processedConfigs.toArray(configs); 396022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs.length); 3961a63f55cf17629426d976830429a7612387532195Rika Brooks for(int i = 0; i < rilConfigs.length; i++) { 396222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getFromServiceCategory()); 396322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getLanguage()); 396422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].isSelected() ? 1 : 0); 3965a63f55cf17629426d976830429a7612387532195Rika Brooks } 3966a63f55cf17629426d976830429a7612387532195Rika Brooks 3967a63f55cf17629426d976830429a7612387532195Rika Brooks if (RILJ_LOGD) { 3968a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3969a63f55cf17629426d976830429a7612387532195Rika Brooks + " with " + rilConfigs.length + " configs : "); 3970a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = 0; i < rilConfigs.length; i++) { 3971a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rilConfigs[i].toString()); 3972a63f55cf17629426d976830429a7612387532195Rika Brooks } 3973a63f55cf17629426d976830429a7612387532195Rika Brooks } 39740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3978cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 39800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 39810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 398222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 398322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 :1); 39840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3993cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message response) { 39950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 39960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4002cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 40030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 40040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 40050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 400622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(nonce); 40070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40135fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40145fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40155fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40165fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40175fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void getCellInfoList(Message result) { 40185fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CELL_INFO_LIST, result); 40195fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40205fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40245fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40255fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40265fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40275fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40285fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40295fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void setCellInfoListRate(int rateInMillis, Message response) { 40305fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog("setCellInfoListRate: " + rateInMillis); 40315fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, response); 40325fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40335fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(1); 40345fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(rateInMillis); 40355fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40365fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40375fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40385fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40395fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40405fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* (non-Javadoc) 40420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 40430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 40440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 40450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testingEmergencyCall() { 40460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 40470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mTestingEmergencyCall.set(true); 40480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 405105ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka pw.println("RIL: " + this); 40520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSocket=" + mSocket); 40530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSenderThread=" + mSenderThread); 40540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSender=" + mSender); 40550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 40560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiver=" + mReceiver); 40570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLock=" + mWakeLock); 40580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 4059892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 40600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesPending=" + mRequestMessagesPending); 40610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting); 4062892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 40630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestList count=" + count); 40640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 4065892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 40660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 40670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 40700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 40710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 4073