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"); 6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Starting RILReceiver"); 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiver = new RILReceiver(); 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread.start(); 6540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IntentFilter filter = new IntentFilter(); 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville context.registerReceiver(mIntentReceiver, filter); 6590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 664cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message result) { 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setOnNITZTime(h, what, obj); 6770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Send the last NITZ time if we have it 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLastNITZTimeInfo != null) { 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant( 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = null; 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 687cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIccCardStatus(Message result) { 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 6970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin(String pin, Message result) { 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(pin, null, result); 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 7060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 71222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 71322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 71422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(puk, newPin, null, result); 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 7260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 73222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 73322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 73422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 73522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2(String pin, Message result) { 7420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(pin, null, result); 7430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 75322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 75422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 75522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 7670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 77322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 77422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 77522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 77622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 7870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 7880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 7890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 7900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 79422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 79522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin); 79622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 79722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 7980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 81522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 81622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin2); 81722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 81822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 8190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 823cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 83022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 83122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 83222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPwd); 83322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPwd); 8340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 838cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 84522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 84622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(netpin); 8470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 851cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCurrentCalls (Message result) { 8540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 861cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Deprecated public void 8630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getPDPContextList(Message result) { 8640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 8650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 867cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(Message result) { 8700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 877cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial (String address, int clirMode, Message result) { 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(address, clirMode, null, result); 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 883cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 88822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 88922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 8900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfo == null) { 89222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(0); // UUS information is absent 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 89422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); // UUS information is present 89522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getType()); 89622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getDcs()); 89722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(uusInfo.getUserData()); 8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 905cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSI(Message result) { 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 9090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 911cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(String aid, Message result) { 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 91622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 91722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "> getIMSI: " + requestToString(rr.mRequest) 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 926cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEI(Message result) { 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 9300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 936cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEISV(Message result) { 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 947cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupConnection (int gsmIndex, Message result) { 9500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gsmIndex); 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 95722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 95822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 963cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupWaitingOrBackground (Message result) { 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 974cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupForegroundResumeBackground (Message result) { 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 986cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchWaitingOrHoldingAndActive (Message result) { 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 9930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 998cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 9990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville conference (Message result) { 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1010cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 10120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 101522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 101622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1:0); 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1021cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 10230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1028cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville separateConnection (int gsmIndex, Message result) { 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + gsmIndex); 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 103722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 103822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1043cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acceptCall (Message result) { 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 10480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1054cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rejectCall (Message result) { 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1065cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville explicitCallTransfer (Message result) { 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1076cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastCallFailCause (Message result) { 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1090cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 1091cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastPdpFailCause (Message result) { 10940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (result); 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The preferred new alternative to getLastPdpFailCause 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1100cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (Message result) { 11030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1111cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setMute (boolean enableMute, Message response) { 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enableMute); 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 112022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 112122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enableMute ? 1 : 0); 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1126cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getMute (Message response) { 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1137cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getSignalStrength (Message result) { 11400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1148cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getVoiceRegistrationState (Message result) { 11510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1159cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataRegistrationState (Message result) { 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1170cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperator(Message result) { 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 11750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1181cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendDtmf(char c, Message result) { 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 118922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1194cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville startDtmf(char c, Message result) { 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 120222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1207cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville stopDtmf(Message result) { 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1218cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 122322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 122422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(dtmfString); 122522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(on)); 122622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(off)); 12270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 12290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + dtmfString); 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1234cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 12370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 124022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 124122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smscPDU); 124222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1249cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCdmaSms(byte[] pdu, Message result) { 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int address_nbr_of_digits; 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int subaddr_nbr_of_digits; 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int bearerDataLength; 12550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataInputStream dis = new DataInputStream(bais); 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 126222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //teleServiceId 126322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.readInt()); //servicePresent 126422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //serviceCategory 126522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_digit_mode 126622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_mode 126722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_ton 126822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_plan 12690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville address_nbr_of_digits = (byte) dis.read(); 127022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) address_nbr_of_digits); 12710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 127222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); // address_orig_bytes[i] 12730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 127422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //subaddressType 127522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.read()); //subaddr_odd 12760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 127722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) subaddr_nbr_of_digits); 12780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 127922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 12800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville bearerDataLength = dis.read(); 128322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bearerDataLength); 12840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < bearerDataLength; i++){ 128522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //bearerData[i] 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }catch (IOException ex){ 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ex); 12900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1297cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 12990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 13000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 130222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 130322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1305cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1306cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1307cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1312cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 131722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 131822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 13190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1320cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1321cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 13230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 133422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 133522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 133622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smsc); 13370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1338cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1339cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1340cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1345cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 135222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 135322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 13540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1355cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1356cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1357cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 13580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 13630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Translates EF_SMS status bits to a status value compatible with 13640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SMS AT commands. See TS 27.005 3.1. 13650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 13660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int translateStatus(int status) { 13670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(status & 0x7) { 13680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_READ: 13690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 3; 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 2; 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Default to READ. 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1382cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String user, String password, String authType, String protocol, 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(7); 13910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(radioTechnology); 139322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(profile); 139422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(apn); 139522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(user); 139622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 139722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(authType); 139822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(protocol); 13990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + profile + " " + apn + " " + user + " " 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + password + " " + authType + " " + protocol); 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1408cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville deactivateDataCall(int cid, int reason, Message result) { 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 14130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 141422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 141522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(cid)); 141622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(reason)); 14170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1424cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(boolean on, Message result) { 14270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 14280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 142922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 143022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 14310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (on ? " on" : " off")); 14350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1440cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 14450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 144622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 144722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 14480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 14500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 14510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1455cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 14580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 14600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 146122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 146222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 1 : 0); 146322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1471cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 14740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 14760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 147722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 14780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // cause code according to X.S004-550E 147922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 14800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 14830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1487cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 149322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 149422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(success ? "1" : "0"); 149522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ackPdu); 14960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ' ' + success + " [" + ackPdu + ']'); 14990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1503cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 15060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, Message result) { 15070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 15080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1509cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 15120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, String aid, Message result) { 15130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 15140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 15150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 15170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 151822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(command); 151922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(fileid); 152022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(path); 152122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p1); 152222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p2); 152322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p3); 152422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(data); 152522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin2); 152622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 15270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 15290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 15300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(command) 15310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 15320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " path: " + path + "," 15330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + p1 + "," + p2 + "," + p3 15340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 15350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1539cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCLIR(Message result) { 15420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 15440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1550cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCLIR(int clirMode, Message result) { 15530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count ints 155722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 15580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 155922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 15600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + clirMode); 15630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1567cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallWaiting(int serviceClass, Message response) { 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 157322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 157422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + serviceClass); 15780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1582cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 15840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 15850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 15870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 158822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 158922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 159022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 15910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enable + ", " + serviceClass); 15940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1598cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeAutomatic(Message response) { 16010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1610cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 16130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + operatorNumeric); 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 162022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(operatorNumeric); 16210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1625cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getNetworkSelectionMode(Message response) { 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1637cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getAvailableNetworks(Message response) { 16400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1649cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallForward(int action, int cfReason, int serviceClass, 16520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message response) { 16530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 165622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(action); 165722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 165822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 165922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 166022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 166122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (timeSeconds); 16620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + action + " " + cfReason + " " + serviceClass 16650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + timeSeconds); 16660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1670cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallForwardStatus(int cfReason, int serviceClass, 16730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message response) { 16740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 16760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 167722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); // 2 is for query action, not in used anyway 167822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 167922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 168022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 168122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 168222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (0); 16830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + cfReason + " " + serviceClass); 16860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1690cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCLIP(Message response) { 16930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 16950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1702cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getBasebandVersion (Message response) { 17050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 17070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 17160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 17180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 17230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 17240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 17250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 172688e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 172788e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + serviceClass 172888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + appId + "]"); 17290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 173122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(4); 17320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 173422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 17350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 173722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLock (String facility, boolean lockState, String password, 17450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message response) { 17460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 17470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 17500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 17520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, String appId, Message response) { 17530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String lockString; 17540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 17560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 175788e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 175888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + lockState 175988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + serviceClass + " " + appId + "]"); 17600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 176222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(5); 17630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 176422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 17650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville lockString = (lockState)?"1":"0"; 176622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(lockString); 176722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 176822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 176922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 17700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1775cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendUSSD (String ussdString, Message response) { 17780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 17800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 178172000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGD) { 178272000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO String logUssdString = "*******"; 178372000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGV) logUssdString = ussdString; 178472000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 178572000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO + " " + logUssdString); 178672000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO } 17870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 178822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ussdString); 17890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 1794cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 17960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 17980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 18000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest)); 18010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1806cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 18080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 18100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1816cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 18180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 18200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 18230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 182422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(data); 18250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1830cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 18320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 18340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 183722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeStringArray(strings); 18380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 18440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 18460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1848cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message response) { 18500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 18520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 185322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 185422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bandMode); 18550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + bandMode); 18580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 18640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 18650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 18660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * ((AsyncResult)response.obj).result is an int[] with every 18670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * element representing one avialable BM_*_BAND 18680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1869cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message response) { 18710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 18730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1883cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 18850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 18860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 18870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 189022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 18910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 18950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 18960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1897cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 18990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 19010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1911cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 19130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 19150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + '[' + contents + ']'); 19180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 191922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 19200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1926cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 19280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 19290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 19320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 19330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] param = new int[1]; 19370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville param[0] = accept ? 1 : 0; 193822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeIntArray(param); 19390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 19450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 19460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCurrentPreferredNetworkType() { 19470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 19480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 19490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int mSetPreferredNetworkType; 19510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1955cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message response) { 19570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 19590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 196022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 196122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(networkType); 19620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSetPreferredNetworkType = networkType; 19640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = networkType; 19650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + networkType); 19680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1975cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message response) { 19770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 19790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 19870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1988cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 19900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 19910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 19920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 19990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2001cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 20030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 200422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 200522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 20060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + enable); 20090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2016cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 20180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 20190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2028cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 20300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 20310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 203222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 20330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + address); 20360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2043cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 20450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 204622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 204722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(available ? 1 : 0); 20480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 20500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + available); 20510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2058cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 20600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 20610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2070cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 20720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 20730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 20800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 20810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2082cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 20840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 20850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numOfConfig = config.length; 208722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(numOfConfig); 20880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < numOfConfig; i++) { 209022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromServiceId()); 209122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToServiceId()); 209222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromCodeScheme()); 209322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToCodeScheme()); 209422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].isSelected() ? 1 : 0); 20950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 20980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " with " + numOfConfig + " configs : "); 21000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numOfConfig; i++) { 21010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(config[i].toString()); 21020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2111cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 21130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 21140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 211522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 211622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 : 1); 21170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 21240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void sendScreenState(boolean on) { 21260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 212722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 212822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 21290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 21310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 21320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2136cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void 21380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onRadioAvailable() { 21390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // In case screen state was lost (due to process crash), 21400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // this ensures that the RIL knows the correct screen state. 21410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2142cf57b29a755b0249da687201bcc726941d37d42bBin Li PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 2143cf57b29a755b0249da687201bcc726941d37d42bBin Li sendScreenState(pm.isScreenOn()); 21440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RadioState getRadioStateFromInt(int stateInt) { 21470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState state; 21480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* RIL_RadioState ril.h */ 21500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(stateInt) { 21510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 0: state = RadioState.RADIO_OFF; break; 21520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 21530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 10: state = RadioState.RADIO_ON; break; 21540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 21560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 21570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Unrecognized RIL_RadioState: " + stateInt); 21580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 21600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void switchToRadioState(RadioState newState) { 21630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(newState); 21640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Holds a PARTIAL_WAKE_LOCK whenever 21680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 21690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * b) There is a request pending to be sent out. 21700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 21710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 21720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * happen often. 21730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 21740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock() { 21770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.acquire(); 21790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesPending++; 21800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 21830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 21840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 21880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone() { 21890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (mWakeLock) { 21900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mWakeLock.isHeld() && 21910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesPending == 0) && 21920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville (mRequestMessagesWaiting == 0)) { 21930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 21940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.release(); 21950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(RILRequest rr) { 22010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg; 22020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSocket == null) { 22040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 22050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 22100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acquireWakeLock(); 22120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.sendToTarget(); 22140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse (Parcel p) { 22180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int type; 22190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville type = p.readInt(); 22210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (type == RESPONSE_UNSOLICITED) { 22230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (p); 22240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (type == RESPONSE_SOLICITED) { 22250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (p); 22260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville releaseWakeLockIfDone(); 22290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2232892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * Release each request in mRequestList then clear the list 22330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param error is the RIL_Errno sent back 2234892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * @param loggable true means to print all requests in mRequestList 22350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2236892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt private void clearRequestList(int error, boolean loggable) { 22370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 2238892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2239892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 22400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2241fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, "WAKE_LOCK_TIMEOUT " + 22420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mReqPending=" + mRequestMessagesPending + 22430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 22440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count ; i++) { 2247892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt rr = mRequestList.get(i); 22480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2249fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " + 22500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest)); 22510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, null); 22530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 22540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2255892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.clear(); 22560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting = 0; 22570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 2261892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2262892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt for (int i = 0, s = mRequestList.size() ; i < s ; i++) { 2263892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 22640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mSerial == serial) { 2266892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.remove(i); 22670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRequestMessagesWaiting > 0) 22680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRequestMessagesWaiting--; 22690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 22700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 22750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 22780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processSolicited (Parcel p) { 22790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serial, error; 22800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean found = false; 22810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serial = p.readInt(); 22830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville error = p.readInt(); 22840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 22860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = findAndRemoveRequestFromList(serial); 22880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 2290fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "Unexpected solicited response! sn: " 22910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + serial + " error: " + error); 22920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 22930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret = null; 22960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error == 0 || p.dataAvail() > 0) { 22980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // either command succeeds or command fails but with data payload 22990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch (rr.mRequest) { 23000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* 23010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 23020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 23030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 23040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 23050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 23060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 23070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 23080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 23090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 23100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 23110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 23120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 23130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 23140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 23150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 23160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 23170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 23180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 23190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mTestingEmergencyCall.getAndSet(false)) { 23200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 23210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("testing emergency call, notify ECM Registrants"); 23220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 23230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = responseVoid(p); 23260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 23270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 23290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 23300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 23310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 23330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 23340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 23350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 23360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 23370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 23380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 23390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 23400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 23410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 23420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 23430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 23440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 23450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 23460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 23470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 23480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 23490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 23500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 23510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 23520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 23530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 23540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 23550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 23560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 23570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 23580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 23590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 23600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 23610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 23620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 23630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 23640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 23650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 23660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 23670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 23680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 23690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 23700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 23710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 23720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 23730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 23740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 23750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 23760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 23770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 23780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 23790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 23800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 23810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 23820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 23830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 23840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 23850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 23860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 23870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 23880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 23890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 23900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 23910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 23920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 23930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 23940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 23950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 23960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 23970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 23980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 23990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 24000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 24010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 24020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 24050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 24060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 24070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 24080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 24090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 24100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 24110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 24120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 24130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 24140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 24150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 24160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 24170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 24180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 24190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 24200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 24210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 24225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 24235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: ret = responseVoid(p); break; 24240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 24250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 24260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; 24270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 24280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Exceptions here usually mean invalid RIL responses 24290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2430fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, rr.serialString() + "< " 24310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 24320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " exception, possible invalid RIL response", tr); 24330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 24350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, null, tr); 24360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 24400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2443f860a3f42f87c9c8572623aff33349168d689477Wink Saville // Here and below fake RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, see b/7255789. 2444f860a3f42f87c9c8572623aff33349168d689477Wink Saville // This is needed otherwise we don't automatically transition to the main lock 2445f860a3f42f87c9c8572623aff33349168d689477Wink Saville // screen when the pin or puk is entered incorrectly. 2446be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville switch (rr.mRequest) { 2447be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK: 2448be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: 2449be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville if (mIccStatusChangedRegistrants != null) { 2450f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2451f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON enter sim puk fakeSimStatusChanged: reg count=" 2452f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2453f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2454be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2455be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2456be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville break; 2457be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2458be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville 24590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error != 0) { 2460f860a3f42f87c9c8572623aff33349168d689477Wink Saville switch (rr.mRequest) { 2461f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: 2462f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: 2463f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: 2464f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: 2465f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: 2466f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (mIccStatusChangedRegistrants != null) { 2467f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2468f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON some errors fakeSimStatusChanged: reg count=" 2469f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2470f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2471f860a3f42f87c9c8572623aff33349168d689477Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2472f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2473f860a3f42f87c9c8572623aff33349168d689477Wink Saville break; 2474f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2475f860a3f42f87c9c8572623aff33349168d689477Wink Saville 24760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, ret); 24770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 24790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 24820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + retToString(rr.mRequest, ret)); 24830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 24850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, ret, null); 24860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 24870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 24900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private String 24930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retToString(int req, Object ret) { 24940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret == null) return ""; 24950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (req) { 24960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Don't log these return values, for privacy's sake. 24970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: 24980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: 24990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: 25000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!RILJ_LOGV) { 25010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 25020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ""; 25030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb; 25070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s; 25080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length; 25090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret instanceof int[]){ 25100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] intArray = (int[]) ret; 25110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = intArray.length; 25120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(intArray[i++]); 25160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(intArray[i++]); 25180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (ret instanceof String[]) { 25230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] strings = (String[]) ret; 25240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = strings.length; 25250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 25260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 25270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 25280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(strings[i++]); 25290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 25300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(strings[i++]); 25310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 25340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 25360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 25370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (DriverCall dc : calls) { 25390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("[").append(dc).append("] "); 25400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 25430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> cells; 25440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cells = (ArrayList<NeighboringCellInfo>) ret; 25450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder(" "); 25460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (NeighboringCellInfo cell : cells) { 25470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(cell).append(" "); 25480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 25500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 25510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = ret.toString(); 25520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 25540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 25570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processUnsolicited (Parcel p) { 25580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response; 25590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret; 25600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readInt(); 25620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch(response) { 25640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 25650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 25660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 25670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 25680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 25690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 25710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 25720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 25730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 25740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 25750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 25760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 25770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 25780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 25790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 25800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 25810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 25820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 25830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 25840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 25850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 25870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 25880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 25890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 25900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 25910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 25920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 25930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 25940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 25950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 25960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 25970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 25980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 25990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 26000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 26010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 26020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 26030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 26040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 26055fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 26060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 26080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 26090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; (implied) 26100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 2611fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Exception processing unsol response: " + response + 26120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 26130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 26140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(response) { 26170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 26180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* has bonus radio state int */ 26190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 26200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 26210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchToRadioState(newState); 26230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 26250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants 26280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 26310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceNetworkStateRegistrants 26340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 26350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 26370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 26380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME this should move up a layer 26400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String a[] = new String[2]; 26410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville a[1] = (String)ret; 26430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 26450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromCMT(a); 26470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmSmsRegistrant != null) { 26480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmSmsRegistrant 26490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 26500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 26540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsStatusRegistrant != null) { 26570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsStatusRegistrant.notifyRegistrant( 26580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 26590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 26620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] smsIndex = (int[])ret; 26650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(smsIndex.length == 1) { 26670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsOnSimRegistrant != null) { 26680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsOnSimRegistrant. 26690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 26700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 26720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 26730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + smsIndex.length); 26740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: 26770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] resp = (String[])ret; 26780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (resp.length < 2) { 26800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = new String[2]; 26810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[0] = ((String[])ret)[0]; 26820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[1] = null; 26830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 26850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 26860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyRegistrant( 26870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, resp, null)); 26880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 26900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 26910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // has bonus long containing milliseconds since boot that the NITZ 26940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // time was received 26950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long nitzReceiveTime = p.readLong(); 26960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object[] result = new Object[2]; 26980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[0] = ret; 27000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[1] = Long.valueOf(nitzReceiveTime); 27010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 27030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 27040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ignoreNitz) { 27060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 27070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNITZTimeRegistrant != null) { 27090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 27110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 27120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 27130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // in case NITZ time registrant isnt registered yet 27140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLastNITZTimeInfo = result; 27150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 27200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note this is set to "verbose" because it happens 27210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // frequently 27220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 27230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalStrengthRegistrant != null) { 27250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalStrengthRegistrant.notifyRegistrant( 27260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 27300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 27330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 27360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSsnRegistrant != null) { 27390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant( 27400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: 27450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatSessionEndRegistrant != null) { 27480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatSessionEndRegistrant.notifyRegistrant( 27490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 27540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatProCmdRegistrant != null) { 27570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatProCmdRegistrant.notifyRegistrant( 27580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 27630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatEventRegistrant != null) { 27660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatEventRegistrant.notifyRegistrant( 27670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: 27720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatCallSetUpRegistrant != null) { 27750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatCallSetUpRegistrant.notifyRegistrant( 27760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 27810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 27820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 27840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 27850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: 27890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccRefreshRegistrants != null) { 27920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccRefreshRegistrants.notifyRegistrants( 27930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 27940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 27970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: 27980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingRegistrant != null) { 28010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingRegistrant.notifyRegistrant( 28020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 28070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 28080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRestrictedStateRegistrant != null) { 28090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRestrictedStateRegistrant.notifyRegistrant( 28100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 28150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccStatusChangedRegistrants != null) { 28180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 28190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 28230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms = (SmsMessage) ret; 28260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSmsRegistrant != null) { 28280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSmsRegistrant 28290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 28300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 28340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmBroadcastSmsRegistrant != null) { 28370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmBroadcastSmsRegistrant 28380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 28390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 28430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 28460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 28470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 28510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 28520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 28540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 28550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 28590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCallWaitingInfoRegistrants != null) { 28620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 28630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 28680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mOtaProvisionRegistrants != null) { 28710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 28720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 28730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 28770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 28780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 28800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 28810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (ClassCastException e) { 2882fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 28830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 28870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 28880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(rec); 28890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 28930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 28940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUnsolOemHookRawRegistrant != null) { 28950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 28960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 28980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: 29000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 29010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingbackToneRegistrants != null) { 29020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean playtone = (((int[])ret)[0] == 1); 29030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackToneRegistrants.notifyRegistrants( 29040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, playtone, null)); 29050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 29090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResendIncallMuteRegistrants != null) { 29120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResendIncallMuteRegistrants.notifyRegistrants( 29130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 29180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mVoiceRadioTechChangedRegistrants != null) { 29210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 29220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 29230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 29270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 29300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 29310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 29360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaPrlChangedRegistrants != null) { 29390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 29400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 29410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 29450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 29480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 29490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, null, null)); 29500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 29540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Initial conditions 29570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(false, null); 29580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setPreferredNetworkType(mPreferredNetworkType, null); 29590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 2960121c056d398b68e2bd2d35e6f5c2730fa7fb81c9Wink Saville setCellInfoListRate(Integer.MAX_VALUE, null); 29610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 29620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 29630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29645fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: { 29655fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 29665fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 29675fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (mRilCellInfoListRegistrants != null) { 29685fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville mRilCellInfoListRegistrants.notifyRegistrants( 29695fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville new AsyncResult (null, ret, null)); 29705fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29715fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville break; 29725fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 29730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 29770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 29780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 29790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 29800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 29810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 29820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilVersion = rilVer; 29830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRilConnectedRegistrants != null) { 29840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilConnectedRegistrants.notifyRegistrants( 29850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 29860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 29900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseInts(Parcel p) { 29910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 29920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 29930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = p.readInt(); 29950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 29970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInts ; i++) { 29990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 30000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseVoid(Parcel p) { 30080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 30090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallForward(Parcel p) { 30130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInfos; 30140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CallForwardInfo infos[]; 30150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInfos = p.readInt(); 30170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos = new CallForwardInfo[numInfos]; 30190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInfos ; i++) { 30210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i] = new CallForwardInfo(); 30220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].status = p.readInt(); 30240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].reason = p.readInt(); 30250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].serviceClass = p.readInt(); 30260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].toa = p.readInt(); 30270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].number = p.readString(); 30280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].timeSeconds = p.readInt(); 30290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return infos; 30320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSuppServiceNotification(Parcel p) { 30360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification notification = new SuppServiceNotification(); 30370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.notificationType = p.readInt(); 30390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.code = p.readInt(); 30400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.index = p.readInt(); 30410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.type = p.readInt(); 30420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 30430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 30450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaSms(Parcel p) { 30490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 30500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromParcel(p); 30510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sms; 30530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseString(Parcel p) { 30570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response; 30580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readString(); 30600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseStrings(Parcel p) { 30660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response[]; 30680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readStringArray(); 30700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseRaw(Parcel p) { 30760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 30770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte response[]; 30780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.createByteArray(); 30800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 30850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSMS(Parcel p) { 30860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageRef, errorCode; 30870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ackPDU; 30880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageRef = p.readInt(); 30900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ackPDU = p.readString(); 30910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville errorCode = p.readInt(); 30920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 30940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 30960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseICC_IO(Parcel p) { 31010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int sw1, sw2; 31020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte data[] = null; 31030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message ret; 31040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw1 = p.readInt(); 31060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw2 = p.readInt(); 31070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s = p.readString(); 31090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 31110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw1) 31120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 31130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + s); 31140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new IccIoResult(sw1, sw2, s); 31160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseIccCardStatus(Parcel p) { 3120e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 3121e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 3122e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 3123e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 3124e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 3125e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 3126e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 3127e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 31280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numApplications = p.readInt(); 31290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // limit to maximum allowed applications 31310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 31320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 31330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3134e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 31350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numApplications ; i++) { 3136e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3137e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3138e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3139e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3140e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3141e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3142e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3143e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3144e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3145e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 31460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3147e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 31480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSimRefresh(Parcel p) { 31520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IccRefreshResponse response = new IccRefreshResponse(); 31530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.refreshResult = p.readInt(); 31550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.efId = p.readInt(); 31560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.aid = p.readString(); 31570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 31580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 31610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallList(Parcel p) { 31620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 31630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int voiceSettings; 31640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> response; 31650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DriverCall dc; 31660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 31680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DriverCall>(num); 31690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) { 31710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: num=" + num + 31720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 31730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 31740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 31760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc = new DriverCall(); 31770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 31790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.index = p.readInt(); 31800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.TOA = p.readInt(); 31810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMpty = (0 != p.readInt()); 31820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMT = (0 != p.readInt()); 31830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.als = p.readInt(); 31840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville voiceSettings = p.readInt(); 31850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 31860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 31870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = p.readString(); 31880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int np = p.readInt(); 31890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 31900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.name = p.readString(); 31910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.namePresentation = p.readInt(); 31920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int uusInfoPresent = p.readInt(); 31930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfoPresent == 1) { 31940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo = new UUSInfo(); 31950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setType(p.readInt()); 31960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setDcs(p.readInt()); 31970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] userData = p.createByteArray(); 31980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setUserData(userData); 31990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 32000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 32010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getUserData().length)); 32020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (string)=" 32030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + new String(dc.uusInfo.getUserData())); 32040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (hex): " 32050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 32060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : NOT present!"); 32080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 32110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 32120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(dc); 32140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dc.isVoicePrivacy) { 32160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 32170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is enabled"); 32180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 32200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is disabled"); 32210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Collections.sort(response); 32250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 32270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 32280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: call ended, testing emergency call," + 32290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " notify ECM Registrants"); 32300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 32310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3237ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville private DataCallResponse getDataCallResponse(Parcel p, int version) { 3238ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall = new DataCallResponse(); 32390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = version; 32410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 5) { 32420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.status = p.readInt(); 32510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.suggestedRetryTime = p.readInt(); 32520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 32530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 32540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 32550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 3256ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville if ((dataCall.status == DcFailCause.NONE.getErrorCode()) && 32570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TextUtils.isEmpty(dataCall.ifname)) { 3258ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville throw new RuntimeException("getDataCallResponse, no ifname"); 32590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 32610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 32620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 32630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 32650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 32660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 32670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 32690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 32700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 32710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 32740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseDataCallList(Parcel p) { 3278ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville ArrayList<DataCallResponse> response; 32790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 32820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 32830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3284ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response = new ArrayList<DataCallResponse>(num); 32850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 3286ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response.add(getDataCallResponse(p, ver)); 32870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 32900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 32930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSetupDataCall(Parcel p) { 32940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 32950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 32960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 32970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3298ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall; 32990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ver < 5) { 3301ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = new DataCallResponse(); 33020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = ver; 33030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 33040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 33050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 33060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 33080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 33100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 33110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 33120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 4) { 33140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 33150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 33160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 33170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 33180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 5) { 33210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 33220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 33230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 33240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 33250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num != 1) { 33290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 33310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " got " + num); 33320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3333ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = getDataCallResponse(p, ver); 33340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 33370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseOperatorInfos(Parcel p) { 33410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String strings[] = (String [])responseStrings(p); 33420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<OperatorInfo> ret; 33430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (strings.length % 4 != 0) { 33450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 33460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 33470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + strings.length + " strings, expected multible of 4"); 33480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 33510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < strings.length ; i += 4) { 33530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret.add ( 33540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new OperatorInfo( 33550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+0], 33560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+1], 33570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+2], 33580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+3])); 33590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ret; 33620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 33650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCellList(Parcel p) { 33660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num, rssi; 33670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String location; 33680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> response; 33690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NeighboringCellInfo cell; 33700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 33720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<NeighboringCellInfo>(); 33730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Determine the radio access type 33750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String radioString = SystemProperties.get( 33760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 33770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int radioType; 33780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioString.equals("GPRS")) { 33790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_GPRS; 33800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("EDGE")) { 33810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_EDGE; 33820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("UMTS")) { 33830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UMTS; 33840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSDPA")) { 33850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSDPA; 33860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSUPA")) { 33870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSUPA; 33880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (radioString.equals("HSPA")) { 33890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_HSPA; 33900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 33910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville radioType = NETWORK_TYPE_UNKNOWN; 33920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Interpret the location based on radio access type 33950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 33960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 33970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rssi = p.readInt(); 33980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville location = p.readString(); 33990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 34000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(cell); 34010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGetPreferredNetworkType(Parcel p) { 34070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int [] response = (int[]) responseInts(p); 34080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response.length >= 1) { 34100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Since this is the response for getPreferredNetworkType 34110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we'll assume that it should be the value we want the 34120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // vendor ril to take if we reestablish a connection to it. 34130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = response[0]; 34140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGmsBroadcastConfig(Parcel p) { 34190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 34200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<SmsBroadcastConfigInfo> response; 34210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsBroadcastConfigInfo info; 34220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 34240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 34250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 34270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromId = p.readInt(); 34280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toId = p.readInt(); 34290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromScheme = p.readInt(); 34300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toScheme = p.readInt(); 34310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean selected = (p.readInt() == 1); 34320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 34340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville toScheme, selected); 34350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(info); 34360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaBroadcastConfig(Parcel p) { 34420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numServiceCategories; 34430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 34440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numServiceCategories = p.readInt(); 34460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numServiceCategories == 0) { 34480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: The logic of providing default values should 34490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not be done by this transport layer. And needs to 34500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // be done by the vendor ril or application logic. 34510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 34530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Faking a default record for all possible records. 34560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 34570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 34590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // default language and selection status to false for all. 34600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 34610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 34620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 1] = 1; 34630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 2] = 0; 34640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 34660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 34670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 34680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 34690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = numServiceCategories; 34710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1 ; i < numInts; i++) { 34720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 34730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 34770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 34800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSignalStrength(Parcel p) { 3481e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // Assume this is gsm, but doesn't matter as ServiceStateTracker 3482e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // sets the proper value. 3483e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville SignalStrength signalStrength = SignalStrength.makeSignalStrengthFromRilParcel(p); 34845b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 34850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private ArrayList<CdmaInformationRecords> 34880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaInformationRecord(Parcel p) { 34890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numberOfInfoRecs; 34900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> response; 34910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 34930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Loop through all of the information records unmarshalling them 34940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * and converting them to Java Objects. 34950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 34960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numberOfInfoRecs = p.readInt(); 34970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 34980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 35000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 35010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(InfoRec); 35020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaCallWaiting(Parcel p) { 35090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 35100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 3512cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville notification.numberPresentation = 3513cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville CdmaCallWaitingNotification.presentationFromCLIP(p.readInt()); 35140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.name = p.readString(); 35150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.namePresentation = notification.numberPresentation; 35160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.isPresent = p.readInt(); 35170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signalType = p.readInt(); 35180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.alertPitch = p.readInt(); 35190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signal = p.readInt(); 35200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberType = p.readInt(); 35210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPlan = p.readInt(); 35220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 35240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallRing(Parcel p){ 35280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char response[] = new char[4]; 35290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = (char) p.readInt(); // isPresent 35310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[1] = (char) p.readInt(); // signalType 35320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[2] = (char) p.readInt(); // alertPitch 35330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[3] = (char) p.readInt(); // signal 35340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 35390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 35400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 35410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 35420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mDisplayInfoRegistrants != null) { 35430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 35450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 35480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalInfoRegistrants != null) { 35490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalInfoRegistrants.notifyRegistrants( 35510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 35540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNumberInfoRegistrants != null) { 35550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNumberInfoRegistrants.notifyRegistrants( 35570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 35600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRedirNumInfoRegistrants != null) { 35610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 35630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 35660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLineControlInfoRegistrants != null) { 35670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 35690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 35720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53ClirInfoRegistrants != null) { 35730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 35750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 35780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 35790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 35800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 35810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 35820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35865fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville private ArrayList<CellInfo> responseCellInfoList(Parcel p) { 35875fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville int numberOfInfoRecs; 35885fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville ArrayList<CellInfo> response; 35895fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 35905fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 35915fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * Loop through all of the information records unmarshalling them 35925fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * and converting them to Java Objects. 35935fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 35945fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville numberOfInfoRecs = p.readInt(); 35955fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response = new ArrayList<CellInfo>(numberOfInfoRecs); 35965fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 35975fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 35985fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville CellInfo InfoRec = CellInfo.CREATOR.createFromParcel(p); 35995fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response.add(InfoRec); 36005fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36015fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36025fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville return response; 36035fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 36045fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 36050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 36060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(int request) { 36070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 36080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 36090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 36100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 36110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 36120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 36130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 36140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 36150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 36160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 36170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 36180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 36190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 36200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 36210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 36220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: return "DIAL"; 36230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 36240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 36250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 36260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 36270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 36280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 36290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: return "UDUB"; 36300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 36310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 36320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 36330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 36340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 36350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 36360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: return "DTMF"; 36370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 36380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 36390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 36400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 36410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 36420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 36430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 36440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 36450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 36460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 36470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 36480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 36490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 36500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 36510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 36520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 36530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 36540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 36550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 36560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 36570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 36580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 36590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 36600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 36610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 36620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 36630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 36640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 36650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 36660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 36670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 36680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 36690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 36700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 36710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 36720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 36730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 36740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 36750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 36760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 36770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 36780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 36790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 36800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 36810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 36820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 36830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 36840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 36850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 36860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 36870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 36880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 36890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 36900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 36910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 36920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 36930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 36940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 36950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 36960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 36970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 36980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 36990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 37000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 37010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 37020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 37030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 37040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 37050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 37060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 37070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 37080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 37090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 37100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 37110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 37120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 37130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 37140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 37150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 37160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 37170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 37180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 37190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 37200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 37215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: return "RIL_REQUEST_GET_CELL_INFO_LIST"; 37225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: return "RIL_REQUEST_SET_CELL_INFO_LIST_RATE"; 37230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown request>"; 37240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 37280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseToString(int request) 37290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville { 37300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 37310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 37320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 37330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 37340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 37350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 37360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 37370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 37380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 37390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 37400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 37410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 37420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 37430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 37440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 37450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 37460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 37470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 37480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 37490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 37500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 37510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 37520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 37530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 37540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 37550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 37560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 37570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 37580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 37590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 37600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 37610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 37620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 37630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 37640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 37655e1bc7508bd2f6cbe52ce1d7cb13194a0d265406Jiju Kinattingal case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONE"; 37660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 37670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 37680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 37690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 37700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 37710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 37725fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: return "UNSOL_CELL_INFO_LIST"; 37730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown reponse>"; 37740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLog(String msg) { 3778fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, msg); 37790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLogv(String msg) { 3782fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.v(RILJ_LOG_TAG, msg); 37830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLog(int response) { 37860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response)); 37870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogMore(int response, String more) { 37900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 37910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogRet(int response, Object ret) { 37940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 37950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogvRet(int response, Object ret) { 37980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 37990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 3803cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 38060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 38070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3813cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 38150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 38160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 38170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 38250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 38260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = phoneType; 38270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3832cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 38340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 38360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3845cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 38470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 38490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 385022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 385122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaRoamingType); 38520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaRoamingType); 38550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3862cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 38640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 38660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 386722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 386822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaSubscription); 38690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 38710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaSubscription); 38720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 38790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 38800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message response) { 38810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 38830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 38870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 38900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 38910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3892cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 38930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 38940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 38950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 38960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 38980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3905cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 39070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 39080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 39090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 391022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 391122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(ttyMode); 39120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + ttyMode); 39150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3922cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 39240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 39250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 39260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 392722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(FeatureCode); 39280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 39300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + FeatureCode); 39310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3935cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 39370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 39380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3942cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3943a63f55cf17629426d976830429a7612387532195Rika Brooks public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 39440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 39450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3946a63f55cf17629426d976830429a7612387532195Rika Brooks // Convert to 1 service category per config (the way RIL takes is) 3947a63f55cf17629426d976830429a7612387532195Rika Brooks ArrayList<CdmaSmsBroadcastConfigInfo> processedConfigs = 3948a63f55cf17629426d976830429a7612387532195Rika Brooks new ArrayList<CdmaSmsBroadcastConfigInfo>(); 3949a63f55cf17629426d976830429a7612387532195Rika Brooks for (CdmaSmsBroadcastConfigInfo config : configs) { 3950a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = config.getFromServiceCategory(); i <= config.getToServiceCategory(); i++) { 3951a63f55cf17629426d976830429a7612387532195Rika Brooks processedConfigs.add(new CdmaSmsBroadcastConfigInfo(i, 3952a63f55cf17629426d976830429a7612387532195Rika Brooks i, 3953a63f55cf17629426d976830429a7612387532195Rika Brooks config.getLanguage(), 3954a63f55cf17629426d976830429a7612387532195Rika Brooks config.isSelected())); 3955a63f55cf17629426d976830429a7612387532195Rika Brooks } 39560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3958a63f55cf17629426d976830429a7612387532195Rika Brooks CdmaSmsBroadcastConfigInfo[] rilConfigs = processedConfigs.toArray(configs); 395922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs.length); 3960a63f55cf17629426d976830429a7612387532195Rika Brooks for(int i = 0; i < rilConfigs.length; i++) { 396122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getFromServiceCategory()); 396222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getLanguage()); 396322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].isSelected() ? 1 : 0); 3964a63f55cf17629426d976830429a7612387532195Rika Brooks } 3965a63f55cf17629426d976830429a7612387532195Rika Brooks 3966a63f55cf17629426d976830429a7612387532195Rika Brooks if (RILJ_LOGD) { 3967a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3968a63f55cf17629426d976830429a7612387532195Rika Brooks + " with " + rilConfigs.length + " configs : "); 3969a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = 0; i < rilConfigs.length; i++) { 3970a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rilConfigs[i].toString()); 3971a63f55cf17629426d976830429a7612387532195Rika Brooks } 3972a63f55cf17629426d976830429a7612387532195Rika Brooks } 39730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3977cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 39790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 39800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 398122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 398222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 :1); 39830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 39900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 39910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3992cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 39930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message response) { 39940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 39950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 39970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 39990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4001cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 40020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 40030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 40040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 400522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(nonce); 40060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 40100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40125fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40135fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40145fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40155fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40165fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void getCellInfoList(Message result) { 40175fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CELL_INFO_LIST, result); 40185fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40195fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40205fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40215fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40225fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40235fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40245fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 40255fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 40265fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 40275fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 40285fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void setCellInfoListRate(int rateInMillis, Message response) { 40295fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog("setCellInfoListRate: " + rateInMillis); 40305fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, response); 40315fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40325fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(1); 40335fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(rateInMillis); 40345fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40355fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 40365fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40375fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 40385fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 40395fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 40400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* (non-Javadoc) 40410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 40420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 40430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 40440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testingEmergencyCall() { 40450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 40460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mTestingEmergencyCall.set(true); 40470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 405005ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka pw.println("RIL: " + this); 40510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSocket=" + mSocket); 40520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSenderThread=" + mSenderThread); 40530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSender=" + mSender); 40540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 40550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiver=" + mReceiver); 40560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLock=" + mWakeLock); 40570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 4058892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 40590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesPending=" + mRequestMessagesPending); 40600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting); 4061892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 40620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestList count=" + count); 40630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 4064892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt RILRequest rr = mRequestList.get(i); 40650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 40660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 40690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 40700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 4072