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 android.content.BroadcastReceiver; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Context; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.Intent; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.content.IntentFilter; 2380795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brownimport android.hardware.display.DisplayManager; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.ConnectivityManager; 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocket; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LocalSocketAddress; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.AsyncResult; 28f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.os.BatteryManager; 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Handler; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.HandlerThread; 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Looper; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Message; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcel; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager; 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.PowerManager.WakeLock; 3627eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadhamimport android.os.SystemClock; 37f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.os.SystemProperties; 3840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wangimport android.service.carrier.CarrierIdentifier; 395fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Savilleimport android.telephony.CellInfo; 40f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.telephony.ModemActivityInfo; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.NeighboringCellInfo; 424b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwaltimport android.telephony.PcoData; 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.PhoneNumberUtils; 443ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwaltimport android.telephony.RadioAccessFamily; 45fa4fd4721082689c4b276f67b845e7be249cb8daWink Savilleimport android.telephony.Rlog; 465b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingamimport android.telephony.SignalStrength; 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsManager; 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.SmsMessage; 496bc4098827f3070a44b5e51508b455d7c7be9c07Wink Savilleimport android.telephony.SubscriptionManager; 50d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padaweimport android.telephony.TelephonyHistogram; 51f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.telephony.TelephonyManager; 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.text.TextUtils; 537cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwaltimport android.util.SparseArray; 5480795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brownimport android.view.Display; 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 56f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.TelephonyProto.SmsSession; 57f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.TelephonyProto.TelephonySettings; 58f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 59f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.cdma.CdmaInformationRecords; 60f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 61f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.dataconnection.DataCallResponse; 62f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.dataconnection.DataProfile; 63f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.dataconnection.DcFailCause; 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 6509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahujaimport com.android.internal.telephony.gsm.SsData; 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 67f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.metrics.TelephonyMetrics; 68d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardApplicationStatus; 69d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccCardStatus; 70d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccIoResult; 71d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccRefreshResponse; 72d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.ByteArrayInputStream; 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.DataInputStream; 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileDescriptor; 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException; 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.InputStream; 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.PrintWriter; 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.ArrayList; 8127eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadhamimport java.util.Arrays; 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.Collections; 83d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padaweimport java.util.List; 84f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport java.util.Random; 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 867cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwaltimport java.util.concurrent.atomic.AtomicInteger; 87f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 88f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 89f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.RILConstants.*; 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 9432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass RILRequest { 96cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final String LOG_TAG = "RilRequest"; 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Class Variables 997cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt static Random sRandom = new Random(); 1007cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt static AtomicInteger sNextSerial = new AtomicInteger(0); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static Object sPoolSync = new Object(); 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static RILRequest sPool = null; 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int sPoolSize = 0; 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int MAX_POOL_SIZE = 4; 105a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private Context mContext; 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mSerial; 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int mRequest; 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message mResult; 11122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville Parcel mParcel; 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest mNext; 11332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold int mWakeLockType; 114d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe // time in ms when RIL request was made 115d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe long mStartTimeMs; 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Retrieves a new RILRequest instance from the pool. 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param request RIL_REQUEST_* 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param result sent when operation completes 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return a RILRequest instance from the pool. 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static RILRequest obtain(int request, Message result) { 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = null; 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized(sPoolSync) { 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPool != null) { 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = sPool; 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = rr.mNext; 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mNext = null; 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize--; 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = new RILRequest(); 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1407cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr.mSerial = sNextSerial.getAndIncrement(); 1417cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mRequest = request; 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult = result; 14422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = Parcel.obtain(); 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.mWakeLockType = RIL.INVALID_WAKELOCK; 147d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe rr.mStartTimeMs = SystemClock.elapsedRealtime(); 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (result != null && result.getTarget() == null) { 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new NullPointerException("Message target must not be null"); 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // first elements in any RIL Parcel 15322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(request); 15422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rr.mSerial); 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return rr; 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns a RILRequest instance to the pool. 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Note: This should only be called once per use. 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void release() { 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville synchronized (sPoolSync) { 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (sPoolSize < MAX_POOL_SIZE) { 16722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mNext = sPool; 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPool = this; 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sPoolSize++; 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult = null; 17132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if(mWakeLockType != RIL.INVALID_WAKELOCK) { 17232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold //This is OK for some wakelock types and not others 17332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if(mWakeLockType == RIL.FOR_WAKELOCK) { 17432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Rlog.e(LOG_TAG, "RILRequest releasing with held wake lock: " 17532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold + serialString()); 17632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 17732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest() { 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static void 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resetSerial() { 1877cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // use a random so that on recovery we probably don't mix old requests 1887cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // with new. 1897cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt sNextSerial.set(sRandom.nextInt()); 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serialString() { 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Cheesy way to do %04d 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb = new StringBuilder(8); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String sn; 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1987cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt long adjustedSerial = (((long)mSerial) - Integer.MIN_VALUE)%10000; 1997cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 2007cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt sn = Long.toString(adjustedSerial); 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //sb.append("J["); 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('['); 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append('0'); 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(sn); 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(']'); 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sb.toString(); 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville void 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onError(int error, Object ret) { 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CommandException ex; 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex = CommandException.fromRilErrno(error); 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 219fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville if (RIL.RILJ_LOGD) Rlog.d(LOG_TAG, serialString() + "< " 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + RIL.requestToString(mRequest) 2213522c54a64f577f2b657a775dae9b4eb2d8003d5Wink Saville + " error: " + ex + " ret=" + RIL.retToString(mRequest, ret)); 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResult != null) { 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(mResult, ret, ex); 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResult.sendToTarget(); 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville if (mParcel != null) { 22922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel.recycle(); 23022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mParcel = null; 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * RIL implementation of the CommandsInterface. 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 242fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville static final String RILJ_LOG_TAG = "RILJ"; 243a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe // Have a separate wakelock instance for Ack 244a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe static final String RILJ_ACK_WAKELOCK_NAME = "RILJ_ACK_WL"; 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final boolean RILJ_LOGD = true; 246cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final boolean RILJ_LOGV = false; // STOPSHIP if true 247e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen static final int RADIO_SCREEN_UNSET = -1; 248e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen static final int RADIO_SCREEN_OFF = 0; 249e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen static final int RADIO_SCREEN_ON = 1; 250d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe static final int RIL_HISTOGRAM_BUCKET_COUNT = 5; 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Wake lock timeout should be longer than the longest timeout in 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the vendor ril. 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2563464cbb60f1bf1127fd9e10efb05925f6f911b37Sanket Padawe private static final int DEFAULT_WAKE_LOCK_TIMEOUT_MS = 60000; 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 258a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe // Wake lock default timeout associated with ack 2593464cbb60f1bf1127fd9e10efb05925f6f911b37Sanket Padawe private static final int DEFAULT_ACK_WAKE_LOCK_TIMEOUT_MS = 200; 260a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe 26132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold private static final int DEFAULT_BLOCKING_MESSAGE_RESPONSE_TIMEOUT_MS = 2000; 26232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 263a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe // Variables used to differentiate ack messages from request while calling clearWakeLock() 26432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold public static final int INVALID_WAKELOCK = -1; 26532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold public static final int FOR_WAKELOCK = 0; 26632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold public static final int FOR_ACK_WAKELOCK = 1; 267a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Instance Variables 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket mSocket; 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville HandlerThread mSenderThread; 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILSender mSender; 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread mReceiverThread; 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver mReceiver; 27580795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown Display mDefaultDisplay; 27680795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown int mDefaultDisplayState = Display.STATE_UNKNOWN; 277e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen int mRadioScreenState = RADIO_SCREEN_UNSET; 278e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen boolean mIsDevicePlugged = false; 279a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe final WakeLock mWakeLock; // Wake lock associated with request/response 280a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe final WakeLock mAckWakeLock; // Wake lock associated with ack sent 281a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe final int mWakeLockTimeout; // Timeout associated with request/response 282a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe final int mAckWakeLockTimeout; // Timeout associated with ack sent 2837cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // The number of wakelock requests currently active. Don't release the lock 2847cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // until dec'd to 0 2857cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt int mWakeLockCount; 2867cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 287a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe // Variables used to identify releasing of WL on wakelock timeouts 288a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe volatile int mWlSequenceNum = 0; 289a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe volatile int mAckWlSequenceNum = 0; 290a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe 2917cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt SparseArray<RILRequest> mRequestList = new SparseArray<RILRequest>(); 292d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe static SparseArray<TelephonyHistogram> mRilTimeHistograms = new 293d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe SparseArray<TelephonyHistogram>(); 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 295d39109502855e8d81e45e21161d8bf0cfacf42e0Sanket Padawe Object[] mLastNITZTimeInfo; 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // When we are testing emergency calls 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 300a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private Integer mInstanceId; 301a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 302f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu private TelephonyMetrics mMetrics = TelephonyMetrics.getInstance(); 3035054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Events 3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_SEND = 1; 3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 308060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe static final int EVENT_SEND_ACK = 3; 309a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe static final int EVENT_ACK_WAKE_LOCK_TIMEOUT = 4; 31032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold static final int EVENT_BLOCKING_RESPONSE_TIMEOUT = 5; 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constants 3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // match with constant in ril.cpp 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_SOLICITED = 0; 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int RESPONSE_UNSOLICITED = 1; 318060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe static final int RESPONSE_SOLICITED_ACK = 2; 319060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe static final int RESPONSE_SOLICITED_ACK_EXP = 3; 320a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe static final int RESPONSE_UNSOLICITED_ACK_EXP = 4; 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 322a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville static final String[] SOCKET_NAME_RIL = {"rild", "rild2", "rild3"}; 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // RIL_CDMA_BroadcastServiceInfo 3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33280795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown private final DisplayManager.DisplayListener mDisplayListener = 33380795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown new DisplayManager.DisplayListener() { 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 33580795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown public void onDisplayAdded(int displayId) { } 33680795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown 33780795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown @Override 33880795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown public void onDisplayRemoved(int displayId) { } 33980795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown 34080795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown @Override 34180795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown public void onDisplayChanged(int displayId) { 34280795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown if (displayId == Display.DEFAULT_DISPLAY) { 343e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen final int oldState = mDefaultDisplayState; 344e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen mDefaultDisplayState = mDefaultDisplay.getState(); 345e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen if (mDefaultDisplayState != oldState) { 346e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen updateScreenState(); 347e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen } 348e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen } 349e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen } 350e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen }; 351e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen 352e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen private final BroadcastReceiver mBatteryStateListener = new BroadcastReceiver() { 353e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen @Override 354e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen public void onReceive(Context context, Intent intent) { 355e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen boolean oldState = mIsDevicePlugged; 356e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen // 0 means it's on battery 357e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen mIsDevicePlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0; 358e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen if (mIsDevicePlugged != oldState) { 35980795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown updateScreenState(); 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }; 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 364d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe public static List<TelephonyHistogram> getTelephonyRILTimingHistograms() { 365d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe List<TelephonyHistogram> list; 366d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe synchronized (mRilTimeHistograms) { 367d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe list = new ArrayList<>(mRilTimeHistograms.size()); 368d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe for (int i = 0; i < mRilTimeHistograms.size(); i++) { 369d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe TelephonyHistogram entry = new TelephonyHistogram(mRilTimeHistograms.valueAt(i)); 370d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe list.add(entry); 371d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 372d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 373d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe return list; 374d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 375d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILSender extends Handler implements Runnable { 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RILSender(Looper looper) { 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(looper); 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Only allocated once 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] dataLength = new byte[4]; 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Runnable implementation 385cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //setup if needed 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Handler implementation 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville handleMessage(Message msg) { 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = (RILRequest)(msg.obj); 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest req = null; 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (msg.what) { 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_SEND: 400060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe case EVENT_SEND_ACK: 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s; 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = mSocket; 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s == null) { 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 40832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 413060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe // Acks should not be stored in list before sending 414060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe if (msg.what != EVENT_SEND_ACK) { 415060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe synchronized (mRequestList) { 416d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe rr.mStartTimeMs = SystemClock.elapsedRealtime(); 417060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe mRequestList.append(rr.mSerial, rr); 418060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] data; 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 42322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville data = rr.mParcel.marshall(); 42422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.recycle(); 42522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel = null; 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (data.length > RIL_MAX_COMMAND_BYTES) { 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Parcel larger than max bytes allowed! " 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + data.length); 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // parcel length in big endian 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[0] = dataLength[1] = 0; 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[2] = (byte)((data.length >> 8) & 0xff); 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataLength[3] = (byte)((data.length) & 0xff); 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 438fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "writing packet: " + data.length + " bytes"); 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(dataLength); 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.getOutputStream().write(data); 442d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe if (msg.what == EVENT_SEND_ACK) { 443d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe rr.release(); 444d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe return; 445d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe } 4460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 447fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "IOException", ex); 4480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 4490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 4500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 4517cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (req != null) { 4520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 45332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 4540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 455d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe return; 4560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RuntimeException exc) { 458fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception ", exc); 4590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville req = findAndRemoveRequestFromList(rr.mSerial); 4600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // make sure this request has not already been handled, 4610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // eg, if RILReceiver cleared the list. 4627cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (req != null) { 4630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(GENERIC_FAILURE, null); 46432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 4650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 466d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe return; 4670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 4710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case EVENT_WAKE_LOCK_TIMEOUT: 4730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Haven't heard back from the last request. Assume we're 4740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not getting a response and release the wake lock. 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4767cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // The timer of WAKE_LOCK_TIMEOUT is reset with each 4777cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // new send request. So when WAKE_LOCK_TIMEOUT occurs 4787cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // all requests in mRequestList already waited at 4793464cbb60f1bf1127fd9e10efb05925f6f911b37Sanket Padawe // least DEFAULT_WAKE_LOCK_TIMEOUT_MS but no response. 4807cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // 4817cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // Note: Keep mRequestList so that delayed response 4827cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt // can still be handled when response finally comes. 4837cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 4847cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt synchronized (mRequestList) { 485a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (msg.arg1 == mWlSequenceNum && clearWakeLock(FOR_WAKELOCK)) { 4867cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (RILJ_LOGD) { 4877cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt int count = mRequestList.size(); 4886613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, "WAKE_LOCK_TIMEOUT " + 4897cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt " mRequestList=" + count); 4907cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt for (int i = 0; i < count; i++) { 4917cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.valueAt(i); 4926613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " 4937cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt + requestToString(rr.mRequest)); 4947cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 4950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 499a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe 500a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe case EVENT_ACK_WAKE_LOCK_TIMEOUT: 501a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (msg.arg1 == mAckWlSequenceNum && clearWakeLock(FOR_ACK_WAKELOCK)) { 50234dffd7066bcf421829e249f56288bc33735eaf4Sanket Padawe if (RILJ_LOGV) { 503a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe Rlog.d(RILJ_LOG_TAG, "ACK_WAKE_LOCK_TIMEOUT"); 504a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 505a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 506a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe break; 50732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 50832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case EVENT_BLOCKING_RESPONSE_TIMEOUT: 50932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold int serial = msg.arg1; 51032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr = findAndRemoveRequestFromList(serial); 51132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold // If the request has already been processed, do nothing 51232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if(rr == null) { 51332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 51432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 51532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 51632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold //build a response if expected 51732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if (rr.mResult != null) { 51832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Object timeoutResponse = getResponseForTimedOutRILRequest(rr); 51932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold AsyncResult.forMessage( rr.mResult, timeoutResponse, null); 52032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.mResult.sendToTarget(); 521f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeOnRilTimeoutResponse(mInstanceId, rr.mSerial, rr.mRequest); 52232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 52332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 52432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 52532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.release(); 52632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 5270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 53232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * In order to prevent calls to Telephony from waiting indefinitely 53332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * low-latency blocking calls will eventually time out. In the event of 53432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * a timeout, this function generates a response that is returned to the 53532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * higher layers to unblock the call. This is in lieu of a meaningful 53632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * response. 53732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * @param rr The RIL Request that has timed out. 53832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * @return A default object, such as the one generated by a normal response 53932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold * that is returned to the higher layers. 54032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold **/ 54132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold private static Object getResponseForTimedOutRILRequest(RILRequest rr) { 54232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if (rr == null ) return null; 54332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 54432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Object timeoutResponse = null; 54532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold switch(rr.mRequest) { 54632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case RIL_REQUEST_GET_ACTIVITY_INFO: 54732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold timeoutResponse = new ModemActivityInfo( 54832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 0, 0, 0, new int [ModemActivityInfo.TX_POWER_LEVELS], 0, 0); 54932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 55032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold }; 55132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold return timeoutResponse; 55232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 55332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 55432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold /** 5550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Reads in a single RIL message off the wire. A RIL message consists 5560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * of a 4-byte little-endian length and a subsequent series of bytes. 5570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The final message (length header omitted) is read into 5580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * <code>buffer</code> and the length of the final message (less header) 5590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * is returned. A return value of -1 indicates end-of-stream. 5600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 5610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param is non-null; Stream to read from 5620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param buffer Buffer to fill in. Must be as large as maximum 5630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * message size, or an ArrayOutOfBounds exception will be thrown. 5640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return Length of message less header, or -1 on end of stream. 5650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @throws IOException 5660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 5670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static int readRilMessage(InputStream is, byte[] buffer) 5680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throws IOException { 5690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int countRead; 5700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int offset; 5710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int remaining; 5720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageLength; 5730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // First, read in the length of the message 5750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 5760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = 4; 5770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 5780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 5790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 581fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message length"); 5820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 5830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 5840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 5860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 5870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 5880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageLength = ((buffer[0] & 0xff) << 24) 5900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[1] & 0xff) << 16) 5910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | ((buffer[2] & 0xff) << 8) 5920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | (buffer[3] & 0xff); 5930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 5940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Then, re-use the buffer and read in the message itself 5950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset = 0; 5960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining = messageLength; 5970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville do { 5980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville countRead = is.read(buffer, offset, remaining); 5990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (countRead < 0 ) { 601fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 6020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " remaining=" + remaining); 6030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return -1; 6040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville offset += countRead; 6070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville remaining -= countRead; 6080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } while (remaining > 0); 6090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return messageLength; 6110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville class RILReceiver implements Runnable { 6140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] buffer; 6150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILReceiver() { 6170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville buffer = new byte[RIL_MAX_COMMAND_BYTES]; 6180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 620cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 6210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 6220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville run() { 6230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int retryCount = 0; 624a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String rilSocket = "rild"; 6250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {for (;;) { 6270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocket s = null; 6280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress l; 6290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 630a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mInstanceId == null || mInstanceId == 0 ) { 631a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rilSocket = SOCKET_NAME_RIL[0]; 632a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } else { 633a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rilSocket = SOCKET_NAME_RIL[mInstanceId]; 634a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 635a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 6360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 6370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = new LocalSocket(); 638a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville l = new LocalSocketAddress(rilSocket, 6390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LocalSocketAddress.Namespace.RESERVED); 6400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.connect(l); 6410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex){ 6420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 6430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (s != null) { 6440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s.close(); 6450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex2) { 6470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //ignore failure to close after failure to connect 6480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // don't print an error message after the the first time 6510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // or after the 8th time 6520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (retryCount == 8) { 654fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e (RILJ_LOG_TAG, 655a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville "Couldn't find '" + rilSocket 6560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket after " + retryCount 6570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " times, continuing to retry silently"); 6586bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville } else if (retryCount >= 0 && retryCount < 8) { 659fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.i (RILJ_LOG_TAG, 660a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville "Couldn't find '" + rilSocket 6610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket; retrying after timeout"); 6620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 6650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 6660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException er) { 6670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount++; 6700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville continue; 6710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retryCount = 0; 6740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = s; 6766bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville Rlog.i(RILJ_LOG_TAG, "(" + mInstanceId + ") Connected to '" 6776bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville + rilSocket + "' socket"); 6780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length = 0; 6800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 6810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville InputStream is = mSocket.getInputStream(); 6820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (;;) { 6840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Parcel p; 6850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = readRilMessage(is, buffer); 6870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length < 0) { 6890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // End-of-stream reached 6900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 6910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 6920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p = Parcel.obtain(); 6940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.unmarshall(buffer, 0, length); 6950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.setDataPosition(0); 6960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 697fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville //Rlog.v(RILJ_LOG_TAG, "Read packet: " + length + " bytes"); 6980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse(p); 7000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville p.recycle(); 7010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (java.io.IOException ex) { 703a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.i(RILJ_LOG_TAG, "'" + rilSocket + "' socket closed", 7040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ex); 7050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (Throwable tr) { 706fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Uncaught exception read length=" + length + 7070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 7080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7106bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville Rlog.i(RILJ_LOG_TAG, "(" + mInstanceId + ") Disconnected from '" + rilSocket 7110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "' socket"); 7120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState (RadioState.RADIO_UNAVAILABLE); 7140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 7160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket.close(); 7170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (IOException ex) { 7180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSocket = null; 7210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest.resetSerial(); 7220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Clear request list on close 724892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt clearRequestList(RADIO_NOT_AVAILABLE, false); 7250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 726fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG,"Uncaught exception", tr); 7270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* We're disconnected so we don't know the ril version */ 7300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(-1); 7310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Constructors 7370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 739a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville this(context, preferredNetworkType, cdmaSubscription, null); 740a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 741a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 742a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public RIL(Context context, int preferredNetworkType, 743a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int cdmaSubscription, Integer instanceId) { 7440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super(context); 7450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 7460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 7470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 7480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 7497cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 750a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mContext = context; 7510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscription = cdmaSubscription; 7520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = preferredNetworkType; 7530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = RILConstants.NO_PHONE; 754a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mInstanceId = instanceId; 7550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 757fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, RILJ_LOG_TAG); 7580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLock.setReferenceCounted(false); 759a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mAckWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, RILJ_ACK_WAKELOCK_NAME); 760a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mAckWakeLock.setReferenceCounted(false); 7610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 7623464cbb60f1bf1127fd9e10efb05925f6f911b37Sanket Padawe DEFAULT_WAKE_LOCK_TIMEOUT_MS); 763a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mAckWakeLockTimeout = SystemProperties.getInt( 7643464cbb60f1bf1127fd9e10efb05925f6f911b37Sanket Padawe TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, DEFAULT_ACK_WAKE_LOCK_TIMEOUT_MS); 7657cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mWakeLockCount = 0; 7660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7676bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville mSenderThread = new HandlerThread("RILSender" + mInstanceId); 7680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSenderThread.start(); 7690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Looper looper = mSenderThread.getLooper(); 7710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSender = new RILSender(looper); 7720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 7730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 7740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Context.CONNECTIVITY_SERVICE); 7750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 7760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 7770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 7786bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville riljLog("Starting RILReceiver" + mInstanceId); 7790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiver = new RILReceiver(); 7806bc4098827f3070a44b5e51508b455d7c7be9c07Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver" + mInstanceId); 7810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mReceiverThread.start(); 7820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 78380795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown DisplayManager dm = (DisplayManager)context.getSystemService( 78480795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown Context.DISPLAY_SERVICE); 78580795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown mDefaultDisplay = dm.getDisplay(Display.DEFAULT_DISPLAY); 78680795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown dm.registerDisplayListener(mDisplayListener, null); 787bdbd98133976d44126008a745eda8c0309bce6f5Sungmin Choi mDefaultDisplayState = mDefaultDisplay.getState(); 788e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen 789e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 790e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen Intent batteryStatus = context.registerReceiver(mBatteryStateListener, filter); 791e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen if (batteryStatus != null) { 792e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen // 0 means it's on battery 793e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen mIsDevicePlugged = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0; 794e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen } 7950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 796a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 797a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville TelephonyDevController tdc = TelephonyDevController.getInstance(); 798a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville tdc.registerRIL(this); 7990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** CommandsInterface implementation 8020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 803cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getVoiceRadioTechnology(Message result) { 8050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 8060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8131260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void getImsRegistrationState(Message result) { 8141260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_REGISTRATION_STATE, result); 8151260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 8161260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) { 8171260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8181260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 8191260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 8201260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 8211260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 8220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 8240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setOnNITZTime(h, what, obj); 8250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Send the last NITZ time if we have it 8270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLastNITZTimeInfo != null) { 8280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 8290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant( 8300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 8310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 834cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 8350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 8360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIccCardStatus(Message result) { 8370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 8380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 8390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 8400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 846a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setUiccSubscription(int slotId, int appIndex, int subId, 847a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int subStatus, Message result) { 848a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville //Note: This RIL request is also valid for SIM and RUIM (ICC card) 849a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_UICC_SUBSCRIPTION, result); 850a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 851a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 852a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + " slot: " + slotId + " appIndex: " + appIndex 853a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + " subId: " + subId + " subStatus: " + subStatus); 854a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 855a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(slotId); 856a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(appIndex); 857a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(subId); 858a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(subStatus); 859a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 860a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville send(rr); 861a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 862a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 863a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME This API should take an AID and slot ID 864a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void setDataAllowed(boolean allowed, Message result) { 865a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ALLOW_DATA, result); 866a5ea9112a448ee8a51df1a2317457ae560a191f2Robert Greenwalt if (RILJ_LOGD) { 867a5ea9112a448ee8a51df1a2317457ae560a191f2Robert Greenwalt riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + 868a5ea9112a448ee8a51df1a2317457ae560a191f2Robert Greenwalt " allowed: " + allowed); 869a5ea9112a448ee8a51df1a2317457ae560a191f2Robert Greenwalt } 870a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 871a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(1); 872a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeInt(allowed ? 1 : 0); 873a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville send(rr); 874a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 875a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 8760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin(String pin, Message result) { 8780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(pin, null, result); 8790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 8830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 8840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 8850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 8860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 88922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 89022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 89122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 8920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 8940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 8950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 8960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 8970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 8980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(puk, newPin, null, result); 8990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 9030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 9040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 9050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 9060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 90922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 91022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 91122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 91222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2(String pin, Message result) { 9190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(pin, null, result); 9200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 9240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 9250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 9260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 9270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 93022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 93122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin); 93222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 9390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 9400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 9440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 9450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 9460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 9470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 95022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 95122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(puk); 95222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 95322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 9600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 9610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 9650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 9660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 9670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 9680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 97122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 97222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin); 97322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin); 97422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 9810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 9820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override public void 9850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 9860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 9870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 9880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 9890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 99222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 99322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPin2); 99422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPin2); 99522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 9960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 9970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 9980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 9990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1000cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 10030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 10040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 100722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 100822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 100922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(oldPwd); 101022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(newPwd); 10110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1015cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 10180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 10190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 102222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 102322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(netpin); 10240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1028cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCurrentCalls (Message result) { 10310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 10320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1038cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Deprecated public void 10400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getPDPContextList(Message result) { 10410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(result); 10420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1044cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataCallList(Message result) { 10470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, 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 dial (String address, int clirMode, Message result) { 10570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(address, clirMode, null, result); 10580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1060cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 10630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 10640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 106522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 106622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 10670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfo == null) { 106922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(0); // UUS information is absent 10700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 107122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); // UUS information is present 107222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getType()); 107322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(uusInfo.getDcs()); 107422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(uusInfo.getUserData()); 10750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 10800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1082cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSI(Message result) { 10850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(null, result); 10860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 10870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1088cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 10890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 10900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMSIForApp(String aid, Message result) { 10910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 10920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 109322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 109422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 10950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 10960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 10970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "> getIMSI: " + requestToString(rr.mRequest) 10980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 10990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1103cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEI(Message result) { 11060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 11070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1113cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getIMEISV(Message result) { 11160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 11170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1124cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupConnection (int gsmIndex, Message result) { 11270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 11280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 11300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 11320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville gsmIndex); 11330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 113422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 113522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 11360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1140cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupWaitingOrBackground (Message result) { 11430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 11440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 11450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1151cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupForegroundResumeBackground (Message result) { 11540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 11560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 11570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 11580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1163cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchWaitingOrHoldingAndActive (Message result) { 11660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain( 11680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 11690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 11700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1175cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 11770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville conference (Message result) { 11780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 11790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 11800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1187cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 11890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 11900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 11910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 119222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 119322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1:0); 11940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 11950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 11960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 11970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1198cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 11990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredVoicePrivacy(Message result) { 12000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 12010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result); 12020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1205cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville separateConnection (int gsmIndex, Message result) { 12080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 12100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 12120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + gsmIndex); 12130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 121422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 121522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(gsmIndex); 12160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1220cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acceptCall (Message result) { 12230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 12250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1228f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilAnswer(mInstanceId, rr.mSerial); 12295054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 12300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1233cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rejectCall (Message result) { 12360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 12380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1244cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville explicitCallTransfer (Message result) { 12470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 12490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1255cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastCallFailCause (Message result) { 12580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 12600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @deprecated 12680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1269cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Deprecated 1270cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastPdpFailCause (Message result) { 12730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (result); 12740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 12770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * The preferred new alternative to getLastPdpFailCause 12780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1279cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLastDataCallFailCause (Message result) { 12820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 12840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 12860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 12880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 12890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1290cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 12910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 12920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setMute (boolean enableMute, Message response) { 12930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 12940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 12950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 12960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 12970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enableMute); 12980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 129922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 130022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enableMute ? 1 : 0); 13010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1305cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getMute (Message response) { 13080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 13100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1316cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getSignalStrength (Message result) { 13190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 13210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getVoiceRegistrationState (Message result) { 13300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 13320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1338cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDataRegistrationState (Message result) { 13410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 13430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1349cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getOperator(Message result) { 13520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 13540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1360cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 1362a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville getHardwareConfig (Message result) { 1363a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_HARDWARE_CONFIG, result); 1364a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1365a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1366a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1367a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville send(rr); 1368a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 1369a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1370a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 1371a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void 13720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendDtmf(char c, Message result) { 13730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 13750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 137822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 13790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1383cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville startDtmf(char c, Message result) { 13860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 13870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 13880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 13900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 139122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Character.toString(c)); 13920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 13930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 13940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 13950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1396cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 13970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 13980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville stopDtmf(Message result) { 13990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 14010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 14030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1407cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 14080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 14100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 14110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 141222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(3); 141322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(dtmfString); 141422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(on)); 141522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(off)); 14160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + dtmfString); 14190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14231260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa private void 14241260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest (RILRequest rr, String smscPDU, String pdu) { 14251260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(2); 14261260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeString(smscPDU); 14271260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeString(pdu); 14281260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 14291260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 14300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 14310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 14320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 14330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 14340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14351260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest(rr, smscPDU, pdu); 14360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 14380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1439f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSendSms(mInstanceId, rr.mSerial, SmsSession.Event.Tech.SMS_GSM, 1440f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP); 14415054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 14420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 14430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14456ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi @Override 14466ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi public void 14476ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi sendSMSExpectMore (String smscPDU, String pdu, Message result) { 14486ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi RILRequest rr 14496ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi = RILRequest.obtain(RIL_REQUEST_SEND_SMS_EXPECT_MORE, result); 14506ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi 14516ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi constructGsmSendSmsRilRequest(rr, smscPDU, pdu); 14526ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi 14536ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 14546ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi 1455f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSendSms(mInstanceId, rr.mSerial, SmsSession.Event.Tech.SMS_GSM, 1456f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP); 14575054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 14586ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi send(rr); 14596ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi } 14606ad88a8a2caf739e78c8d5f7f50fc7fa84a07ca7Chaitanya Saggurthi 14611260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa private void 14621260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(RILRequest rr, byte[] pdu) { 14630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int address_nbr_of_digits; 14640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int subaddr_nbr_of_digits; 14650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int bearerDataLength; 14660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 14670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DataInputStream dis = new DataInputStream(bais); 14680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 147022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //teleServiceId 147122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.readInt()); //servicePresent 147222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.readInt()); //serviceCategory 147322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_digit_mode 147422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_mode 147522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_ton 147622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //address_nbr_plan 14770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville address_nbr_of_digits = (byte) dis.read(); 147822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) address_nbr_of_digits); 14790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 148022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); // address_orig_bytes[i] 14810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 148222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(dis.read()); //subaddressType 148322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) dis.read()); //subaddr_odd 14840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 148522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte((byte) subaddr_nbr_of_digits); 14860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 148722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 14880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 14900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville bearerDataLength = dis.read(); 149122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bearerDataLength); 14920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i=0; i < bearerDataLength; i++){ 149322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByte(dis.readByte()); //bearerData[i] 14940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }catch (IOException ex){ 14960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 14970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ex); 14980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 14991260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 15001260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15011260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 15021260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendCdmaSms(byte[] pdu, Message result) { 15031260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr 15041260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 15051260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15061260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(rr, pdu); 15071260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15081260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15091260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 1510f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSendSms(mInstanceId, rr.mSerial, SmsSession.Event.Tech.SMS_CDMA, 1511f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP2); 15125054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 15131260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 15141260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 15151260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15161260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 15171260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendImsGsmSms (String smscPDU, String pdu, int retry, int messageRef, 15181260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa Message result) { 15191260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_SEND_SMS, result); 15201260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 1521ace9a749c5a2a5e07527f728b7331423d16c36cdSukanya Rajkhowa rr.mParcel.writeInt(RILConstants.GSM_PHONE); 15221260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeByte((byte)retry); 15231260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(messageRef); 15241260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15251260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructGsmSendSmsRilRequest(rr, smscPDU, pdu); 15261260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15271260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15281260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 1529f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSendSms(mInstanceId, rr.mSerial, SmsSession.Event.Tech.SMS_IMS, 1530f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP); 15315054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 15321260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa send(rr); 15331260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa } 15341260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15351260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa public void 15361260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message result) { 15371260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa RILRequest rr = RILRequest.obtain(RIL_REQUEST_IMS_SEND_SMS, result); 15381260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 1539ace9a749c5a2a5e07527f728b7331423d16c36cdSukanya Rajkhowa rr.mParcel.writeInt(RILConstants.CDMA_PHONE); 15401260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeByte((byte)retry); 15411260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa rr.mParcel.writeInt(messageRef); 15421260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 15431260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa constructCdmaSendSmsRilRequest(rr, pdu); 15440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1547f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSendSms(mInstanceId, rr.mSerial, SmsSession.Event.Tech.SMS_IMS, 1548f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP2); 15495054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 15500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1553cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnSim(int index, Message response) { 15550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 15560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 155822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 155922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 15600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1561cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1562cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1563cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 15640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1568cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void deleteSmsOnRuim(int index, Message response) { 15700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 15710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 157322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 157422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(index); 15750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1576cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1577cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1578cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + index); 15790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 15820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1583cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 15840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 15850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 15860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 15880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 15890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 159022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 159122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 159222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(smsc); 15930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1594cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1595cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1596cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 15970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 15980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 15990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1601cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 16030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville status = translateStatus(status); 16040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 16060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 16070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 160822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(status); 160922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pdu); 16100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1611cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville if (RILJ_LOGV) riljLog(rr.serialString() + "> " 1612cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + requestToString(rr.mRequest) 1613cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville + " " + status); 16140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 16190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Translates EF_SMS status bits to a status value compatible with 16200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SMS AT commands. See TS 27.005 3.1. 16210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 16220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private int translateStatus(int status) { 16230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(status & 0x7) { 16240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_READ: 16250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 16260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 16270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 16280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 16290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 3; 16300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 16310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 2; 16320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Default to READ. 16350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 1; 16360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1638cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16405d5ec64fcd293928776aebe5c92278afb5bc019dPavel Zhamaitsiak setupDataCall(int radioTechnology, int profile, String apn, 16415d5ec64fcd293928776aebe5c92278afb5bc019dPavel Zhamaitsiak String user, String password, int authType, String protocol, 16420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message result) { 16430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 16450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 164622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(7); 16470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16485d5ec64fcd293928776aebe5c92278afb5bc019dPavel Zhamaitsiak rr.mParcel.writeString(Integer.toString(radioTechnology + 2)); 16495d5ec64fcd293928776aebe5c92278afb5bc019dPavel Zhamaitsiak rr.mParcel.writeString(Integer.toString(profile)); 165022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(apn); 165122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(user); 165222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 16535d5ec64fcd293928776aebe5c92278afb5bc019dPavel Zhamaitsiak rr.mParcel.writeString(Integer.toString(authType)); 165422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(protocol); 16550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 16570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 16580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + profile + " " + apn + " " + user + " " 16590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + password + " " + authType + " " + protocol); 16600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1661f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSetupDataCall(mInstanceId, rr.mSerial, 1662f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu radioTechnology, profile, apn, authType, protocol); 16635054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 16640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1667cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville deactivateDataCall(int cid, int reason, Message result) { 16700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 16710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 16720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 167322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 167422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(cid)); 167522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(reason)); 16760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 16780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 16790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1680f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilDeactivateDataCall(mInstanceId, rr.mSerial, 1681f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu cid, reason); 16825054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 16830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 16840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1686cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 16870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 16880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(boolean on, Message result) { 16890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 16900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 169122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 169222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 16930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 16950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + (on ? " on" : " off")); 16970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 16980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 16990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1702cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 170303586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla public void requestShutdown(Message result) { 170403586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla RILRequest rr = RILRequest.obtain(RIL_REQUEST_SHUTDOWN, result); 170503586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla 170603586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla if (RILJ_LOGD) 170703586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 170803586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla 170903586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla send(rr); 171003586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla } 171103586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla 171203586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla @Override 17130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 17150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 17170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 171822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 171922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 17200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 17220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest)); 17230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1727cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 17300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 17320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 173322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 173422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 1 : 0); 173522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 17360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 17390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1743cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 17460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 17480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 174922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 17500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // cause code according to X.S004-550E 175122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cause); 17520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + success + " " + cause); 17550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1759cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 17620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 17640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 176522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 176622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(success ? "1" : "0"); 176722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ackPdu); 17680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + ' ' + success + " [" + ackPdu + ']'); 17710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 17720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 17730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 17740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1775cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 17780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, Message result) { 17790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 17800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1781cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 17820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 17830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 17840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String data, String pin2, String aid, Message result) { 17850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //Note: This RIL request has not been renamed to ICC, 17860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // but this request is also valid for SIM and RUIM 17870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 17880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 17890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 179022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(command); 179122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(fileid); 179222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(path); 179322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p1); 179422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p2); 179522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(p3); 179622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(data); 179722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(pin2); 179822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(aid); 17990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 18010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 18020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(command) 18030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 18040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " path: " + path + "," 18050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + p1 + "," + p2 + "," + p3 18060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " aid: " + aid); 18070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1811cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCLIR(Message result) { 18140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 18160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1822cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCLIR(int clirMode, Message result) { 18250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 18270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count ints 182922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 18300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 183122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(clirMode); 18320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + clirMode); 18350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1839cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallWaiting(int serviceClass, Message response) { 18420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 18440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 184522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 184622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 18470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + serviceClass); 18500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1854cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 18570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 18590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 186022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); 186122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 186222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 18630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + enable + ", " + serviceClass); 18660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1870cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeAutomatic(Message response) { 18730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 18750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1882cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 18850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 18860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 18870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 18880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + operatorNumeric); 18910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 189222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(operatorNumeric); 18930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 18940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 18950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 18960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1897cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 18980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 18990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getNetworkSelectionMode(Message response) { 19000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 19020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 19030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1909cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getAvailableNetworks(Message response) { 19120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 19140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 19150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1921cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCallForward(int action, int cfReason, int serviceClass, 19240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, int timeSeconds, Message response) { 19250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 19270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 192822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(action); 192922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 193022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 193122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 193222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 193322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (timeSeconds); 19340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + action + " " + cfReason + " " + serviceClass 19370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + timeSeconds); 19380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1942cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCallForwardStatus(int cfReason, int serviceClass, 19450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String number, Message response) { 19460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 19480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 194922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(2); // 2 is for query action, not in used anyway 195022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cfReason); 195122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(serviceClass); 195222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(PhoneNumberUtils.toaFromString(number)); 195322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(number); 195422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt (0); 19550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 19570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + cfReason + " " + serviceClass); 19580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1962cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryCLIP(Message response) { 19650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 19670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 19710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1974cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 19750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getBasebandVersion (Message response) { 19770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 19780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, 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 @Override 19860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 19880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 19890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 19900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 19910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 19930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 19940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 19950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message response) { 19960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 19970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 199888e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 199988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + serviceClass 200088e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + appId + "]"); 20010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 200322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(4); 20040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 200522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 200622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 20070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 200822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 200922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 20100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 20150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 20160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLock (String facility, boolean lockState, String password, 20170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, Message response) { 20180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 20190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 20220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 20230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 20240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serviceClass, String appId, Message response) { 20250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String lockString; 20260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 20270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 20280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 202988e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 203088e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " [" + facility + " " + lockState 203188e9c9700fbb6119c2564fb7173821c84b360d07Abhishek Adappa + " " + serviceClass + " " + appId + "]"); 20320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // count strings 203422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(5); 20350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 203622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(facility); 20370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville lockString = (lockState)?"1":"0"; 203822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(lockString); 203922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(password); 204022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(Integer.toString(serviceClass)); 204122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(appId); 20420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2047cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 20490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendUSSD (String ussdString, Message response) { 20500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 20510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 20520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 205372000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGD) { 205472000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO String logUssdString = "*******"; 205572000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO if (RILJ_LOGV) logUssdString = ussdString; 205672000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 205772000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO + " " + logUssdString); 205872000e2c06bbee97d5ce31c4f66befab8057cb71Cuihtlauac ALVARADO } 20590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 206022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(ussdString); 20610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // inherited javadoc suffices 2066cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void cancelPendingUssd (Message response) { 20680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 20690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 20700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 20720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest)); 20730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2078cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void resetRadio(Message result) { 20800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 20810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 20820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 20840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 20870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2088cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 20890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 20900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 20910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 20920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 20940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 20950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 209622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeByteArray(data); 20970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 20980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 20990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2102cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 21040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 21050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 21060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 210922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeStringArray(strings); 21100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Assign a specified band for RF configuration. 21160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 21170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param bandMode one of BM_*_BAND 21180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 21190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2120cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setBandMode (int bandMode, Message response) { 21220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 21230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 21240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 212522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 212622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(bandMode); 21270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 21290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " " + bandMode); 21300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Query the list of band mode supported by RF. 21360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 21370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param response is callback message 21388a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * ((AsyncResult)response.obj).result is an int[] where int[0] is 21398a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * the size of the array and the rest of each element representing 21408a3cf2d80c0cdee7360404dd0ac08ca6f9a7e246Derek Tan * one available BM_*_BAND 21410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2142cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryAvailableBandMode (Message response) { 21440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr 21450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 21460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 21470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2156cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendTerminalResponse(String contents, Message response) { 21580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 21590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 21600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 216322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 21640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2170cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelope(String contents, Message response) { 21720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 21730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 21740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 21760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 217722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 21780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2184cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 21850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 21860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 21870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 21880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 21900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + '[' + contents + ']'); 21910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 219222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(contents); 21930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 21940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 21950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 21960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 21970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 21980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2199cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void handleCallSetupRequestFromSim( 22010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean accept, Message response) { 22020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 22040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 22050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response); 22060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 22080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] param = new int[1]; 22100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville param[0] = accept ? 1 : 0; 221122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeIntArray(param); 22120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 22180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 22190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setPreferredNetworkType(int networkType , Message response) { 22200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 22210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 22220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 222322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 222422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(networkType); 22250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = networkType; 22270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 22290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + networkType); 22300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2231f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeSetPreferredNetworkType(mInstanceId, networkType); 22329746fca2d7389f0fce6d5d031d87acd87b9de723Pavel Zhamaitsiak 22330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2239cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getPreferredNetworkType(Message response) { 22410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 22420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 22430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 22450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2252cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getNeighboringCids(Message response) { 22540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 22550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 22560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 22580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2265cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setLocationUpdates(boolean enable, Message response) { 22670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 226822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 226922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(enable ? 1 : 0); 22700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 22720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + enable); 22730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2280cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getSmscAddress(Message result) { 22820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 22830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 22850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 22870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 22880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 22900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 22910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2292cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 22930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setSmscAddress(String address, Message result) { 22940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 22950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 229622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(address); 22970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 22980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 22990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + address); 23000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 23050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 23060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2307cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 23080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 23090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 231022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 231122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(available ? 1 : 0); 23120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 23140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) + ": " + available); 23150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 23200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 23210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2322cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 23230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void reportStkServiceIsRunning(Message result) { 23240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 23250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 23270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 23320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 23330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2334cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 23350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getGsmBroadcastConfig(Message response) { 23360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 23370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 23390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 23440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 23450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2346cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 23470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 23480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 23490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numOfConfig = config.length; 235122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(numOfConfig); 23520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for(int i = 0; i < numOfConfig; i++) { 235422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromServiceId()); 235522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToServiceId()); 235622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getFromCodeScheme()); 235722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].getToCodeScheme()); 235822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(config[i].isSelected() ? 1 : 0); 23590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) { 23620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 23630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " with " + numOfConfig + " configs : "); 23640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numOfConfig; i++) { 23650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog(config[i].toString()); 23660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 23730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 23740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2375cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 23760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 23770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 23780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 237922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 238022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 : 1); 23810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 23830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 23850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 23860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 23870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //***** Private Methods 23880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 238980795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // TODO(jeffbrown): Delete me. 239080795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // The RIL should *not* be listening for screen state changes since they are 239180795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // becoming increasingly ambiguous on our devices. The RIL_REQUEST_SCREEN_STATE 239280795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // message should be deleted and replaced with more precise messages to control 239380795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // behavior such as signal strength reporting or power managements based on 239480795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown // more robust signals. 2395e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen /** 2396e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen * Update the screen state. Send screen state ON if the default display is ON or the device 2397e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen * is plugged. 2398e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen */ 239980795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown private void updateScreenState() { 2400e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen final int oldState = mRadioScreenState; 2401e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen mRadioScreenState = (mDefaultDisplayState == Display.STATE_ON || mIsDevicePlugged) 2402e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen ? RADIO_SCREEN_ON : RADIO_SCREEN_OFF; 2403e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen if (mRadioScreenState != oldState) { 2404e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen if (RILJ_LOGV) { 2405e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen riljLog("defaultDisplayState: " + mDefaultDisplayState 2406e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen + ", isDevicePlugged: " + mIsDevicePlugged); 240780795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown } 2408e694c1d4e5fd58c5ee2eebcc057bd0586022bcd7Yao Chen sendScreenState(mRadioScreenState == RADIO_SCREEN_ON); 240980795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown } 241080795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown } 241180795c239d6281db5fbf0f5a23494bfa3fb938f5Jeff Brown 24120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void sendScreenState(boolean on) { 24130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 241422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 241522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(on ? 1 : 0); 24160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 24180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 24190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 24210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2423cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 24240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void 24250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville onRadioAvailable() { 24260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // In case screen state was lost (due to process crash), 24270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // this ensures that the RIL knows the correct screen state. 2428b9597d030e970e13e1c399301e671542b52db3b5Mohamad Ayyash updateScreenState(); 24290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RadioState getRadioStateFromInt(int stateInt) { 24320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState state; 24330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* RIL_RadioState ril.h */ 24350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(stateInt) { 24360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 0: state = RadioState.RADIO_OFF; break; 24370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 24380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case 10: state = RadioState.RADIO_ON; break; 24390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 24410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 24420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Unrecognized RIL_RadioState: " + stateInt); 24430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return state; 24450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void switchToRadioState(RadioState newState) { 24480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioState(newState); 24490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 24520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Holds a PARTIAL_WAKE_LOCK whenever 24530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 24540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * b) There is a request pending to be sent out. 24550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 24560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 24570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * happen often. 24580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 24590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 246132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold acquireWakeLock(RILRequest rr, int wakeLockType) { 246232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold synchronized(rr) { 246332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if(rr.mWakeLockType != INVALID_WAKELOCK) { 246432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Rlog.d(RILJ_LOG_TAG, "Failed to aquire wakelock for " + rr.serialString()); 246532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold return; 2466a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 24670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 246832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold switch(wakeLockType) { 246932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case FOR_WAKELOCK: 247032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold synchronized (mWakeLock) { 247132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWakeLock.acquire(); 247232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWakeLockCount++; 247332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWlSequenceNum++; 247432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 247532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 247632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold msg.arg1 = mWlSequenceNum; 247732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mSender.sendMessageDelayed(msg, mWakeLockTimeout); 247832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 247932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 248032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case FOR_ACK_WAKELOCK: 248132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold synchronized (mAckWakeLock) { 248232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mAckWakeLock.acquire(); 248332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mAckWlSequenceNum++; 248432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 248532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Message msg = mSender.obtainMessage(EVENT_ACK_WAKE_LOCK_TIMEOUT); 248632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold msg.arg1 = mAckWlSequenceNum; 248732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mSender.sendMessageDelayed(msg, mAckWakeLockTimeout); 248832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 248932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 249032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold default: //WTF 249132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Rlog.w(RILJ_LOG_TAG, "Acquiring Invalid Wakelock type " + wakeLockType); 249232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold return; 2493a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 249432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.mWakeLockType = wakeLockType; 24950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 24970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 24980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 249932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(RILRequest rr) { 250032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold synchronized(rr) { 250132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold switch(rr.mWakeLockType) { 250232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case FOR_WAKELOCK: 250332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold synchronized (mWakeLock) { 250432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if (mWakeLockCount > 1) { 250532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWakeLockCount--; 250632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } else { 250732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWakeLockCount = 0; 250832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mWakeLock.release(); 250932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 251032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold } 251132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 251232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case FOR_ACK_WAKELOCK: 251332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold //We do not decrement the ACK wakelock 251432c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 251532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold case INVALID_WAKELOCK: 251632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold break; 251732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold default: 251832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Rlog.w(RILJ_LOG_TAG, "Decrementing Invalid Wakelock type " + rr.mWakeLockType); 25190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 252032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.mWakeLockType = INVALID_WAKELOCK; 25210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25247cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt private boolean 252532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold clearWakeLock(int wakeLockType) { 252632c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold if (wakeLockType == FOR_WAKELOCK) { 2527a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe synchronized (mWakeLock) { 2528a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (mWakeLockCount == 0 && mWakeLock.isHeld() == false) return false; 2529a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe Rlog.d(RILJ_LOG_TAG, "NOTE: mWakeLockCount is " + mWakeLockCount 2530a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe + "at time of clearing"); 2531a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mWakeLockCount = 0; 2532a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mWakeLock.release(); 2533a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe return true; 2534a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 2535a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } else { 2536a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe synchronized (mAckWakeLock) { 2537a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (mAckWakeLock.isHeld() == false) return false; 2538a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe mAckWakeLock.release(); 2539a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe return true; 2540a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 25417cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 25427cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 25437cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt 25440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 25450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(RILRequest rr) { 25460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message msg; 25470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSocket == null) { 25490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 25500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 25510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 25520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 255532c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold acquireWakeLock(rr, FOR_WAKELOCK); 25560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.sendToTarget(); 25570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 25600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville processResponse (Parcel p) { 25610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int type; 25620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville type = p.readInt(); 25640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2565a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (type == RESPONSE_UNSOLICITED || type == RESPONSE_UNSOLICITED_ACK_EXP) { 2566a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe processUnsolicited (p, type); 2567060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } else if (type == RESPONSE_SOLICITED || type == RESPONSE_SOLICITED_ACK_EXP) { 2568060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe RILRequest rr = processSolicited (p, type); 25697cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr != null) { 25702af618a3becdcbbd49a1339d68e0ef8f35890a27Sanket Padawe if (type == RESPONSE_SOLICITED) { 257132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 25722af618a3becdcbbd49a1339d68e0ef8f35890a27Sanket Padawe } 257332c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold rr.release(); 2574d0fdd8bd6ab1261ad474a3e7cddcc99090613931Sanket Padawe return; 2575060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } 2576060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } else if (type == RESPONSE_SOLICITED_ACK) { 2577060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe int serial; 2578060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe serial = p.readInt(); 2579060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe 2580060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe RILRequest rr; 2581060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe synchronized (mRequestList) { 2582060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe rr = mRequestList.get(serial); 2583060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } 2584060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe if (rr == null) { 2585060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe Rlog.w(RILJ_LOG_TAG, "Unexpected solicited ack response! sn: " + serial); 2586060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } else { 258732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 2588a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (RILJ_LOGD) { 2589a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe riljLog(rr.serialString() + " Ack < " + requestToString(rr.mRequest)); 2590a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 25917cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 25920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 25940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 25950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2596892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * Release each request in mRequestList then clear the list 25970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param error is the RIL_Errno sent back 2598892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt * @param loggable true means to print all requests in mRequestList 25990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2600892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt private void clearRequestList(int error, boolean loggable) { 26010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 2602892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 2603892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 26040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 26056613a961473a72c218ec505e384dad6b19049aa0Robert Greenwalt Rlog.d(RILJ_LOG_TAG, "clearRequestList " + 26067cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt " mWakeLockCount=" + mWakeLockCount + 26070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mRequestList=" + count); 26080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count ; i++) { 26117cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.valueAt(i); 26120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD && loggable) { 2613fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.d(RILJ_LOG_TAG, i + ": [" + rr.mSerial + "] " + 26140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(rr.mRequest)); 26150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.onError(error, null); 261732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold decrementWakeLock(rr); 26180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.release(); 26190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2620892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt mRequestList.clear(); 26210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 26257cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt RILRequest rr = null; 2626892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 26277cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr = mRequestList.get(serial); 26287cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr != null) { 26297cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt mRequestList.remove(serial); 26300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26337cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 26340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2636d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe private void addToRilHistogram(RILRequest rr) { 2637d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe long endTime = SystemClock.elapsedRealtime(); 2638d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe int totalTime = (int)(endTime - rr.mStartTimeMs); 2639d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe 2640d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe synchronized(mRilTimeHistograms) { 2641d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe TelephonyHistogram entry = mRilTimeHistograms.get(rr.mRequest); 2642d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe if (entry == null) { 2643d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe // We would have total #RIL_HISTOGRAM_BUCKET_COUNT range buckets for RIL commands 2644d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe entry = new TelephonyHistogram(TelephonyHistogram.TELEPHONY_CATEGORY_RIL, 2645d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe rr.mRequest, RIL_HISTOGRAM_BUCKET_COUNT); 2646d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe mRilTimeHistograms.put(rr.mRequest, entry); 2647d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 2648d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe entry.addTimeTaken(totalTime); 2649d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 2650d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe } 2651d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe 26527cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt private RILRequest 2653060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe processSolicited (Parcel p, int type) { 26540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int serial, error; 26550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean found = false; 26560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville serial = p.readInt(); 26580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville error = p.readInt(); 26590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr; 26610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr = findAndRemoveRequestFromList(serial); 26630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr == null) { 2665fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, "Unexpected solicited response! sn: " 26660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + serial + " error: " + error); 26677cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return null; 26680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 26690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2670d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe // Time logging for RIL command and storing it in TelephonyHistogram. 2671d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe addToRilHistogram(rr); 2672d506d3daaa7f7ec94fdffcf31cb906b385534127Sanket Padawe 2673060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe if (getRilVersion() >= 13 && type == RESPONSE_SOLICITED_ACK_EXP) { 2674060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe Message msg; 2675060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe RILRequest response = RILRequest.obtain(RIL_RESPONSE_ACKNOWLEDGEMENT, null); 2676060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe msg = mSender.obtainMessage(EVENT_SEND_ACK, response); 267732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold acquireWakeLock(rr, FOR_ACK_WAKELOCK); 2678060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe msg.sendToTarget(); 2679a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (RILJ_LOGD) { 2680a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe riljLog("Response received for " + rr.serialString() + " " + 2681a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe requestToString(rr.mRequest) + " Sending ack to ril.cpp"); 2682a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 2683060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } 2684060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe 2685060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe 26860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret = null; 26870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 26880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error == 0 || p.dataAvail() > 0) { 26890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // either command succeeds or command fails but with data payload 26900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch (rr.mRequest) { 26910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* 26920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 26930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 26940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 26950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 26960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 26970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 26980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 26990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 27000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 27010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 27020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 27030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 27040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 27050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 27060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 27070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 27080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 27090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 27100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mTestingEmergencyCall.getAndSet(false)) { 27110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 27120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("testing emergency call, notify ECM Registrants"); 27130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 27140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = responseVoid(p); 27170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 27180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 27190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 27200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 27210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 272233cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseFailCause(p); break; 27230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 27240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 27250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 27260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 27270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 27280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 27290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 27300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 27310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 27320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 27330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 27340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 27350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 27360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 27370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 27380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 27390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 27400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 27410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 27420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 27430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 27440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 27450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 27460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 27470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 27480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 27490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 27500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 27510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 27520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 27530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 27540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 27550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 27560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 27570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 27580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 27590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 27600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 27610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 27620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 27630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 27640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 27650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 27660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 27670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 27680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 27690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 27700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 27710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 27720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 27730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 27740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 27750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 27760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 27770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 27780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 27790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 27800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 27810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 27820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 27830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 27840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 27850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 27860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 27870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 27880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 27890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 27900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 27910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 27920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 27930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 27940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 27950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 27960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 27970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 27980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 27990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 28000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 28010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 28020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 28030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 28040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 28050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 28060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 28070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 28080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 28090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 28100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 28110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 28120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 28135fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 28145fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: ret = responseVoid(p); break; 28155d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi case RIL_REQUEST_SET_INITIAL_ATTACH_APN: ret = responseVoid(p); break; 28169d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan case RIL_REQUEST_SET_DATA_PROFILE: ret = responseVoid(p); break; 28171260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_REGISTRATION_STATE: ret = responseInts(p); break; 28181260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_SEND_SMS: ret = responseSMS(p); break; 281940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: ret = responseICC_IO(p); break; 282040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_OPEN_CHANNEL: ret = responseInts(p); break; 282140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_CLOSE_CHANNEL: ret = responseVoid(p); break; 282240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: ret = responseICC_IO(p); break; 2823f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_READ_ITEM: ret = responseString(p); break; 2824f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_WRITE_ITEM: ret = responseVoid(p); break; 2825f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_WRITE_CDMA_PRL: ret = responseVoid(p); break; 2826f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_RESET_CONFIG: ret = responseVoid(p); break; 2827a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_SET_UICC_SUBSCRIPTION: ret = responseVoid(p); break; 2828a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_ALLOW_DATA: ret = responseVoid(p); break; 2829a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_GET_HARDWARE_CONFIG: ret = responseHardwareConfig(p); break; 2830cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande case RIL_REQUEST_SIM_AUTHENTICATION: ret = responseICC_IOBase64(p); break; 283103586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla case RIL_REQUEST_SHUTDOWN: ret = responseVoid(p); break; 2832fc93067f7ab07b39b4eb1cb4fb3ea4e0f769f023Legler Wu case RIL_REQUEST_GET_RADIO_CAPABILITY: ret = responseRadioCapability(p); break; 2833fc93067f7ab07b39b4eb1cb4fb3ea4e0f769f023Legler Wu case RIL_REQUEST_SET_RADIO_CAPABILITY: ret = responseRadioCapability(p); break; 283465bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_START_LCE: ret = responseLceStatus(p); break; 283565bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_STOP_LCE: ret = responseLceStatus(p); break; 283665bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_PULL_LCEDATA: ret = responseLceData(p); break; 283727eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham case RIL_REQUEST_GET_ACTIVITY_INFO: ret = responseActivityData(p); break; 283840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang case RIL_REQUEST_SET_ALLOWED_CARRIERS: ret = responseInts(p); break; 283940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang case RIL_REQUEST_GET_ALLOWED_CARRIERS: ret = responseCarrierIdentifiers(p); break; 28400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 28410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 28420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; 28430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 28440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Exceptions here usually mean invalid RIL responses 28450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2846fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.w(RILJ_LOG_TAG, rr.serialString() + "< " 28470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + requestToString(rr.mRequest) 28480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " exception, possible invalid RIL response", tr); 28490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 28500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (rr.mResult != null) { 28510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville AsyncResult.forMessage(rr.mResult, null, tr); 28520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rr.mResult.sendToTarget(); 28530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28547cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 28550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 28570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 285803586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla if (rr.mRequest == RIL_REQUEST_SHUTDOWN) { 285903586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla // Set RADIO_STATE to RADIO_UNAVAILABLE to continue shutdown process 286003586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla // regardless of error code to continue shutdown procedure. 286103586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla riljLog("Response to RIL_REQUEST_SHUTDOWN received. Error is " + 286203586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla error + " Setting Radio State to Unavailable regardless of error."); 286303586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla setRadioState(RadioState.RADIO_UNAVAILABLE); 286403586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla } 286503586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla 2866f860a3f42f87c9c8572623aff33349168d689477Wink Saville // Here and below fake RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, see b/7255789. 2867f860a3f42f87c9c8572623aff33349168d689477Wink Saville // This is needed otherwise we don't automatically transition to the main lock 2868f860a3f42f87c9c8572623aff33349168d689477Wink Saville // screen when the pin or puk is entered incorrectly. 2869be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville switch (rr.mRequest) { 2870be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK: 2871be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: 2872be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville if (mIccStatusChangedRegistrants != null) { 2873f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2874f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON enter sim puk fakeSimStatusChanged: reg count=" 2875f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2876f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2877be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2878be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2879be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville break; 2880be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville } 2881be3dc4b04cd65e576d250cf68f310d47637167ffWink Saville 28820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (error != 0) { 2883f860a3f42f87c9c8572623aff33349168d689477Wink Saville switch (rr.mRequest) { 2884f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: 2885f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: 2886f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: 2887f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: 2888f860a3f42f87c9c8572623aff33349168d689477Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: 2889f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (mIccStatusChangedRegistrants != null) { 2890f860a3f42f87c9c8572623aff33349168d689477Wink Saville if (RILJ_LOGD) { 2891f860a3f42f87c9c8572623aff33349168d689477Wink Saville riljLog("ON some errors fakeSimStatusChanged: reg count=" 2892f860a3f42f87c9c8572623aff33349168d689477Wink Saville + mIccStatusChangedRegistrants.size()); 2893f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2894f860a3f42f87c9c8572623aff33349168d689477Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2895f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2896f860a3f42f87c9c8572623aff33349168d689477Wink Saville break; 28973ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt case RIL_REQUEST_GET_RADIO_CAPABILITY: { 28983ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // Ideally RIL's would support this or at least give NOT_SUPPORTED 28993ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // but the hammerhead RIL reports GENERIC :( 29003ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // TODO - remove GENERIC_FAILURE catching: b/21079604 29013ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt if (REQUEST_NOT_SUPPORTED == error || 29023ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt GENERIC_FAILURE == error) { 29033ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // we should construct the RAF bitmask the radio 29043ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // supports based on preferred network bitmasks 29053ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt ret = makeStaticRadioCapability(); 29063ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt error = 0; 29073ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt } 29083ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt break; 29093ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt } 291027eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham case RIL_REQUEST_GET_ACTIVITY_INFO: 291127eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham ret = new ModemActivityInfo(0, 0, 0, 291227eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham new int [ModemActivityInfo.TX_POWER_LEVELS], 0, 0); 291327eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham error = 0; 291427eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham break; 2915f860a3f42f87c9c8572623aff33349168d689477Wink Saville } 2916f860a3f42f87c9c8572623aff33349168d689477Wink Saville 29173ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt if (error != 0) rr.onError(error, ret); 29183ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt } 29193ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt if (error == 0) { 29200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29217cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 29227cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt + " " + retToString(rr.mRequest, ret)); 29230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29247cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt if (rr.mResult != null) { 29257cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt AsyncResult.forMessage(rr.mResult, ret, null); 29267cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt rr.mResult.sendToTarget(); 29277cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 29280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29295054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 2930f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeOnRilSolicitedResponse(mInstanceId, rr.mSerial, error, 2931f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu rr.mRequest, ret); 29325054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 29337cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt return rr; 29340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29363ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt private RadioCapability makeStaticRadioCapability() { 29373ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt // default to UNKNOWN so we fail fast. 29383ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt int raf = RadioAccessFamily.RAF_UNKNOWN; 29393ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt 29403ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt String rafString = mContext.getResources().getString( 29413ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt com.android.internal.R.string.config_radio_access_family); 29423ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt if (TextUtils.isEmpty(rafString) == false) { 29433ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt raf = RadioAccessFamily.rafTypeFromString(rafString); 29443ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt } 29453ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt RadioCapability rc = new RadioCapability(mInstanceId.intValue(), 0, 0, raf, 29463ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt "", RadioCapability.RC_STATUS_SUCCESS); 29473ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt if (RILJ_LOGD) riljLog("Faking RIL_REQUEST_GET_RADIO_CAPABILITY response using " + raf); 29483ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt return rc; 29493ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt } 29503ad0c75dac907e8490b78d6fd8c0278d28b96f84Robert Greenwalt 29513522c54a64f577f2b657a775dae9b4eb2d8003d5Wink Saville static String 29520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville retToString(int req, Object ret) { 29530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret == null) return ""; 29540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (req) { 29550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Don't log these return values, for privacy's sake. 29560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: 29570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: 29580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: 29597b960c8adc35113c6eb3fad6cdfe32c2169d380bAmit Mahajan case RIL_REQUEST_SIM_OPEN_CHANNEL: 29607b960c8adc35113c6eb3fad6cdfe32c2169d380bAmit Mahajan case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: 29617b960c8adc35113c6eb3fad6cdfe32c2169d380bAmit Mahajan 29620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!RILJ_LOGV) { 29630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 29640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ""; 29650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 29680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville StringBuilder sb; 29690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s; 29700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int length; 29710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ret instanceof int[]){ 29720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] intArray = (int[]) ret; 29730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = intArray.length; 29740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 29750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 29760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 29770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(intArray[i++]); 29780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 29790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(intArray[i++]); 29800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 29830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 29840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (ret instanceof String[]) { 29850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] strings = (String[]) ret; 29860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville length = strings.length; 29870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb = new StringBuilder("{"); 29880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (length > 0) { 29890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int i = 0; 29900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(strings[i++]); 29910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville while ( i < length) { 29920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append(", ").append(strings[i++]); 29930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 29950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("}"); 29960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 29970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 29980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 2999e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb = new StringBuilder("{"); 30000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (DriverCall dc : calls) { 30010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sb.append("[").append(dc).append("] "); 30020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3003e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb.append("}"); 30040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 30050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 3006e20154713e46216e5033af2339490321dc9ca1bfGao Rong ArrayList<NeighboringCellInfo> cells = (ArrayList<NeighboringCellInfo>) ret; 3007e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb = new StringBuilder("{"); 30080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (NeighboringCellInfo cell : cells) { 3009e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb.append("[").append(cell).append("] "); 30100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3011e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb.append("}"); 3012e20154713e46216e5033af2339490321dc9ca1bfGao Rong s = sb.toString(); 3013e20154713e46216e5033af2339490321dc9ca1bfGao Rong } else if (req == RIL_REQUEST_QUERY_CALL_FORWARD_STATUS) { 3014e20154713e46216e5033af2339490321dc9ca1bfGao Rong CallForwardInfo[] cinfo = (CallForwardInfo[]) ret; 3015e20154713e46216e5033af2339490321dc9ca1bfGao Rong length = cinfo.length; 3016e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb = new StringBuilder("{"); 3017e20154713e46216e5033af2339490321dc9ca1bfGao Rong for(int i = 0; i < length; i++) { 3018e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb.append("[").append(cinfo[i]).append("] "); 30190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3020e20154713e46216e5033af2339490321dc9ca1bfGao Rong sb.append("}"); 30210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = sb.toString(); 3022a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } else if (req == RIL_REQUEST_GET_HARDWARE_CONFIG) { 3023a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ArrayList<HardwareConfig> hwcfgs = (ArrayList<HardwareConfig>) ret; 3024a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sb = new StringBuilder(" "); 3025a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville for (HardwareConfig hwcfg : hwcfgs) { 3026a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sb.append("[").append(hwcfg).append("] "); 3027a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3028a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville s = sb.toString(); 30290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 30300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville s = ret.toString(); 30310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return s; 30330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 30340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 3036a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe processUnsolicited (Parcel p, int type) { 30370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response; 30380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object ret; 30390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readInt(); 30410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3042060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe // Follow new symantics of sending an Ack starting from RIL version 13 3043a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (getRilVersion() >= 13 && type == RESPONSE_UNSOLICITED_ACK_EXP) { 3044060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe Message msg; 3045060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe RILRequest rr = RILRequest.obtain(RIL_RESPONSE_ACKNOWLEDGEMENT, null); 3046060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe msg = mSender.obtainMessage(EVENT_SEND_ACK, rr); 304732c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold acquireWakeLock(rr, FOR_ACK_WAKELOCK); 3048060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe msg.sendToTarget(); 3049a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe if (RILJ_LOGD) { 3050a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe riljLog("Unsol response received for " + responseToString(response) + 3051a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe " Sending ack to ril.cpp"); 3052a05275d90833d2ff26a2571e2cc0f2ea91fd2b43Sanket Padawe } 3053060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe } 3054060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe 30550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try {switch(response) { 30560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 30570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 30580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 30590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 30600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 30610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 30620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 30630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 30640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 30650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 30660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 30670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 30680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 30690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 30700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 30710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 30720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 30730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 30740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 30750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 30760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 30770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 30780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 30790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 30800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 30810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 30820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 30830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 30840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 30850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 30860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 30870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 30880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 30890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 30900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 30910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 30920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 30930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 30940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 30950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 30960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 30975fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: ret = responseCellInfoList(p); break; 30981260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 3099a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED: ret = responseInts(p); break; 3100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_SRVCC_STATE_NOTIFY: ret = responseInts(p); break; 3101a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: ret = responseHardwareConfig(p); break; 31022b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville case RIL_UNSOL_RADIO_CAPABILITY: 31032b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ret = responseRadioCapability(p); break; 310409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_ON_SS: ret = responseSsData(p); break; 310509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_STK_CC_ALPHA_NOTIFY: ret = responseString(p); break; 310665bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_UNSOL_LCEDATA_RECV: ret = responseLceData(p); break; 31074b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt case RIL_UNSOL_PCO_DATA: ret = responsePcoData(p); break; 310809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 31090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 31100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 31110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //break; (implied) 31120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville }} catch (Throwable tr) { 3113fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Exception processing unsol response: " + response + 31140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "Exception:" + tr.toString()); 31150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return; 31160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(response) { 31190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 31200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* has bonus radio state int */ 31210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 31220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 31230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switchToRadioState(newState); 31250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31261260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: 31271260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa if (RILJ_LOGD) unsljLog(response); 31281260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa 31291260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa mImsNetworkStateChangedRegistrants 31301260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa .notifyRegistrants(new AsyncResult(null, null, null)); 31311260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa break; 31320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 31330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 31340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallStateRegistrants 31360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 31370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 31390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 31400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceNetworkStateRegistrants 31420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 31430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 31450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 31460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3147f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilNewSms(mInstanceId, SmsSession.Event.Tech.SMS_GSM, 3148f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP); 31495054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 31500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // FIXME this should move up a layer 31510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String a[] = new String[2]; 31520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville a[1] = (String)ret; 31540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 31560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromCMT(a); 31580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmSmsRegistrant != null) { 31590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmSmsRegistrant 31600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 31610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 31650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 31660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsStatusRegistrant != null) { 31680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsStatusRegistrant.notifyRegistrant( 31690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 31700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 31730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 31740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int[] smsIndex = (int[])ret; 31760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if(smsIndex.length == 1) { 31780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSmsOnSimRegistrant != null) { 31790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSmsOnSimRegistrant. 31800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 31810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 31830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 31840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + smsIndex.length); 31850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 31870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: 31880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String[] resp = (String[])ret; 31890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 31900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (resp.length < 2) { 31910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = new String[2]; 31920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[0] = ((String[])ret)[0]; 31930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp[1] = null; 31940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 31950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 31960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUSSDRegistrant != null) { 31970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUSSDRegistrant.notifyRegistrant( 31980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, resp, null)); 31990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 32020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 32030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // has bonus long containing milliseconds since boot that the NITZ 32050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // time was received 32060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long nitzReceiveTime = p.readLong(); 32070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Object[] result = new Object[2]; 32090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[0] = ret; 32110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville result[1] = Long.valueOf(nitzReceiveTime); 32120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 32140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 32150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ignoreNitz) { 32170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 32180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 32190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNITZTimeRegistrant != null) { 32200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNITZTimeRegistrant 32220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 32230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3224952f6df569fd0dffdb0600c20ff383a02e64a038Amit Mahajan // in case NITZ time registrant isn't registered yet, or a new registrant 3225952f6df569fd0dffdb0600c20ff383a02e64a038Amit Mahajan // registers later 3226952f6df569fd0dffdb0600c20ff383a02e64a038Amit Mahajan mLastNITZTimeInfo = result; 32270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 32310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Note this is set to "verbose" because it happens 32320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // frequently 32330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 32340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalStrengthRegistrant != null) { 32360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalStrengthRegistrant.notifyRegistrant( 32370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 32410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 32420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 32440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 32470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 32480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSsnRegistrant != null) { 32500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSsnRegistrant.notifyRegistrant( 32510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: 32560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 32570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatSessionEndRegistrant != null) { 32590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatSessionEndRegistrant.notifyRegistrant( 32600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 32657b960c8adc35113c6eb3fad6cdfe32c2169d380bAmit Mahajan if (RILJ_LOGD) unsljLog(response); 32660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatProCmdRegistrant != null) { 32680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatProCmdRegistrant.notifyRegistrant( 32690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 32747b960c8adc35113c6eb3fad6cdfe32c2169d380bAmit Mahajan if (RILJ_LOGD) unsljLog(response); 32750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatEventRegistrant != null) { 32770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatEventRegistrant.notifyRegistrant( 32780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: 32830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 32840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCatCallSetUpRegistrant != null) { 32860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCatCallSetUpRegistrant.notifyRegistrant( 32870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 32880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 32920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 32930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 32950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 32960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 32970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 32980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 32990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: 33000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 33010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccRefreshRegistrants != null) { 33030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccRefreshRegistrants.notifyRegistrants( 33040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 33050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: 33090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 33100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingRegistrant != null) { 33120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingRegistrant.notifyRegistrant( 33130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 33140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 33180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 33190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRestrictedStateRegistrant != null) { 33200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRestrictedStateRegistrant.notifyRegistrant( 33210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 33220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 33260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 33270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccStatusChangedRegistrants != null) { 33290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 33300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 33340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 33350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3336f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilNewSms(mInstanceId, SmsSession.Event.Tech.SMS_CDMA, 3337f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSession.Event.Format.SMS_FORMAT_3GPP2); 33385054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 33390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms = (SmsMessage) ret; 33400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSmsRegistrant != null) { 33420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSmsRegistrant 33430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 33440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 334822f63e1953ccb581cb89585e4ab77eda185c1897xinhe if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 33490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mGsmBroadcastSmsRegistrant != null) { 33510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mGsmBroadcastSmsRegistrant 33520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 33530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 33570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 33580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mIccSmsFullRegistrant != null) { 33600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 33610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 33650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLog(response); 33660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 33680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 33690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 33730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 33740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCallWaitingInfoRegistrants != null) { 33760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 33770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 33780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 33820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 33830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mOtaProvisionRegistrants != null) { 33850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 33860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 33870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 33910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 33920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 33930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 33940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 33950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (ClassCastException e) { 3396fa4fd4721082689c4b276f67b845e7be249cb8daWink Saville Rlog.e(RILJ_LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 33970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 33980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 33990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 34010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 34020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(rec); 34030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 34070e42864afb21261d6bd2e9b4aa97f6d01d039a25Yashdev Singh if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[]) ret)); 34080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mUnsolOemHookRawRegistrant != null) { 34090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 34100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RINGBACK_TONE: 34140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 34150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRingbackToneRegistrants != null) { 34160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean playtone = (((int[])ret)[0] == 1); 34170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRingbackToneRegistrants.notifyRegistrants( 34180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, playtone, null)); 34190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 34230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mResendIncallMuteRegistrants != null) { 34260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mResendIncallMuteRegistrants.notifyRegistrants( 34270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 34280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 34320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mVoiceRadioTechChangedRegistrants != null) { 34350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 34360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult(null, ret, null)); 34370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 34410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 34440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 34450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 34460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 34500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mCdmaPrlChangedRegistrants != null) { 34530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 34540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, ret, null)); 34550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 34590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 34620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 34630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, null, null)); 34640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 34680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Initial conditions 34710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setRadioPower(false, null); 34720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 3473121c056d398b68e2bd2d35e6f5c2730fa7fb81c9Wink Saville setCellInfoListRate(Integer.MAX_VALUE, null); 34740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 34750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville break; 34760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 34775fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: { 34785fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 34795fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 34805fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (mRilCellInfoListRegistrants != null) { 34815fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville mRilCellInfoListRegistrants.notifyRegistrants( 34825fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville new AsyncResult (null, ret, null)); 34835fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 34845fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville break; 34855fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 3486a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED: { 3487a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 3488a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 3489a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mSubscriptionStatusRegistrants != null) { 3490a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mSubscriptionStatusRegistrants.notifyRegistrants( 3491a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville new AsyncResult (null, ret, null)); 3492a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3493a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 3494a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3495a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_SRVCC_STATE_NOTIFY: { 3496a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 3497a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 3498f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilSrvcc(mInstanceId, ((int[])ret)[0]); 34995054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 3500a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mSrvccStateRegistrants != null) { 3501a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mSrvccStateRegistrants 3502a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville .notifyRegistrants(new AsyncResult(null, ret, null)); 3503a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3504a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 3505a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3506a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: 3507a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 3508a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 3509a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mHardwareConfigChangeRegistrants != null) { 3510a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mHardwareConfigChangeRegistrants.notifyRegistrants( 3511a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville new AsyncResult (null, ret, null)); 3512a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3513a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 35142b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville case RIL_UNSOL_RADIO_CAPABILITY: 35152b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 35162b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 35172b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville if (mPhoneRadioCapabilityChangedRegistrants != null) { 35182b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mPhoneRadioCapabilityChangedRegistrants.notifyRegistrants( 35192b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville new AsyncResult(null, ret, null)); 352009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 352109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja break; 352209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_ON_SS: 352309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (RILJ_LOGD) unsljLogRet(response, ret); 352409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 352509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (mSsRegistrant != null) { 352609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja mSsRegistrant.notifyRegistrant( 352709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja new AsyncResult (null, ret, null)); 352809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 352909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja break; 353009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_STK_CC_ALPHA_NOTIFY: 353109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (RILJ_LOGD) unsljLogRet(response, ret); 353209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 353309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (mCatCcAlphaRegistrant != null) { 353409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja mCatCcAlphaRegistrant.notifyRegistrant( 353509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja new AsyncResult (null, ret, null)); 35362b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 35372b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville break; 353865bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_UNSOL_LCEDATA_RECV: 353965bee39d7e417fb898c3948696d5d8a38046c449fenglu if (RILJ_LOGD) unsljLogRet(response, ret); 354065bee39d7e417fb898c3948696d5d8a38046c449fenglu 354165bee39d7e417fb898c3948696d5d8a38046c449fenglu if (mLceInfoRegistrant != null) { 354265bee39d7e417fb898c3948696d5d8a38046c449fenglu mLceInfoRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 354365bee39d7e417fb898c3948696d5d8a38046c449fenglu } 354465bee39d7e417fb898c3948696d5d8a38046c449fenglu break; 35454b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt case RIL_UNSOL_PCO_DATA: 35464b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt if (RILJ_LOGD) unsljLogRet(response, ret); 35474b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt 35484b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt mPcoDataRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 35494b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt break; 35500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 35540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 35550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 35560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 35570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 35580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 35590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilVersion = rilVer; 35600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRilConnectedRegistrants != null) { 35610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRilConnectedRegistrants.notifyRegistrants( 35620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 35630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseInts(Parcel p) { 35680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 35690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 35700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = p.readInt(); 35720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 35740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInts ; i++) { 35760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 35770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 35800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 358233cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu private Object 358333cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu responseFailCause(Parcel p) { 358433cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu LastCallFailCause failCause = new LastCallFailCause(); 358533cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu failCause.causeCode = p.readInt(); 358633cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu if (p.dataAvail() > 0) { 358733cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu failCause.vendorCause = p.readString(); 358833cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu } 358933cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu return failCause; 359033cfb500a7cf192adfc5ca06792fe3847073b6c1Chao Liu } 35910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseVoid(Parcel p) { 35940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 35950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 35960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 35970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 35980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallForward(Parcel p) { 35990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInfos; 36000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CallForwardInfo infos[]; 36010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInfos = p.readInt(); 36030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos = new CallForwardInfo[numInfos]; 36050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numInfos ; i++) { 36070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i] = new CallForwardInfo(); 36080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].status = p.readInt(); 36100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].reason = p.readInt(); 36110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].serviceClass = p.readInt(); 36120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].toa = p.readInt(); 36130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].number = p.readString(); 36140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville infos[i].timeSeconds = p.readInt(); 36150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return infos; 36180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSuppServiceNotification(Parcel p) { 36220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SuppServiceNotification notification = new SuppServiceNotification(); 36230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.notificationType = p.readInt(); 36250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.code = p.readInt(); 36260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.index = p.readInt(); 36270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.type = p.readInt(); 36280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 36290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 36310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaSms(Parcel p) { 36350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsMessage sms; 36360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sms = SmsMessage.newFromParcel(p); 36370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return sms; 36390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseString(Parcel p) { 36430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response; 36440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readString(); 36460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 36480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseStrings(Parcel p) { 36520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 36530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String response[]; 36540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.readStringArray(); 36560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 36580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseRaw(Parcel p) { 36620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 36630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte response[]; 36640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = p.createByteArray(); 36660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 36680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSMS(Parcel p) { 36720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int messageRef, errorCode; 36730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String ackPDU; 36740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville messageRef = p.readInt(); 36760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ackPDU = p.readString(); 36770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville errorCode = p.readInt(); 36780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 36800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 36820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 36830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 36860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseICC_IO(Parcel p) { 36870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int sw1, sw2; 36880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Message ret; 36890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw1 = p.readInt(); 36910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sw2 = p.readInt(); 36920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String s = p.readString(); 36940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 36950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 36960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw1) 36970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 36980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + s); 36990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return new IccIoResult(sw1, sw2, s); 37010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 3704cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande responseICC_IOBase64(Parcel p) { 3705cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande int sw1, sw2; 3706cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande Message ret; 3707cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande 3708cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande sw1 = p.readInt(); 3709cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande sw2 = p.readInt(); 3710cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande 3711cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande String s = p.readString(); 3712cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande 3713cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande if (RILJ_LOGV) riljLog("< iccIO: " 3714cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande + " 0x" + Integer.toHexString(sw1) 3715cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande + " 0x" + Integer.toHexString(sw2) + " " 3716cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande + s); 3717cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande 371810ac1062bbbab073205855fef38f6a1afb241002Nathan Harold return new IccIoResult(sw1, sw2, (s != null) 371910ac1062bbbab073205855fef38f6a1afb241002Nathan Harold ? android.util.Base64.decode(s, android.util.Base64.DEFAULT) : (byte[]) null); 3720cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande } 3721cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande 3722cf916cfb2b4d8282def13e4553abff2ea73aca2bVinit Deshpande private Object 37230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseIccCardStatus(Parcel p) { 3724e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 3725e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 3726e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 3727e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 3728e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 3729e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 3730e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 3731e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 37320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numApplications = p.readInt(); 37330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // limit to maximum allowed applications 37350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 37360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 37370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3738e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 37390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < numApplications ; i++) { 3740e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3741e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3742e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3743e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3744e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3745e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3746e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3747e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3748e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3749e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 37500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3751e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 37520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 37550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSimRefresh(Parcel p) { 37560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IccRefreshResponse response = new IccRefreshResponse(); 37570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.refreshResult = p.readInt(); 37590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.efId = p.readInt(); 37600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.aid = p.readString(); 37610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 37620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 37650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallList(Parcel p) { 37660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 37670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int voiceSettings; 37680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<DriverCall> response; 37690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville DriverCall dc; 37700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 37720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<DriverCall>(num); 37730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) { 37750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: num=" + num + 37760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 37770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 37780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 37790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 37800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc = new DriverCall(); 37810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 37820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 37830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.index = p.readInt(); 37840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.TOA = p.readInt(); 37850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMpty = (0 != p.readInt()); 37860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isMT = (0 != p.readInt()); 37870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.als = p.readInt(); 37880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville voiceSettings = p.readInt(); 37890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 37900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 37910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = p.readString(); 37920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int np = p.readInt(); 37930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 37940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.name = p.readString(); 3795004f70095ae49451757f89dfafce2b26294a5f32nfjb // according to ril.h, namePresentation should be handled as numberPresentation; 3796004f70095ae49451757f89dfafce2b26294a5f32nfjb dc.namePresentation = DriverCall.presentationFromCLIP(p.readInt()); 37970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int uusInfoPresent = p.readInt(); 37980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (uusInfoPresent == 1) { 37990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo = new UUSInfo(); 38000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setType(p.readInt()); 38010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setDcs(p.readInt()); 38020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] userData = p.createByteArray(); 38030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.setUserData(userData); 38040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 38050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 38060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.uusInfo.getUserData().length)); 38070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (string)=" 38080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + new String(dc.uusInfo.getUserData())); 38090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : data (hex): " 38100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 38110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 38120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("Incoming UUS : NOT present!"); 38130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 38160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 38170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(dc); 38190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (dc.isVoicePrivacy) { 38210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 38220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is enabled"); 38230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 38240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 38250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("InCall VoicePrivacy is disabled"); 38260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Collections.sort(response); 38300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 38320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 38330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseCallList: call ended, testing emergency call," + 38340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville " notify ECM Registrants"); 38350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 38360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 38400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3842ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville private DataCallResponse getDataCallResponse(Parcel p, int version) { 3843ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall = new DataCallResponse(); 38440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = version; 38460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (version < 5) { 38470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 38480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 38490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 38500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 38510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 38520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 38530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 38550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.status = p.readInt(); 38560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.suggestedRetryTime = p.readInt(); 38570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = p.readInt(); 38580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.active = p.readInt(); 38590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.type = p.readString(); 38600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 3861ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville if ((dataCall.status == DcFailCause.NONE.getErrorCode()) && 38620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TextUtils.isEmpty(dataCall.ifname)) { 3863ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville throw new RuntimeException("getDataCallResponse, no ifname"); 38640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 38660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 38670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 38680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 38700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 38710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 38720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 38740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 38750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 38760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38778f19c6d717bf0e00aeb33552a570a0f60af0ce3bAmit Mahajan if (version >= 10) { 38788f19c6d717bf0e00aeb33552a570a0f60af0ce3bAmit Mahajan String pcscf = p.readString(); 38798f19c6d717bf0e00aeb33552a570a0f60af0ce3bAmit Mahajan if (!TextUtils.isEmpty(pcscf)) { 38808f19c6d717bf0e00aeb33552a570a0f60af0ce3bAmit Mahajan dataCall.pcscf = pcscf.split(" "); 38818f19c6d717bf0e00aeb33552a570a0f60af0ce3bAmit Mahajan } 3882a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3883e9701717e43cc5aacbcf624f77a53be92350662cw if (version >= 11) { 3884e9701717e43cc5aacbcf624f77a53be92350662cw dataCall.mtu = p.readInt(); 3885e9701717e43cc5aacbcf624f77a53be92350662cw } 38860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 38880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 38890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 38910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseDataCallList(Parcel p) { 3892ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville ArrayList<DataCallResponse> response; 38930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 38940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 38950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 38960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 38970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3898ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response = new ArrayList<DataCallResponse>(num); 38990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 3900ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville response.add(getDataCallResponse(p, ver)); 39010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39035054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 39040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 39050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 39080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSetupDataCall(Parcel p) { 39090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int ver = p.readInt(); 39100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num = p.readInt(); 39110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 39120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3913ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville DataCallResponse dataCall; 39140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ver < 5) { 3916ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = new DataCallResponse(); 39170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.version = ver; 39180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 39190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.ifname = p.readString(); 39200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 39210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 39220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 39230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String addresses = p.readString(); 39250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(addresses)) { 39260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.addresses = addresses.split(" "); 39270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 4) { 39290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String dnses = p.readString(); 39300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 39310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(dnses)) { 39320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.dnses = dnses.split(" "); 39330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num >= 5) { 39360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String gateways = p.readString(); 39370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 39380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (!TextUtils.isEmpty(gateways)) { 39390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville dataCall.gateways = gateways.split(" "); 39400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3942a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (num >= 6) { 3943a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String pcscf = p.readString(); 3944a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got pcscf=" + pcscf); 3945a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (!TextUtils.isEmpty(pcscf)) { 3946a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville dataCall.pcscf = pcscf.split(" "); 3947a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 3948a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 39490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 39500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (num != 1) { 39510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 39520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 39530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " got " + num); 39540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3955ff4e317d24f0d23bdc0f306d53ddc51f2f1ecf6aWink Saville dataCall = getDataCallResponse(p, ver); 39560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return dataCall; 39590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 39620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseOperatorInfos(Parcel p) { 39630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String strings[] = (String [])responseStrings(p); 39640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<OperatorInfo> ret; 39650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (strings.length % 4 != 0) { 39670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville throw new RuntimeException( 39680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 39690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + strings.length + " strings, expected multible of 4"); 39700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 39730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < strings.length ; i += 4) { 39750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ret.add ( 39760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new OperatorInfo( 39774084e10843c7e643c13773b36be85fe59ea49992Sanket Padawe strings[i+0], 39780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+1], 39790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+2], 39800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville strings[i+3])); 39810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return ret; 39840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 39850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 39870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCellList(Parcel p) { 39880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num, rssi; 39890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String location; 39900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<NeighboringCellInfo> response; 39910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville NeighboringCellInfo cell; 39920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 39940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<NeighboringCellInfo>(); 39950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 39960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Determine the radio access type 3997e70617d81dcd42350a737b11c25532e1d43df4ffLegler Wu int[] subId = SubscriptionManager.getSubId(mInstanceId); 3998e70617d81dcd42350a737b11c25532e1d43df4ffLegler Wu int radioType = 3999e70617d81dcd42350a737b11c25532e1d43df4ffLegler Wu ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE)). 4000e70617d81dcd42350a737b11c25532e1d43df4ffLegler Wu getDataNetworkType(subId[0]); 40010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Interpret the location based on radio access type 40030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 40040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0 ; i < num ; i++) { 40050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rssi = p.readInt(); 40060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville location = p.readString(); 40070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 40080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(cell); 40090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 40120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGetPreferredNetworkType(Parcel p) { 40150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int [] response = (int[]) responseInts(p); 40160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (response.length >= 1) { 40180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Since this is the response for getPreferredNetworkType 40190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we'll assume that it should be the value we want the 40200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // vendor ril to take if we reestablish a connection to it. 40210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPreferredNetworkType = response[0]; 40220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 40240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object responseGmsBroadcastConfig(Parcel p) { 40270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int num; 40280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<SmsBroadcastConfigInfo> response; 40290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville SmsBroadcastConfigInfo info; 40300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville num = p.readInt(); 40320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 40330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < num; i++) { 40350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromId = p.readInt(); 40360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toId = p.readInt(); 40370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int fromScheme = p.readInt(); 40380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int toScheme = p.readInt(); 40390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean selected = (p.readInt() == 1); 40400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 40420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville toScheme, selected); 40430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(info); 40440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 40460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 40490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaBroadcastConfig(Parcel p) { 40500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numServiceCategories; 40510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response[]; 40520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numServiceCategories = p.readInt(); 40540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (numServiceCategories == 0) { 40560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO: The logic of providing default values should 40570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // not be done by this transport layer. And needs to 40580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // be done by the vendor ril or application logic. 40590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 40600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 40610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 40620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Faking a default record for all possible records. 40640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 40650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 40670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // default language and selection status to false for all. 40680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 40690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 40700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 1] = 1; 40710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i + 2] = 0; 40720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else { 40740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numInts; 40750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 40760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new int[numInts]; 40770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = numServiceCategories; 40790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 1 ; i < numInts; i++) { 40800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[i] = p.readInt(); 40810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 40850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 40880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseSignalStrength(Parcel p) { 4089e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // Assume this is gsm, but doesn't matter as ServiceStateTracker 4090e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville // sets the proper value. 4091e3366ce305cf679bed0270db09938567d0e4d6d2Wink Saville SignalStrength signalStrength = SignalStrength.makeSignalStrengthFromRilParcel(p); 40925b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 40930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 40940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private ArrayList<CdmaInformationRecords> 40960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaInformationRecord(Parcel p) { 40970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int numberOfInfoRecs; 40980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ArrayList<CdmaInformationRecords> response; 40990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 41010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Loop through all of the information records unmarshalling them 41020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * and converting them to Java Objects. 41030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 41040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville numberOfInfoRecs = p.readInt(); 41050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 41060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 41080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 41090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response.add(InfoRec); 41100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 41130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 41160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCdmaCallWaiting(Parcel p) { 41170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 41180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.number = p.readString(); 4120cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville notification.numberPresentation = 4121cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville CdmaCallWaitingNotification.presentationFromCLIP(p.readInt()); 41220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.name = p.readString(); 41230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.namePresentation = notification.numberPresentation; 41240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.isPresent = p.readInt(); 41250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signalType = p.readInt(); 41260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.alertPitch = p.readInt(); 41270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.signal = p.readInt(); 41280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberType = p.readInt(); 41290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notification.numberPlan = p.readInt(); 41300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return notification; 41320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private Object 41350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseCallRing(Parcel p){ 41360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville char response[] = new char[4]; 41370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[0] = (char) p.readInt(); // isPresent 41390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[1] = (char) p.readInt(); // signalType 41400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[2] = (char) p.readInt(); // alertPitch 41410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville response[3] = (char) p.readInt(); // signal 41420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4143f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mMetrics.writeRilCallRing(mInstanceId, response); 41445054dfa7fd9b0520d30a102ed5a2107af11590c8Pavel Zhamaitsiak 41450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return response; 41460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void 41490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 41500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 41510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 41520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mDisplayInfoRegistrants != null) { 41530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 41550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 41580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mSignalInfoRegistrants != null) { 41590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mSignalInfoRegistrants.notifyRegistrants( 41610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 41640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mNumberInfoRegistrants != null) { 41650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mNumberInfoRegistrants.notifyRegistrants( 41670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 41700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mRedirNumInfoRegistrants != null) { 41710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 41730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 41760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mLineControlInfoRegistrants != null) { 41770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 41790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 41820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53ClirInfoRegistrants != null) { 41830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 41850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 41880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 41890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 41900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 41910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville new AsyncResult (null, infoRec.record, null)); 41920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 41950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 41965fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville private ArrayList<CellInfo> responseCellInfoList(Parcel p) { 41975fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville int numberOfInfoRecs; 41985fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville ArrayList<CellInfo> response; 41995fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 42005fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 42015fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * Loop through all of the information records unmarshalling them 42025fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * and converting them to Java Objects. 42035fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 42045fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville numberOfInfoRecs = p.readInt(); 42055fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response = new ArrayList<CellInfo>(numberOfInfoRecs); 42065fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 42075fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 42085fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville CellInfo InfoRec = CellInfo.CREATOR.createFromParcel(p); 42095fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville response.add(InfoRec); 42105fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 42115fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 42125fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville return response; 42135fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 42145fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 4215a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville private Object 4216a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville responseHardwareConfig(Parcel p) { 4217a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int num; 4218a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ArrayList<HardwareConfig> response; 4219a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville HardwareConfig hw; 4220a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4221a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville num = p.readInt(); 4222a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville response = new ArrayList<HardwareConfig>(num); 4223a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4224a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGV) { 4225a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville riljLog("responseHardwareConfig: num=" + num); 4226a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4227a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville for (int i = 0 ; i < num ; i++) { 4228a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville int type = p.readInt(); 4229a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville switch(type) { 4230a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case HardwareConfig.DEV_HARDWARE_TYPE_MODEM: { 4231a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville hw = new HardwareConfig(type); 4232a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville hw.assignModem(p.readString(), p.readInt(), p.readInt(), 4233a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville p.readInt(), p.readInt(), p.readInt(), p.readInt()); 4234a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 4235a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4236a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case HardwareConfig.DEV_HARDWARE_TYPE_SIM: { 4237a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville hw = new HardwareConfig(type); 4238a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville hw.assignSim(p.readString(), p.readInt(), p.readString()); 4239a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 4240a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4241a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville default: { 4242a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville throw new RuntimeException( 4243a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville "RIL_REQUEST_GET_HARDWARE_CONFIG invalid hardward type:" + type); 4244a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4245a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4246a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4247a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville response.add(hw); 4248a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4249a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4250a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return response; 4251a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4252a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 42532b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville private Object 42542b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville responseRadioCapability(Parcel p) { 42552b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int version = p.readInt(); 42562b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int session = p.readInt(); 42572b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int phase = p.readInt(); 42582b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int rat = p.readInt(); 42592b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville String logicModemUuid = p.readString(); 42602b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville int status = p.readInt(); 42612b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 42622b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville riljLog("responseRadioCapability: version= " + version + 42632b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ", session=" + session + 42642b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ", phase=" + phase + 42652b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ", rat=" + rat + 42662b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ", logicModemUuid=" + logicModemUuid + 42672b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville ", status=" + status); 42682b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville RadioCapability rc = new RadioCapability( 42692b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville mInstanceId.intValue(), session, phase, rat, logicModemUuid, status); 42702b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return rc; 42712b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 42722b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 427365bee39d7e417fb898c3948696d5d8a38046c449fenglu private Object responseLceData(Parcel p) { 427465bee39d7e417fb898c3948696d5d8a38046c449fenglu final ArrayList<Integer> capacityResponse = new ArrayList<Integer>(); 4275186c297bf39700f4e6b9781a8cbdbe6b23db3768fenglu final int capacityDownKbps = p.readInt(); 427665bee39d7e417fb898c3948696d5d8a38046c449fenglu final int confidenceLevel = p.readByte(); 427765bee39d7e417fb898c3948696d5d8a38046c449fenglu final int lceSuspended = p.readByte(); 427865bee39d7e417fb898c3948696d5d8a38046c449fenglu 427965bee39d7e417fb898c3948696d5d8a38046c449fenglu riljLog("LCE capacity information received:" + 4280186c297bf39700f4e6b9781a8cbdbe6b23db3768fenglu " capacity=" + capacityDownKbps + 428165bee39d7e417fb898c3948696d5d8a38046c449fenglu " confidence=" + confidenceLevel + 428265bee39d7e417fb898c3948696d5d8a38046c449fenglu " lceSuspended=" + lceSuspended); 428365bee39d7e417fb898c3948696d5d8a38046c449fenglu 4284186c297bf39700f4e6b9781a8cbdbe6b23db3768fenglu capacityResponse.add(capacityDownKbps); 428565bee39d7e417fb898c3948696d5d8a38046c449fenglu capacityResponse.add(confidenceLevel); 428665bee39d7e417fb898c3948696d5d8a38046c449fenglu capacityResponse.add(lceSuspended); 428765bee39d7e417fb898c3948696d5d8a38046c449fenglu return capacityResponse; 428865bee39d7e417fb898c3948696d5d8a38046c449fenglu } 428965bee39d7e417fb898c3948696d5d8a38046c449fenglu 429065bee39d7e417fb898c3948696d5d8a38046c449fenglu private Object responseLceStatus(Parcel p) { 429165bee39d7e417fb898c3948696d5d8a38046c449fenglu final ArrayList<Integer> statusResponse = new ArrayList<Integer>(); 429265bee39d7e417fb898c3948696d5d8a38046c449fenglu final int lceStatus = (int)p.readByte(); 429365bee39d7e417fb898c3948696d5d8a38046c449fenglu final int actualInterval = p.readInt(); 429465bee39d7e417fb898c3948696d5d8a38046c449fenglu 429565bee39d7e417fb898c3948696d5d8a38046c449fenglu riljLog("LCE status information received:" + 429665bee39d7e417fb898c3948696d5d8a38046c449fenglu " lceStatus=" + lceStatus + 429765bee39d7e417fb898c3948696d5d8a38046c449fenglu " actualInterval=" + actualInterval); 429865bee39d7e417fb898c3948696d5d8a38046c449fenglu statusResponse.add(lceStatus); 429965bee39d7e417fb898c3948696d5d8a38046c449fenglu statusResponse.add(actualInterval); 430065bee39d7e417fb898c3948696d5d8a38046c449fenglu return statusResponse; 430165bee39d7e417fb898c3948696d5d8a38046c449fenglu } 430265bee39d7e417fb898c3948696d5d8a38046c449fenglu 430327eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham private Object responseActivityData(Parcel p) { 430427eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham final int sleepModeTimeMs = p.readInt(); 430527eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham final int idleModeTimeMs = p.readInt(); 430627eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham int [] txModeTimeMs = new int[ModemActivityInfo.TX_POWER_LEVELS]; 430727eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham for (int i = 0; i < ModemActivityInfo.TX_POWER_LEVELS; i++) { 430827eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham txModeTimeMs[i] = p.readInt(); 430927eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham } 431027eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham final int rxModeTimeMs = p.readInt(); 431127eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham 431227eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham riljLog("Modem activity info received:" + 431327eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham " sleepModeTimeMs=" + sleepModeTimeMs + 431427eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham " idleModeTimeMs=" + idleModeTimeMs + 431527eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham " txModeTimeMs[]=" + Arrays.toString(txModeTimeMs) + 431627eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham " rxModeTimeMs=" + rxModeTimeMs); 431727eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham 431827eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham return new ModemActivityInfo(SystemClock.elapsedRealtime(), sleepModeTimeMs, 431927eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham idleModeTimeMs, txModeTimeMs, rxModeTimeMs, 0); 432027eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham } 432127eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham 432240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang private Object responseCarrierIdentifiers(Parcel p) { 432340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang List<CarrierIdentifier> retVal = new ArrayList<CarrierIdentifier>(); 432440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang int len_allowed_carriers = p.readInt(); 432540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang int len_excluded_carriers = p.readInt(); 432640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang for (int i = 0; i < len_allowed_carriers; i++) { 432740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang String mcc = p.readString(); 432840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang String mnc = p.readString(); 432940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang String spn = null, imsi = null, gid1 = null, gid2 = null; 433040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang int matchType = p.readInt(); 433140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang String matchData = p.readString(); 433240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang if (matchType == CarrierIdentifier.MatchType.SPN) { 433340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang spn = matchData; 433440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (matchType == CarrierIdentifier.MatchType.IMSI_PREFIX) { 433540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang imsi = matchData; 433640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (matchType == CarrierIdentifier.MatchType.GID1) { 433740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang gid1 = matchData; 433840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (matchType == CarrierIdentifier.MatchType.GID2) { 433940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang gid2 = matchData; 434040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 434140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang retVal.add(new CarrierIdentifier(mcc, mnc, spn, imsi, gid1, gid2)); 434240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 434340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang /* TODO: Handle excluded carriers */ 434440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang return retVal; 434540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 434640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang 43474b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt private Object responsePcoData(Parcel p) { 43484b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt return new PcoData(p); 43494b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt } 43504b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt 43514b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt 43520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 43530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville requestToString(int request) { 43540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 43550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_commands.h \ 43560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 43570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 43580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 43590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 43600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 43610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 43620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 43630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 43640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 43650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 43660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 43670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 43680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 43690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DIAL: return "DIAL"; 43700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 43710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 43720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 43730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 43740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 43750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 43760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_UDUB: return "UDUB"; 43770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 43780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 43790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 43800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 43810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 43820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 43830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF: return "DTMF"; 43840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 43850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 43860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 43870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 43880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 43890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 43900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 43910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 43920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 43930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 43940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 43950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 43960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 43970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 43980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 43990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 44000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 44010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 44020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 44030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 44040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 44050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 44060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 44070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 44080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 44090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 44100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 44110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 44120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 44130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 44140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 44150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 44160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 44170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 44180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 44190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 44200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 44210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 44220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 44230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 44240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 44250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 44260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 44270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 44280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 44290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 44300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 44310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 44320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 44330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 44340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 44350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 44360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 44370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 44380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 44390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 44400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 44410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 44420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 44430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 44440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 44450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 44460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 44470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 44480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 44490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 44500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 44510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 44520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 44530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 44540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 44550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 44560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 44570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 44580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 44590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 44600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 44610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 44620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 44630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 44640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 44650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 44660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 44670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 44685fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_GET_CELL_INFO_LIST: return "RIL_REQUEST_GET_CELL_INFO_LIST"; 44695fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE: return "RIL_REQUEST_SET_CELL_INFO_LIST_RATE"; 44705d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi case RIL_REQUEST_SET_INITIAL_ATTACH_APN: return "RIL_REQUEST_SET_INITIAL_ATTACH_APN"; 44719d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan case RIL_REQUEST_SET_DATA_PROFILE: return "RIL_REQUEST_SET_DATA_PROFILE"; 44721260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_REGISTRATION_STATE: return "RIL_REQUEST_IMS_REGISTRATION_STATE"; 44731260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_REQUEST_IMS_SEND_SMS: return "RIL_REQUEST_IMS_SEND_SMS"; 447440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: return "RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC"; 447540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_OPEN_CHANNEL: return "RIL_REQUEST_SIM_OPEN_CHANNEL"; 447640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_CLOSE_CHANNEL: return "RIL_REQUEST_SIM_CLOSE_CHANNEL"; 447740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: return "RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL"; 4478f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_READ_ITEM: return "RIL_REQUEST_NV_READ_ITEM"; 4479f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_WRITE_ITEM: return "RIL_REQUEST_NV_WRITE_ITEM"; 4480f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_WRITE_CDMA_PRL: return "RIL_REQUEST_NV_WRITE_CDMA_PRL"; 4481f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby case RIL_REQUEST_NV_RESET_CONFIG: return "RIL_REQUEST_NV_RESET_CONFIG"; 4482a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_SET_UICC_SUBSCRIPTION: return "RIL_REQUEST_SET_UICC_SUBSCRIPTION"; 4483a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_ALLOW_DATA: return "RIL_REQUEST_ALLOW_DATA"; 4484a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_REQUEST_GET_HARDWARE_CONFIG: return "GET_HARDWARE_CONFIG"; 44852fbca951019df69146cf472adadc05c5c2ef4a32Amit Mahajan case RIL_REQUEST_SIM_AUTHENTICATION: return "RIL_REQUEST_SIM_AUTHENTICATION"; 448603586878fb3d870373f2fdf65afb81cc5ae97067Naveen Kalla case RIL_REQUEST_SHUTDOWN: return "RIL_REQUEST_SHUTDOWN"; 44872b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville case RIL_REQUEST_SET_RADIO_CAPABILITY: 44882b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return "RIL_REQUEST_SET_RADIO_CAPABILITY"; 44892b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville case RIL_REQUEST_GET_RADIO_CAPABILITY: 44902b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return "RIL_REQUEST_GET_RADIO_CAPABILITY"; 449165bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_START_LCE: return "RIL_REQUEST_START_LCE"; 449265bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_STOP_LCE: return "RIL_REQUEST_STOP_LCE"; 449365bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_REQUEST_PULL_LCEDATA: return "RIL_REQUEST_PULL_LCEDATA"; 449427eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham case RIL_REQUEST_GET_ACTIVITY_INFO: return "RIL_REQUEST_GET_ACTIVITY_INFO"; 449540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang case RIL_REQUEST_SET_ALLOWED_CARRIERS: return "RIL_REQUEST_SET_ALLOWED_CARRIERS"; 449640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang case RIL_REQUEST_GET_ALLOWED_CARRIERS: return "RIL_REQUEST_GET_ALLOWED_CARRIERS"; 4497060a6f0ba56dde532a9b9b28d4302df86a556691Sanket Padawe case RIL_RESPONSE_ACKNOWLEDGEMENT: return "RIL_RESPONSE_ACKNOWLEDGEMENT"; 44980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: return "<unknown request>"; 44990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static String 45030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville responseToString(int request) 45040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville { 45050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 45060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cat libs/telephony/ril_unsol_commands.h \ 45070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | egrep "^ *{RIL_" \ 45080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 45090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville*/ 45100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch(request) { 45110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 45120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 45130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 45140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 45150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 45160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 45170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 45180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 45190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 45200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 45210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 45220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 45230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 45240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 45250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 45260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 45270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 45280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 45290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 45300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 45310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 45320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 45330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 45340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 45350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 45360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 45370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 45380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 45390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 45405e1bc7508bd2f6cbe52ce1d7cb13194a0d265406Jiju Kinattingal case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONE"; 45410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 45420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 45430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 45440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 45450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 45460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 45475fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville case RIL_UNSOL_CELL_INFO_LIST: return "UNSOL_CELL_INFO_LIST"; 45481260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED: 45491260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa return "UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED"; 4550a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED: 4551a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return "RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED"; 4552a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_SRVCC_STATE_NOTIFY: 4553a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return "UNSOL_SRVCC_STATE_NOTIFY"; 4554a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: return "RIL_UNSOL_HARDWARE_CONFIG_CHANGED"; 45552b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville case RIL_UNSOL_RADIO_CAPABILITY: 45562b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville return "RIL_UNSOL_RADIO_CAPABILITY"; 455709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_ON_SS: return "UNSOL_ON_SS"; 455809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja case RIL_UNSOL_STK_CC_ALPHA_NOTIFY: return "UNSOL_STK_CC_ALPHA_NOTIFY"; 455965bee39d7e417fb898c3948696d5d8a38046c449fenglu case RIL_UNSOL_LCEDATA_RECV: return "UNSOL_LCE_INFO_RECV"; 45604b4d80db8a8d447d3c1110831c2a821a2bd2a186Robert Greenwalt case RIL_UNSOL_PCO_DATA: return "UNSOL_PCO_DATA"; 45611260f1c6c909f2940989b72afe1b91fd83845eaaSukanya Rajkhowa default: return "<unknown response>"; 45620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLog(String msg) { 4566a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(RILJ_LOG_TAG, msg 4567a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + (mInstanceId != null ? (" [SUB" + mInstanceId + "]") : "")); 45680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void riljLogv(String msg) { 4571a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.v(RILJ_LOG_TAG, msg 4572a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + (mInstanceId != null ? (" [SUB" + mInstanceId + "]") : "")); 45730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLog(int response) { 45760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response)); 45770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogMore(int response, String more) { 45800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 45810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogRet(int response, Object ret) { 45840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 45850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 45870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void unsljLogvRet(int response, Object ret) { 45880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 45890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 45900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 459109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja private Object 459209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja responseSsData(Parcel p) { 459309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja int num; 459409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja SsData ssData = new SsData(); 459509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 459609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.serviceType = ssData.ServiceTypeFromRILInt(p.readInt()); 459709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.requestType = ssData.RequestTypeFromRILInt(p.readInt()); 459809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.teleserviceType = ssData.TeleserviceTypeFromRILInt(p.readInt()); 459909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.serviceClass = p.readInt(); // This is service class sent in the SS request. 460009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.result = p.readInt(); // This is the result of the SS request. 460109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja num = p.readInt(); 460209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 460309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja if (ssData.serviceType.isTypeCF() && 460409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.requestType.isTypeInterrogation()) { 460509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo = new CallForwardInfo[num]; 460609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 460709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja for (int i = 0; i < num; i++) { 460809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i] = new CallForwardInfo(); 460909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 461009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].status = p.readInt(); 461109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].reason = p.readInt(); 461209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].serviceClass = p.readInt(); 461309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].toa = p.readInt(); 461409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].number = p.readString(); 461509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.cfInfo[i].timeSeconds = p.readInt(); 461609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 461709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja riljLog("[SS Data] CF Info " + i + " : " + ssData.cfInfo[i]); 461809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 461909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } else { 462009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.ssInfo = new int[num]; 462109b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja for (int i = 0; i < num; i++) { 462209b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja ssData.ssInfo[i] = p.readInt(); 462309b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja riljLog("[SS Data] SS Info " + i + " : " + ssData.ssInfo[i]); 462409b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 462509b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 462609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 462709b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja return ssData; 462809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja } 462909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja 46300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // ***** Methods for CDMA support 4632cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 46330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 46340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getDeviceIdentity(Message response) { 46350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 46360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 46380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 46400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 46410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4642cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 46430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 46440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getCDMASubscription(Message response) { 46450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 46460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 46480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 46500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 46510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 46531a87ab3d7170d618f048c4f5af8c7504a587aaa5Jack Yu public void setPhoneType(int phoneType) { // Called by GsmCdmaPhone 46540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 46550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mPhoneType = phoneType; 46560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 46570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 46590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 46600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4661cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 46620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryCdmaRoamingPreference(Message response) { 46630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 46640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 46650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 46670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 46690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 46700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 46720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 46730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4674cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 46750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 46760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 46770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 46780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 467922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 468022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaRoamingType); 46810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 46830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaRoamingType); 46840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 46860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 46870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 46890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 46900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4691cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 46920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 46930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 46940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 46950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 469622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 469722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(cdmaSubscription); 46980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 46990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 47000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + cdmaSubscription); 47010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 47060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 47070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 47080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 47090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaSubscriptionSource(Message response) { 47100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 47110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 47120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 47140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 47190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 47200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4721cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 47220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void queryTTYMode(Message response) { 47230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 47240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 47250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 47270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 47320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 47330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4734cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 47350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setTTYMode(int ttyMode, Message response) { 47360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain( 47370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 47380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 473922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 474022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(ttyMode); 47410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 47430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + ttyMode); 47440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 47490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 47500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4751cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 47520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void 47530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 47540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 47550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 475622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(FeatureCode); 47570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 47590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville + " : " + FeatureCode); 47600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4764cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 47650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void getCdmaBroadcastConfig(Message response) { 47660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 47670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 47680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 47690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4771cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 4772a63f55cf17629426d976830429a7612387532195Rika Brooks public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 47730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 47740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4775a63f55cf17629426d976830429a7612387532195Rika Brooks // Convert to 1 service category per config (the way RIL takes is) 4776a63f55cf17629426d976830429a7612387532195Rika Brooks ArrayList<CdmaSmsBroadcastConfigInfo> processedConfigs = 4777a63f55cf17629426d976830429a7612387532195Rika Brooks new ArrayList<CdmaSmsBroadcastConfigInfo>(); 4778a63f55cf17629426d976830429a7612387532195Rika Brooks for (CdmaSmsBroadcastConfigInfo config : configs) { 4779a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = config.getFromServiceCategory(); i <= config.getToServiceCategory(); i++) { 4780a63f55cf17629426d976830429a7612387532195Rika Brooks processedConfigs.add(new CdmaSmsBroadcastConfigInfo(i, 4781a63f55cf17629426d976830429a7612387532195Rika Brooks i, 4782a63f55cf17629426d976830429a7612387532195Rika Brooks config.getLanguage(), 4783a63f55cf17629426d976830429a7612387532195Rika Brooks config.isSelected())); 4784a63f55cf17629426d976830429a7612387532195Rika Brooks } 47850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 47860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4787a63f55cf17629426d976830429a7612387532195Rika Brooks CdmaSmsBroadcastConfigInfo[] rilConfigs = processedConfigs.toArray(configs); 478822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs.length); 4789a63f55cf17629426d976830429a7612387532195Rika Brooks for(int i = 0; i < rilConfigs.length; i++) { 479022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getFromServiceCategory()); 479122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].getLanguage()); 479222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(rilConfigs[i].isSelected() ? 1 : 0); 4793a63f55cf17629426d976830429a7612387532195Rika Brooks } 4794a63f55cf17629426d976830429a7612387532195Rika Brooks 4795a63f55cf17629426d976830429a7612387532195Rika Brooks if (RILJ_LOGD) { 4796a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 4797a63f55cf17629426d976830429a7612387532195Rika Brooks + " with " + rilConfigs.length + " configs : "); 4798a63f55cf17629426d976830429a7612387532195Rika Brooks for (int i = 0; i < rilConfigs.length; i++) { 4799a63f55cf17629426d976830429a7612387532195Rika Brooks riljLog(rilConfigs[i].toString()); 4800a63f55cf17629426d976830429a7612387532195Rika Brooks } 4801a63f55cf17629426d976830429a7612387532195Rika Brooks } 48020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 48040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 48050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4806cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 48070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 48080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 48090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 481022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(1); 481122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeInt(activate ? 0 :1); 48120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 48140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 48160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 48170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 48190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@inheritDoc} 48200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4821cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 48220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void exitEmergencyCallbackMode(Message response) { 48230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 48240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 48260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 48280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 48290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4830cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 48310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void requestIsimAuthentication(String nonce, Message response) { 48320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 48330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 483422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville rr.mParcel.writeString(nonce); 48350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 48370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 48380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville send(rr); 48390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 48400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4841a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 4842ce083ae9d277bea9fbc1c143766adf1013f4a50eAmit Mahajan public void requestIccSimAuthentication(int authContext, String data, String aid, 4843ce083ae9d277bea9fbc1c143766adf1013f4a50eAmit Mahajan Message response) { 48442fbca951019df69146cf472adadc05c5c2ef4a32Amit Mahajan RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_AUTHENTICATION, response); 4845a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4846ce083ae9d277bea9fbc1c143766adf1013f4a50eAmit Mahajan rr.mParcel.writeInt(authContext); 4847a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville rr.mParcel.writeString(data); 4848ce083ae9d277bea9fbc1c143766adf1013f4a50eAmit Mahajan rr.mParcel.writeString(aid); 4849a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4850a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 4851a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 4852a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville send(rr); 4853a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 4854a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 48555fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 48565fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 48575fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 48585fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 48595fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void getCellInfoList(Message result) { 48605fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CELL_INFO_LIST, result); 48615fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48625fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 48635fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48645fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 48655fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 48665fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48675fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville /** 48685fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville * {@inheritDoc} 48695fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville */ 48705fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville @Override 48715fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville public void setCellInfoListRate(int rateInMillis, Message response) { 48725fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog("setCellInfoListRate: " + rateInMillis); 48735fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, response); 48745fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48755fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(1); 48765fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville rr.mParcel.writeInt(rateInMillis); 48775fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48785fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 48795fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48805fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville send(rr); 48815fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville } 48825fb811ff076aa6b4a9ceca6edaf504a4c6d9ad20Wink Saville 48835d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi public void setInitialAttachApn(String apn, String protocol, int authType, String username, 48845d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi String password, Message result) { 48854d3af373fc074bdde5e6ceb521b5e7e19bbbd8aeSanket Padawe RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_INITIAL_ATTACH_APN, result); 48865d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 48875d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi if (RILJ_LOGD) riljLog("Set RIL_REQUEST_SET_INITIAL_ATTACH_APN"); 48885d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 48895d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(apn); 48905d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(protocol); 48915d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeInt(authType); 48925d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(username); 48935d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi rr.mParcel.writeString(password); 48945d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 48955d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 48965d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi + ", apn:" + apn + ", protocol:" + protocol + ", authType:" + authType 48975d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi + ", username:" + username + ", password:" + password); 48985d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 48995d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi send(rr); 49005d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi } 49015d5eea6ed231163c225144316b0d1913d48678a4Sungmin Choi 49029d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan public void setDataProfile(DataProfile[] dps, Message result) { 49039d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan if (RILJ_LOGD) riljLog("Set RIL_REQUEST_SET_DATA_PROFILE"); 49049d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan 49059d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_DATA_PROFILE, null); 49069d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan DataProfile.toParcel(rr.mParcel, dps); 49079d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan 49089d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan if (RILJ_LOGD) { 49099d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 49109d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan + " with " + dps + " Data Profiles : "); 49119d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan for (int i = 0; i < dps.length; i++) { 49129d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan riljLog(dps[i].toString()); 49139d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan } 49149d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan } 49159d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan 49169d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan send(rr); 49179d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan } 49189d4ec7d45061f1da05f16cd244eb0a798e7f36bbAmit Mahajan 49190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* (non-Javadoc) 49200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 49210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 49220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 49230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testingEmergencyCall() { 49240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 49250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mTestingEmergencyCall.set(true); 49260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 49270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 49280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 492905ef3b65972826780859b9acbd1fa9580d099832Alex Yakavenka pw.println("RIL: " + this); 49300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSocket=" + mSocket); 49310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSenderThread=" + mSenderThread); 49320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mSender=" + mSender); 49330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 49340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mReceiver=" + mReceiver); 49350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLock=" + mWakeLock); 49360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 4937892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt synchronized (mRequestList) { 49387cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt synchronized (mWakeLock) { 49397cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt pw.println(" mWakeLockCount=" + mWakeLockCount); 49407cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt } 4941892e1fecf3c3736c4c04cf219d01034f71307065Robert Greenwalt int count = mRequestList.size(); 49420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mRequestList count=" + count); 49430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < count; i++) { 49447cabec78b4c9ad40f23d8f9fd756722d33b4a639Robert Greenwalt RILRequest rr = mRequestList.valueAt(i); 49450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 49460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 49470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4948d39109502855e8d81e45e21161d8bf0cfacf42e0Sanket Padawe pw.println(" mLastNITZTimeInfo=" + Arrays.toString(mLastNITZTimeInfo)); 49490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 49500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 495140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 495240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal /** 495340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal * {@inheritDoc} 495440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal */ 495540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 495640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccOpenLogicalChannel(String AID, Message response) { 495740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_OPEN_CHANNEL, response); 495840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeString(AID); 495940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 496040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal if (RILJ_LOGD) 496140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 496240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 496340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal send(rr); 496440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 496540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 496640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal /** 496740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal * {@inheritDoc} 496840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal */ 496940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 497040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccCloseLogicalChannel(int channel, Message response) { 497140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_CLOSE_CHANNEL, response); 497240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(1); 497340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(channel); 497440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 497540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal if (RILJ_LOGD) 497640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 497740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 497840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal send(rr); 497940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 498040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 498140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal /** 498240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal * {@inheritDoc} 498340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal */ 498440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 498540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 498640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal int p1, int p2, int p3, String data, Message response) { 498740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal if (channel <= 0) { 498840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal throw new RuntimeException( 498940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal "Invalid channel in iccTransmitApduLogicalChannel: " + channel); 499040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 499140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 4992c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal iccTransmitApduHelper(RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL, channel, cla, 4993c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal instruction, p1, p2, p3, data, response); 499440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 499540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 499640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal /** 499740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal * {@inheritDoc} 499840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal */ 499940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal @Override 500040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, 500140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal int p3, String data, Message response) { 5002c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal iccTransmitApduHelper(RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC, 0, cla, instruction, 5003c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal p1, p2, p3, data, response); 500440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 500540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 500640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal /* 500740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal * Helper function for the iccTransmitApdu* commands above. 500840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal */ 5009c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal private void iccTransmitApduHelper(int rilCommand, int channel, int cla, 5010c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal int instruction, int p1, int p2, int p3, String data, Message response) { 5011c6685a68c55405300c798c087d95a882de54b900Shishir Agrawal RILRequest rr = RILRequest.obtain(rilCommand, response); 501240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(channel); 501340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(cla); 501440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(instruction); 501540d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(p1); 501640d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(p2); 501740d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeInt(p3); 501840d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal rr.mParcel.writeString(data); 501940d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 502040d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal if (RILJ_LOGD) 502140d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 502240d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal 502340d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal send(rr); 502440d1d394302d83eb56f66cf08daecc612c97cd28Shishir Agrawal } 5025f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5026f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 5027f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvReadItem(int itemID, Message response) { 5028f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_NV_READ_ITEM, response); 5029f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5030f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby rr.mParcel.writeInt(itemID); 5031f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5032f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 5033f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby + ' ' + itemID); 5034f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5035f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby send(rr); 5036f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 5037f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5038f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 5039f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvWriteItem(int itemID, String itemValue, Message response) { 5040f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_NV_WRITE_ITEM, response); 5041f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5042f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby rr.mParcel.writeInt(itemID); 5043f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby rr.mParcel.writeString(itemValue); 5044f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5045f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 5046f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby + ' ' + itemID + ": " + itemValue); 5047f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5048f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby send(rr); 5049f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 5050f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5051f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 5052f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response) { 5053f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_NV_WRITE_CDMA_PRL, response); 5054f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5055f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby rr.mParcel.writeByteArray(preferredRoamingList); 5056f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5057f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 5058f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby + " (" + preferredRoamingList.length + " bytes)"); 5059f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5060f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby send(rr); 5061f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 5062f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5063f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby @Override 5064f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby public void nvResetConfig(int resetType, Message response) { 5065f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_NV_RESET_CONFIG, response); 5066f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 50679e2cb6350e698eaefe393cd652e0d0e264682d6eJake Hamby rr.mParcel.writeInt(1); 5068f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby rr.mParcel.writeInt(resetType); 5069f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5070f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 5071f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby + ' ' + resetType); 5072f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby 5073f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby send(rr); 5074f28ac81ec36df38307648d404cff4b2b11f46861Jake Hamby } 50752b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 50762b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville @Override 50772b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public void setRadioCapability(RadioCapability rc, Message response) { 50782b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville RILRequest rr = RILRequest.obtain( 50792b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville RIL_REQUEST_SET_RADIO_CAPABILITY, response); 50802b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 50812b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeInt(rc.getVersion()); 50822b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeInt(rc.getSession()); 50832b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeInt(rc.getPhase()); 50842b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeInt(rc.getRadioAccessFamily()); 50852b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeString(rc.getLogicalModemUuid()); 50862b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville rr.mParcel.writeInt(rc.getStatus()); 50872b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 50882b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville if (RILJ_LOGD) { 50892b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 50902b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville + " " + rc.toString()); 50912b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 50922b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 50932b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville send(rr); 50942b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 50952b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 50962b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville @Override 50972b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville public void getRadioCapability(Message response) { 50982b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville RILRequest rr = RILRequest.obtain( 50992b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville RIL_REQUEST_GET_RADIO_CAPABILITY, response); 51002b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 51012b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 51022b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville 51032b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville send(rr); 51042b40e6226b4b71408964bca46f0a9f256cd4f523Wink Saville } 510565bee39d7e417fb898c3948696d5d8a38046c449fenglu 510665bee39d7e417fb898c3948696d5d8a38046c449fenglu @Override 510765bee39d7e417fb898c3948696d5d8a38046c449fenglu public void startLceService(int reportIntervalMs, boolean pullMode, Message response) { 510865bee39d7e417fb898c3948696d5d8a38046c449fenglu RILRequest rr = RILRequest.obtain(RIL_REQUEST_START_LCE, response); 510965bee39d7e417fb898c3948696d5d8a38046c449fenglu /** solicited command argument: reportIntervalMs, pullMode. */ 511065bee39d7e417fb898c3948696d5d8a38046c449fenglu rr.mParcel.writeInt(2); 511165bee39d7e417fb898c3948696d5d8a38046c449fenglu rr.mParcel.writeInt(reportIntervalMs); 511265bee39d7e417fb898c3948696d5d8a38046c449fenglu rr.mParcel.writeInt(pullMode ? 1: 0); // PULL mode: 1; PUSH mode: 0; 511365bee39d7e417fb898c3948696d5d8a38046c449fenglu 511465bee39d7e417fb898c3948696d5d8a38046c449fenglu if (RILJ_LOGD) { 511565bee39d7e417fb898c3948696d5d8a38046c449fenglu riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 511665bee39d7e417fb898c3948696d5d8a38046c449fenglu } 511765bee39d7e417fb898c3948696d5d8a38046c449fenglu 511865bee39d7e417fb898c3948696d5d8a38046c449fenglu send(rr); 511965bee39d7e417fb898c3948696d5d8a38046c449fenglu } 512065bee39d7e417fb898c3948696d5d8a38046c449fenglu 512165bee39d7e417fb898c3948696d5d8a38046c449fenglu @Override 512265bee39d7e417fb898c3948696d5d8a38046c449fenglu public void stopLceService(Message response) { 512365bee39d7e417fb898c3948696d5d8a38046c449fenglu RILRequest rr = RILRequest.obtain(RIL_REQUEST_STOP_LCE, response); 512465bee39d7e417fb898c3948696d5d8a38046c449fenglu if (RILJ_LOGD) { 512565bee39d7e417fb898c3948696d5d8a38046c449fenglu riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 512665bee39d7e417fb898c3948696d5d8a38046c449fenglu } 512765bee39d7e417fb898c3948696d5d8a38046c449fenglu send(rr); 512865bee39d7e417fb898c3948696d5d8a38046c449fenglu } 512965bee39d7e417fb898c3948696d5d8a38046c449fenglu 513065bee39d7e417fb898c3948696d5d8a38046c449fenglu @Override 513165bee39d7e417fb898c3948696d5d8a38046c449fenglu public void pullLceData(Message response) { 513265bee39d7e417fb898c3948696d5d8a38046c449fenglu RILRequest rr = RILRequest.obtain(RIL_REQUEST_PULL_LCEDATA, response); 513365bee39d7e417fb898c3948696d5d8a38046c449fenglu if (RILJ_LOGD) { 513465bee39d7e417fb898c3948696d5d8a38046c449fenglu riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 513565bee39d7e417fb898c3948696d5d8a38046c449fenglu } 513665bee39d7e417fb898c3948696d5d8a38046c449fenglu send(rr); 513765bee39d7e417fb898c3948696d5d8a38046c449fenglu } 513827eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham 513927eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham /** 514027eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham * @hide 514127eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham */ 514227eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham public void getModemActivityInfo(Message response) { 514327eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_ACTIVITY_INFO, response); 514427eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham if (RILJ_LOGD) { 514527eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 514627eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham } 514727eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham send(rr); 514832c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold 514932c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold Message msg = mSender.obtainMessage(EVENT_BLOCKING_RESPONSE_TIMEOUT); 515032c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold msg.obj = null; 515132c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold msg.arg1 = rr.mSerial; 515232c5d16886f6ae4f250e4597fe5e70583ea5d912Nathan Harold mSender.sendMessageDelayed(msg, DEFAULT_BLOCKING_MESSAGE_RESPONSE_TIMEOUT_MS); 515327eef341b171f925ef43dd088cc559280fd7d2b9Prerepa Viswanadham } 515440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang 515540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang @Override 515640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang public void setAllowedCarriers(List<CarrierIdentifier> carriers, Message response) { 515740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_ALLOWED_CARRIERS, response); 515840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeInt(carriers.size()); /* len_allowed_carriers */ 515940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeInt(0); /* len_excluded_carriers */ /* TODO: add excluded carriers */ 516040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang for (CarrierIdentifier ci : carriers) { /* allowed carriers */ 516140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeString(ci.getMcc()); 516240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeString(ci.getMnc()); 516340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang int matchType = CarrierIdentifier.MatchType.ALL; 516440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang String matchData = null; 516540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang if (!TextUtils.isEmpty(ci.getSpn())) { 516640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchType = CarrierIdentifier.MatchType.SPN; 516740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchData = ci.getSpn(); 516840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (!TextUtils.isEmpty(ci.getImsi())) { 516940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchType = CarrierIdentifier.MatchType.IMSI_PREFIX; 517040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchData = ci.getImsi(); 517140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (!TextUtils.isEmpty(ci.getGid1())) { 517240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchType = CarrierIdentifier.MatchType.GID1; 517340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchData = ci.getGid1(); 517440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } else if (!TextUtils.isEmpty(ci.getGid2())) { 517540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchType = CarrierIdentifier.MatchType.GID2; 517640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang matchData = ci.getGid2(); 517740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 517840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeInt(matchType); 517940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang rr.mParcel.writeString(matchData); 518040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 518140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang /* TODO: add excluded carriers */ 518240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang 518340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang if (RILJ_LOGD) { 518440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 518540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 518640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang send(rr); 518740659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 518840659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang 518940659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang @Override 519040659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang public void getAllowedCarriers(Message response) { 519140659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_ALLOWED_CARRIERS, response); 519240659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang if (RILJ_LOGD) { 519340659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 519440659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 519540659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang send(rr); 519640659286ac42ec77bbe7893830bd50c06f393ee8Meng Wang } 51970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 5198