19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17767a662ecde33c3979bf02b793d392aca0403162Wink Savillepackage com.android.internal.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 192a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganeshimport static com.android.internal.telephony.RILConstants.*; 209c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 219c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; 229c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; 239c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; 249c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; 259c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; 269c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; 279c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.BroadcastReceiver; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter; 329b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwaltimport android.net.ConnectivityManager; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.LocalSocket; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.LocalSocketAddress; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.AsyncResult; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.HandlerThread; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Looper; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.PowerManager; 429c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport android.os.SystemProperties; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.PowerManager.WakeLock; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.NeighboringCellInfo; 452a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganeshimport android.telephony.PhoneNumberUtils; 46767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.SmsManager; 47767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.SmsMessage; 4870181e2a9f4366eb422dcfe35636e90090ebe942Wink Savilleimport android.text.TextUtils; 492a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganeshimport android.util.Log; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 51e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwangimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 52767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 53dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Savilleimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 54dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Savilleimport com.android.internal.telephony.cdma.CdmaInformationRecords; 558f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenkaimport com.android.internal.telephony.IccRefreshResponse; 56767a662ecde33c3979bf02b793d392aca0403162Wink Saville 57767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.ByteArrayInputStream; 58767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.DataInputStream; 5930ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Savilleimport java.io.FileDescriptor; 60767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.IOException; 612a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganeshimport java.io.InputStream; 6230ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Savilleimport java.io.PrintWriter; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Collections; 657c20c4607c4402589ce4800a0c49127876dbc6bdWink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 70767a662ecde33c3979bf02b793d392aca0403162Wink Savilleclass RILRequest { 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String LOG_TAG = "RILJ"; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Class Variables 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static int sNextSerial = 0; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static Object sSerialMonitor = new Object(); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static Object sPoolSync = new Object(); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static RILRequest sPool = null; 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static int sPoolSize = 0; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int MAX_POOL_SIZE = 4; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Instance Variables 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mSerial; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mRequest; 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message mResult; 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel mp; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest mNext; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieves a new RILRequest instance from the pool. 90767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param request RIL_REQUEST_* 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param result sent when operation completes 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a RILRequest instance from the pool. 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static RILRequest obtain(int request, Message result) { 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = null; 97767a662ecde33c3979bf02b793d392aca0403162Wink Saville 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sPoolSync) { 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (sPool != null) { 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = sPool; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPool = rr.mNext; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mNext = null; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPoolSize--; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 106767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr == null) { 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = new RILRequest(); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sSerialMonitor) { 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mSerial = sNextSerial++; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mRequest = request; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mResult = result; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp = Parcel.obtain(); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != null && result.getTarget() == null) { 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new NullPointerException("Message target must not be null"); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // first elements in any RIL Parcel 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(request); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(rr.mSerial); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return rr; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a RILRequest instance to the pool. 131767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note: This should only be called once per use. 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void release() { 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (sPoolSync) { 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (sPoolSize < MAX_POOL_SIZE) { 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mNext = sPool; 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPool = this; 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPoolSize++; 1403ffccab78666d8960c10a00239de6bb40f4fb1b6Johannes Carlsson mResult = null; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 145767a662ecde33c3979bf02b793d392aca0403162Wink Saville private RILRequest() { 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static void 149767a662ecde33c3979bf02b793d392aca0403162Wink Saville resetSerial() { 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sSerialMonitor) { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sNextSerial = 0; 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String 156767a662ecde33c3979bf02b793d392aca0403162Wink Saville serialString() { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Cheesy way to do %04d 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuilder sb = new StringBuilder(8); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String sn; 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sn = Integer.toString(mSerial); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //sb.append("J["); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append('['); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append('0'); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(sn); 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(']'); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sb.toString(); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void 17503228fa8f950dfee3f679d280f98d040dea397dcjohnwang onError(int error, Object ret) { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CommandException ex; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ex = CommandException.fromRilErrno(error); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RIL.RILJ_LOGD) Log.d(LOG_TAG, serialString() + "< " 181767a662ecde33c3979bf02b793d392aca0403162Wink Saville + RIL.requestToString(mRequest) 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " error: " + ex); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mResult != null) { 18503228fa8f950dfee3f679d280f98d040dea397dcjohnwang AsyncResult.forMessage(mResult, ret, ex); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResult.sendToTarget(); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp != null) { 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.recycle(); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp = null; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * RIL implementation of the CommandsInterface. 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * FIXME public only for testing 200767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 203767a662ecde33c3979bf02b793d392aca0403162Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String LOG_TAG = "RILJ"; 2051d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville static final boolean RILJ_LOGD = true; 2061d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville static final boolean RILJ_LOGV = false; // STOP SHIP if true 2070e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville 2080e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville /** 2090e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville * Wake lock timeout should be longer than the longest timeout in 2100e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville * the vendor ril. 2110e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville */ 212b260fe75c18e5cb4823654e031ea5a66e0eecdbbWink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Instance Variables 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket mSocket; 217767a662ecde33c3979bf02b793d392aca0403162Wink Saville HandlerThread mSenderThread; 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILSender mSender; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread mReceiverThread; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILReceiver mReceiver; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project WakeLock mWakeLock; 2220e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville int mWakeLockTimeout; 223696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // The number of requests pending to be sent out, it increases before calling 224696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // EVENT_SEND and decreases while handling EVENT_SEND. It gets cleared while 225696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT occurs. 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mRequestMessagesPending; 227696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // The number of requests sent out but waiting for response. It increases while 228696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // sending request and decreases while handling response. It should match 229696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestList.size() unless there are requests no replied while 230696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT occurs. 231696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang int mRequestMessagesWaiting; 232767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //I'd rather this be LinkedList or something 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<RILRequest> mRequestsList = new ArrayList<RILRequest>(); 235767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object mLastNITZTimeInfo; 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2387c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville // When we are testing emergency calls 2397c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 2407c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Events 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int EVENT_SEND = 1; 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Constants 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // match with constant in ril.cpp 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RESPONSE_SOLICITED = 0; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RESPONSE_UNSOLICITED = 1; 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String SOCKET_NAME_RIL = "rild"; 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 257e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 258e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville // RIL_CDMA_BroadcastServiceInfo 259e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 260e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 261e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 264e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void onReceive(Context context, Intent intent) { 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(true); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(false); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.w(LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 275767a662ecde33c3979bf02b793d392aca0403162Wink Saville 276767a662ecde33c3979bf02b793d392aca0403162Wink Saville class RILSender extends Handler implements Runnable { 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RILSender(Looper looper) { 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(looper); 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 280767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Only allocated once 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] dataLength = new byte[4]; 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Runnable implementation 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 286767a662ecde33c3979bf02b793d392aca0403162Wink Saville run() { 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //setup if needed 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 291145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby //***** Handler implementation 292145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby @Override public void 293767a662ecde33c3979bf02b793d392aca0403162Wink Saville handleMessage(Message msg) { 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = (RILRequest)(msg.obj); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest req = null; 296767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (msg.what) { 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case EVENT_SEND: 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mRequestMessagePending++ already happened for every 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * EVENT_SEND, thus we must make sure 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mRequestMessagePending-- happens once and only once 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean alreadySubtracted = false; 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket s; 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = mSocket; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s == null) { 31103228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(RADIO_NOT_AVAILABLE, null); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 313696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesPending > 0) 314696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending--; 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project alreadySubtracted = true; 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mRequestsList) { 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestsList.add(rr); 321696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting++; 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 324696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesPending > 0) 325696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending--; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project alreadySubtracted = true; 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] data; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data = rr.mp.marshall(); 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.recycle(); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp = null; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (data.length > RIL_MAX_COMMAND_BYTES) { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 336767a662ecde33c3979bf02b793d392aca0403162Wink Saville "Parcel larger than max bytes allowed! " 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + data.length); 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel length in big endian 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[0] = dataLength[1] = 0; 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[2] = (byte)((data.length >> 8) & 0xff); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[3] = (byte)((data.length) & 0xff); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(LOG_TAG, "writing packet: " + data.length + " bytes"); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 347767a662ecde33c3979bf02b793d392aca0403162Wink Saville s.getOutputStream().write(dataLength); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.getOutputStream().write(data); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex) { 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "IOException", ex); 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project req = findAndRemoveRequestFromList(rr.mSerial); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // make sure this request has not already been handled, 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // eg, if RILReceiver cleared the list. 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (req != null || !alreadySubtracted) { 35503228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(RADIO_NOT_AVAILABLE, null); 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RuntimeException exc) { 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Uncaught exception ", exc); 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project req = findAndRemoveRequestFromList(rr.mSerial); 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // make sure this request has not already been handled, 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // eg, if RILReceiver cleared the list. 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (req != null || !alreadySubtracted) { 36403228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(GENERIC_FAILURE, null); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36760bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain } finally { 36860bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // Note: We are "Done" only if there are no outstanding 36960bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // requests or replies. Thus this code path will only release 37060bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // the wake lock on errors. 37160bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain releaseWakeLockIfDone(); 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 374696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (!alreadySubtracted && mRequestMessagesPending > 0) { 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending--; 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case EVENT_WAKE_LOCK_TIMEOUT: 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Haven't heard back from the last request. Assume we're 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // not getting a response and release the wake lock. 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mWakeLock.isHeld()) { 38500d520b66caeef722281b76d30c0e1294070713dJohn Wang // The timer of WAKE_LOCK_TIMEOUT is reset with each 38600d520b66caeef722281b76d30c0e1294070713dJohn Wang // new send request. So when WAKE_LOCK_TIMEOUT occurs 38700d520b66caeef722281b76d30c0e1294070713dJohn Wang // all requests in mRequestList already waited at 38800d520b66caeef722281b76d30c0e1294070713dJohn Wang // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 389696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // Reset mRequestMessagesWaiting to enable 390696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // releaseWakeLockIfDone(). 39100d520b66caeef722281b76d30c0e1294070713dJohn Wang // 392696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // Note: Keep mRequestList so that delayed response 393696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // can still be handled when response finally comes. 394696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesWaiting != 0) { 395696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, "NOTE: mReqWaiting is NOT 0 but" 396696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + mRequestMessagesWaiting + " at TIMEOUT, reset!" 397696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + " There still msg waitng for response"); 398696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 399696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 400696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 401696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (RILJ_LOGD) { 402696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang synchronized (mRequestsList) { 403696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang int count = mRequestsList.size(); 404696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 405696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang " mRequestList=" + count); 406696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 407696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang for (int i = 0; i < count; i++) { 408696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang rr = mRequestsList.get(i); 409696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " 410696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + requestToString(rr.mRequest)); 411696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 412696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 413696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 414696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 415696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestMessagesPending shows how many 416696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // requests are waiting to be sent (and before 417696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // to be added in request list) since star the 418696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT timer. Since WAKE_LOCK_TIMEOUT 419696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // is the expected time to get response, all requests 420696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // should already sent out (i.e. 421696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestMessagesPending is 0 )while TIMEOUT occurs. 42200d520b66caeef722281b76d30c0e1294070713dJohn Wang if (mRequestMessagesPending != 0) { 423696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.e(LOG_TAG, "ERROR: mReqPending is NOT 0 but" 424696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + mRequestMessagesPending + " at TIMEOUT, reset!"); 425696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending = 0; 426696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.release(); 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reads in a single RIL message off the wire. A RIL message consists 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of a 4-byte little-endian length and a subsequent series of bytes. 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The final message (length header omitted) is read into 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <code>buffer</code> and the length of the final message (less header) 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is returned. A return value of -1 indicates end-of-stream. 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param is non-null; Stream to read from 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param buffer Buffer to fill in. Must be as large as maximum 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * message size, or an ArrayOutOfBounds exception will be thrown. 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Length of message less header, or -1 on end of stream. 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws IOException 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static int readRilMessage(InputStream is, byte[] buffer) 450767a662ecde33c3979bf02b793d392aca0403162Wink Saville throws IOException { 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int countRead; 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int offset; 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int remaining; 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int messageLength; 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // First, read in the length of the message 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset = 0; 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining = 4; 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project countRead = is.read(buffer, offset, remaining); 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (countRead < 0 ) { 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Hit EOS reading message length"); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset += countRead; 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining -= countRead; 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while (remaining > 0); 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project messageLength = ((buffer[0] & 0xff) << 24) 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | ((buffer[1] & 0xff) << 16) 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | ((buffer[2] & 0xff) << 8) 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | (buffer[3] & 0xff); 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Then, re-use the buffer and read in the message itself 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset = 0; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining = messageLength; 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project countRead = is.read(buffer, offset, remaining); 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (countRead < 0 ) { 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " remaining=" + remaining); 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset += countRead; 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining -= countRead; 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while (remaining > 0); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return messageLength; 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 495767a662ecde33c3979bf02b793d392aca0403162Wink Saville class RILReceiver implements Runnable { 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] buffer; 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 498767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILReceiver() { 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer = new byte[RIL_MAX_COMMAND_BYTES]; 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 503767a662ecde33c3979bf02b793d392aca0403162Wink Saville run() { 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int retryCount = 0; 505767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try {for (;;) { 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket s = null; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocketAddress l; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = new LocalSocket(); 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project l = new LocalSocketAddress(SOCKET_NAME_RIL, 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocketAddress.Namespace.RESERVED); 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.connect(l); 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex){ 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s != null) { 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.close(); 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex2) { 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //ignore failure to close after failure to connect 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 523767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // don't print an error message after the the first time 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // or after the 8th time 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (retryCount == 8) { 528767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e (LOG_TAG, 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Couldn't find '" + SOCKET_NAME_RIL 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket after " + retryCount 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " times, continuing to retry silently"); 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (retryCount > 0 && retryCount < 8) { 533767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.i (LOG_TAG, 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Couldn't find '" + SOCKET_NAME_RIL 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket; retrying after timeout"); 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 539767a662ecde33c3979bf02b793d392aca0403162Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException er) { 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project retryCount++; 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project continue; 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project retryCount = 0; 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSocket = s; 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length = 0; 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputStream is = mSocket.getInputStream(); 555767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (;;) { 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel p; 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = readRilMessage(is, buffer); 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length < 0) { 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // End-of-stream reached 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p = Parcel.obtain(); 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.unmarshall(buffer, 0, length); 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.setDataPosition(0); 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(LOG_TAG, "Read packet: " + length + " bytes"); 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processResponse(p); 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.recycle(); 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (java.io.IOException ex) { 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ex); 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (Throwable tr) { 5792a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh Log.e(LOG_TAG, "Uncaught exception read length=" + length + 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Exception:" + tr.toString()); 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket"); 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setRadioState (RadioState.RADIO_UNAVAILABLE); 587767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 589767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSocket.close(); 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex) { 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSocket = null; 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest.resetSerial(); 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Clear request list on close 59700d520b66caeef722281b76d30c0e1294070713dJohn Wang clearRequestsList(RADIO_NOT_AVAILABLE, false); 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }} catch (Throwable tr) { 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG,"Uncaught exception", tr); 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6011dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 6021dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville /* We're disconnected so we don't know the ril version */ 6031dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville notifyRegistrantsRilConnectionChanged(-1); 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Constructors 610767a662ecde33c3979bf02b793d392aca0403162Wink Saville 61105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context); 6135e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville if (RILJ_LOGD) { 61405d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 6155e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 6165e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville } 617767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCdmaSubscription = cdmaSubscription; 61805d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = preferredNetworkType; 6195e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville mPhoneType = RILConstants.NO_PHONE; 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 622767a662ecde33c3979bf02b793d392aca0403162Wink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.setReferenceCounted(false); 6240e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 6250e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending = 0; 627696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSenderThread = new HandlerThread("RILSender"); 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSenderThread.start(); 6312a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Looper looper = mSenderThread.getLooper(); 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender = new RILSender(looper); 6342a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 6359b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 6369b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt Context.CONNECTIVITY_SERVICE); 6379b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 6380dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 6390dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville } else { 6400dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville riljLog("Starting RILReceiver"); 6410dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiver = new RILReceiver(); 6420dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6430dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiverThread.start(); 6440dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville 6450dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville IntentFilter filter = new IntentFilter(); 6460dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6470dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6480dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville context.registerReceiver(mIntentReceiver, filter); 6490dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville } 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** CommandsInterface implementation 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 654fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla public void getVoiceRadioTechnology(Message result) { 655fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 656fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 657fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 658fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 659fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla send(rr); 660fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla } 661fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 662fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 663767a662ecde33c3979bf02b793d392aca0403162Wink Saville @Override public void 664767a662ecde33c3979bf02b793d392aca0403162Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setOnNITZTime(h, what, obj); 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Send the last NITZ time if we have it 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mLastNITZTimeInfo != null) { 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNITZTimeRegistrant 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrant( 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, mLastNITZTimeInfo, null)); 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mLastNITZTimeInfo = null; 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 676767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 677cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh getIccCardStatus(Message result) { 678767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 679767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6875284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 688767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPin(String pin, Message result) { 6895284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPinForApp(pin, null, result); 6905284090631e638b916d9a453212e9dc802656a67Wink Saville } 6915284090631e638b916d9a453212e9dc802656a67Wink Saville 6925284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 6935284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPinForApp(String pin, String aid, Message result) { 694767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 695767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7005284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(2); 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin); 7025284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7075284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 708767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 7095284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPukForApp(puk, newPin, null, result); 7105284090631e638b916d9a453212e9dc802656a67Wink Saville } 7115284090631e638b916d9a453212e9dc802656a67Wink Saville 7125284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7135284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 714767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 715767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7205284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(puk); 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin); 7235284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7285284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 729767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPin2(String pin, Message result) { 7305284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPin2ForApp(pin, null, result); 7315284090631e638b916d9a453212e9dc802656a67Wink Saville } 7325284090631e638b916d9a453212e9dc802656a67Wink Saville 7335284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7345284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 735767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 736767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7415284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(2); 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin); 7435284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7485284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7495284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7505284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7515284090631e638b916d9a453212e9dc802656a67Wink Saville } 7525284090631e638b916d9a453212e9dc802656a67Wink Saville 7535284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7545284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 755767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 756767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7615284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(puk); 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin2); 7645284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7695284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 770767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7715284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7725284090631e638b916d9a453212e9dc802656a67Wink Saville } 7735284090631e638b916d9a453212e9dc802656a67Wink Saville 7745284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7755284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 776767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 777767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7825284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPin); 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin); 7855284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7905284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 791767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 7925284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 7935284090631e638b916d9a453212e9dc802656a67Wink Saville } 7945284090631e638b916d9a453212e9dc802656a67Wink Saville 7955284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7965284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 797767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 798767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8035284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPin2); 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin2); 8065284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 812767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(3); 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPwd); 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPwd); 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 825767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 826767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(netpin); 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 836767a662ecde33c3979bf02b793d392aca0403162Wink Saville 837767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 838767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCurrentCalls (Message result) { 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 846145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby @Deprecated public void 847767a662ecde33c3979bf02b793d392aca0403162Wink Saville getPDPContextList(Message result) { 848767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataCallList(result); 849767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 850767a662ecde33c3979bf02b793d392aca0403162Wink Saville 851767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 852767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataCallList(Message result) { 853767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 860767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 861767a662ecde33c3979bf02b793d392aca0403162Wink Saville dial (String address, int clirMode, Message result) { 86224440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dial(address, clirMode, null, result); 86324440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } 86424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla 86524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla public void 86624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(address); 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(clirMode); 8710fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla rr.mp.writeInt(0); // UUS information is absent 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 87324440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla if (uusInfo == null) { 87424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(0); // UUS information is absent 87524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } else { 87624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(1); // UUS information is present 87724440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(uusInfo.getType()); 87824440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(uusInfo.getDcs()); 87924440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeByteArray(uusInfo.getUserData()); 88024440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } 88124440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 887767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 888767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMSI(Message result) { 8892149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka getIMSIForApp(null, result); 8902149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka } 8912149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka 8922149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka public void 8932149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka getIMSIForApp(String aid, Message result) { 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8962149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka rr.mp.writeInt(1); 8972149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka rr.mp.writeString(aid); 8982149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka 8992149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka if (RILJ_LOGD) riljLog(rr.serialString() + 9002149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka "> getIMSI: " + requestToString(rr.mRequest) 9012149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka + " aid: " + aid); 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 907767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMEI(Message result) { 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 916767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMEISV(Message result) { 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 925767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 926767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupConnection (int gsmIndex, Message result) { 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 931767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 932767a662ecde33c3979bf02b793d392aca0403162Wink Saville gsmIndex); 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(gsmIndex); 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 940767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 941767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupWaitingOrBackground (Message result) { 942767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result); 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 951767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupForegroundResumeBackground (Message result) { 952767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain( 954767a662ecde33c3979bf02b793d392aca0403162Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result); 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 962767a662ecde33c3979bf02b793d392aca0403162Wink Saville switchWaitingOrHoldingAndActive (Message result) { 963767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain( 965767a662ecde33c3979bf02b793d392aca0403162Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result); 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 973767a662ecde33c3979bf02b793d392aca0403162Wink Saville conference (Message result) { 974767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 983767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 984767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 985767a662ecde33c3979bf02b793d392aca0403162Wink Saville result); 986767a662ecde33c3979bf02b793d392aca0403162Wink Saville 987767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 988767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(enable ? 1:0); 989767a662ecde33c3979bf02b793d392aca0403162Wink Saville 990767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 991767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 992767a662ecde33c3979bf02b793d392aca0403162Wink Saville 993767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getPreferredVoicePrivacy(Message result) { 994767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 995767a662ecde33c3979bf02b793d392aca0403162Wink Saville result); 996767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 997767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 998767a662ecde33c3979bf02b793d392aca0403162Wink Saville 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1000767a662ecde33c3979bf02b793d392aca0403162Wink Saville separateConnection (int gsmIndex, Message result) { 1001767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + gsmIndex); 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(gsmIndex); 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1014767a662ecde33c3979bf02b793d392aca0403162Wink Saville acceptCall (Message result) { 1015767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1023767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1024767a662ecde33c3979bf02b793d392aca0403162Wink Saville rejectCall (Message result) { 1025767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1034767a662ecde33c3979bf02b793d392aca0403162Wink Saville explicitCallTransfer (Message result) { 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1044767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastCallFailCause (Message result) { 1045767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1053767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 1054767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @deprecated 1055767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 1056767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1057767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastPdpFailCause (Message result) { 1058767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastDataCallFailCause (result); 1059767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1060767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1061767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 1062767a662ecde33c3979bf02b793d392aca0403162Wink Saville * The preferred new alternative to getLastPdpFailCause 1063767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 1064767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1065767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastDataCallFailCause (Message result) { 1066767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1067767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1075767a662ecde33c3979bf02b793d392aca0403162Wink Saville setMute (boolean enableMute, Message response) { 1076767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + enableMute); 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enableMute ? 1 : 0); 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1089767a662ecde33c3979bf02b793d392aca0403162Wink Saville getMute (Message response) { 1090767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1099767a662ecde33c3979bf02b793d392aca0403162Wink Saville getSignalStrength (Message result) { 1100767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1108767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 11095284090631e638b916d9a453212e9dc802656a67Wink Saville getVoiceRegistrationState (Message result) { 1110767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11115284090631e638b916d9a453212e9dc802656a67Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1118767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 11195284090631e638b916d9a453212e9dc802656a67Wink Saville getDataRegistrationState (Message result) { 1120767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11215284090631e638b916d9a453212e9dc802656a67Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1128767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1129767a662ecde33c3979bf02b793d392aca0403162Wink Saville getOperator(Message result) { 1130767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1138767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1139767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendDtmf(char c, Message result) { 1140767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1144767a662ecde33c3979bf02b793d392aca0403162Wink Saville 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Character.toString(c)); 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startDtmf(char c, Message result) { 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Character.toString(c)); 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stopDtmf(Message result) { 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1172e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void 1173dafa22a3ef9328c72319aeec605f6a6d20e46080jsh sendBurstDtmf(String dtmfString, int on, int off, Message result) { 1174e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 1175e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1176dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeInt(3); 1177e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville rr.mp.writeString(dtmfString); 1178dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeString(Integer.toString(on)); 1179dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeString(Integer.toString(off)); 1180e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1181dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1182dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville + " : " + dtmfString); 1183dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1184e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville send(rr); 1185e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1188767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 1189767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(smscPDU); 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pdu); 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1197767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1198767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1199767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1200767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1201767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1202767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendCdmaSms(byte[] pdu, Message result) { 1203767a662ecde33c3979bf02b793d392aca0403162Wink Saville int address_nbr_of_digits; 1204767a662ecde33c3979bf02b793d392aca0403162Wink Saville int subaddr_nbr_of_digits; 1205767a662ecde33c3979bf02b793d392aca0403162Wink Saville int bearerDataLength; 1206767a662ecde33c3979bf02b793d392aca0403162Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 1207767a662ecde33c3979bf02b793d392aca0403162Wink Saville DataInputStream dis = new DataInputStream(bais); 1208767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1209767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1210767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 1211767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1212767a662ecde33c3979bf02b793d392aca0403162Wink Saville try { 1213767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.readInt()); //teleServiceId 1214767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) dis.readInt()); //servicePresent 1215767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.readInt()); //serviceCategory 1216767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_digit_mode 1217767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_mode 1218767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_ton 1219767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_plan 1220767a662ecde33c3979bf02b793d392aca0403162Wink Saville address_nbr_of_digits = (byte) dis.read(); 1221767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) address_nbr_of_digits); 1222767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 1223767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); // address_orig_bytes[i] 1224767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1225767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //subaddressType 1226767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) dis.read()); //subaddr_odd 1227767a662ecde33c3979bf02b793d392aca0403162Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 1228767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) subaddr_nbr_of_digits); 1229767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 1230767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 1231767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1232767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1233767a662ecde33c3979bf02b793d392aca0403162Wink Saville bearerDataLength = dis.read(); 1234767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(bearerDataLength); 1235767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < bearerDataLength; i++){ 1236767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); //bearerData[i] 1237767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1238767a662ecde33c3979bf02b793d392aca0403162Wink Saville }catch (IOException ex){ 1239767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 1240767a662ecde33c3979bf02b793d392aca0403162Wink Saville + ex); 1241767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1242767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1243767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1244767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void deleteSmsOnSim(int index, Message response) { 12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1251767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1252767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 1253767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(index); 1254767a662ecde33c3979bf02b793d392aca0403162Wink Saville 125543a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1256767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1257767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 1258767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + index); 1259767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1260767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1261767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1262767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1263767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1264767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void deleteSmsOnRuim(int index, Message response) { 1265767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 1266767a662ecde33c3979bf02b793d392aca0403162Wink Saville response); 1267767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(index); 12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 127143a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1272767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + requestToString(rr.mRequest) 12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + index); 12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status = translateStatus(status); 1282767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1285767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(status); 12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pdu); 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(smsc); 1289767a662ecde33c3979bf02b793d392aca0403162Wink Saville 129043a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1291767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1292767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 1293767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + status); 1294767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1295767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1296767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1297767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1298767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1299767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 1300767a662ecde33c3979bf02b793d392aca0403162Wink Saville status = translateStatus(status); 1301767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1302767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 1303767a662ecde33c3979bf02b793d392aca0403162Wink Saville response); 1304767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1305767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(status); 1306767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(pdu); 1307767a662ecde33c3979bf02b793d392aca0403162Wink Saville 130843a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1309767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1310767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + status); 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Translates EF_SMS status bits to a status value compatible with 13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SMS AT commands. See TS 27.005 3.1. 13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int translateStatus(int status) { 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(status & 0x7) { 1323767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_READ: 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 1325767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1327767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 3; 1329767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 2; 13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1332767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Default to READ. 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1337767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1338767a662ecde33c3979bf02b793d392aca0403162Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13394eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti String user, String password, String authType, String protocol, 13404eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti Message result) { 1341767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1342767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 1343767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1344b60c9ba33582e798e40b102ba3180d5cd1102ca3Lorenzo Colitti rr.mp.writeInt(7); 1345767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1346767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(radioTechnology); 1347767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(profile); 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(apn); 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(user); 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 1351106d27140bdd1acf388310807d662f08cb6292c6johnwang rr.mp.writeString(authType); 13524eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti rr.mp.writeString(protocol); 1353106d27140bdd1acf388310807d662f08cb6292c6johnwang 1354106d27140bdd1acf388310807d662f08cb6292c6johnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1355106d27140bdd1acf388310807d662f08cb6292c6johnwang + requestToString(rr.mRequest) + " " + radioTechnology + " " 1356106d27140bdd1acf388310807d662f08cb6292c6johnwang + profile + " " + apn + " " + user + " " 13574eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti + password + " " + authType + " " + protocol); 1358767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 13636ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo deactivateDataCall(int cid, int reason, Message result) { 1364767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1365767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13676ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo rr.mp.writeInt(2); 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(cid)); 13696ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo rr.mp.writeString(Integer.toString(reason)); 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1371767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 13726ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo requestToString(rr.mRequest) + " " + cid + " " + reason); 1373767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1378767a662ecde33c3979bf02b793d392aca0403162Wink Saville setRadioPower(boolean on, Message result) { 1379f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(on ? 1 : 0); 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1384f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville if (RILJ_LOGD) { 1385f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1386f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville + (on ? " on" : " off")); 1387f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville } 1388767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1393767a662ecde33c3979bf02b793d392aca0403162Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 1394767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 1399767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1401767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest)); 14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1406767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1407867641ece36e2fd17faaea79cf19506ab17177c6jsh acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 1408767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1411867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(2); 14129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(success ? 1 : 0); 1413867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(cause); 14149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1415867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1416867641ece36e2fd17faaea79cf19506ab17177c6jsh + " " + success + " " + cause); 1417767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1420767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1422867641ece36e2fd17faaea79cf19506ab17177c6jsh acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 1423767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1424767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 1425767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1426767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 1427767a662ecde33c3979bf02b793d392aca0403162Wink Saville // cause code according to X.S004-550E 1428867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(cause); 1429767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1430867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1431867641ece36e2fd17faaea79cf19506ab17177c6jsh + " " + success + " " + cause); 1432767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1433767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1434767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1435767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1436094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby public void 1437094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 1438094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILRequest rr 1439094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 1440094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1441094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeInt(2); 1442094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(success ? "1" : "0"); 1443094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(ackPdu); 1444094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1445094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1446094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby + ' ' + success + " [" + ackPdu + ']'); 1447094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1448094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby send(rr); 1449094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby } 1450767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1451767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1452767a662ecde33c3979bf02b793d392aca0403162Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 1453767a662ecde33c3979bf02b793d392aca0403162Wink Saville String data, String pin2, Message result) { 14542149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 14552149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka } 14562149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka public void 14572149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 14582149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka String data, String pin2, String aid, Message result) { 1459767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 1460767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 1461767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 1463767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(command); 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(fileid); 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(path); 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p1); 14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p2); 14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p3); 14709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(data); 14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin2); 14722149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka rr.mp.writeString(aid); 14739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14742149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 14752149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka + requestToString(rr.mRequest) 1476767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " 0x" + Integer.toHexString(command) 1477767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 1478e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " path: " + path + "," 14792149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka + p1 + "," + p2 + "," + p3 14802149014ed3dd99fb5f03321f96917ce72a7985deAlex Yakavenka + " aid: " + aid); 1481767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1484767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1486767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCLIR(Message result) { 1487767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 1489767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1491767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1496767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCLIR(int clirMode, Message result) { 1497767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 14999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count ints 15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 15029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(clirMode); 1504767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + clirMode); 1507767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1512767a662ecde33c3979bf02b793d392aca0403162Wink Saville queryCallWaiting(int serviceClass, Message response) { 1513767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 1518767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + serviceClass); 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1526767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 1527767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 15289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 1529767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); 15319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 15329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 1533767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + enable + ", " + serviceClass); 1536767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1541767a662ecde33c3979bf02b793d392aca0403162Wink Saville setNetworkSelectionModeAutomatic(Message response) { 1542767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1543767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 15449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1545767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1547767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1551767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1552767a662ecde33c3979bf02b793d392aca0403162Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 1553767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1554767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 15559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1556767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + operatorNumeric); 15599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(operatorNumeric); 1561767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1565767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1566767a662ecde33c3979bf02b793d392aca0403162Wink Saville getNetworkSelectionMode(Message response) { 1567767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1568767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 15699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1570767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1572767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1576767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1577767a662ecde33c3979bf02b793d392aca0403162Wink Saville getAvailableNetworks(Message response) { 1578767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1579767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1581767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1583767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1588767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCallForward(int action, int cfReason, int serviceClass, 1589767a662ecde33c3979bf02b793d392aca0403162Wink Saville String number, int timeSeconds, Message response) { 1590767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 15919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 15929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(action); 15949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(cfReason); 15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 15969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(number); 15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt (timeSeconds); 1599767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1601767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + action + " " + cfReason + " " + serviceClass 16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + timeSeconds); 1603767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project queryCallForwardStatus(int cfReason, int serviceClass, 1609767a662ecde33c3979bf02b793d392aca0403162Wink Saville String number, Message response) { 1610767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); // 2 is for query action, not in used anyway 16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(cfReason); 16159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 16169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 16179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(number); 16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt (0); 1619767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + cfReason + " " + serviceClass); 16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1627767a662ecde33c3979bf02b793d392aca0403162Wink Saville queryCLIP(Message response) { 16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1638767a662ecde33c3979bf02b793d392aca0403162Wink Saville getBasebandVersion (Message response) { 1639767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 1641767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16474360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 16494360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 16504360d7c678536a451dde6f4229e6d8c427b48523Wink Saville Message response) { 16514360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 16524360d7c678536a451dde6f4229e6d8c427b48523Wink Saville } 16534360d7c678536a451dde6f4229e6d8c427b48523Wink Saville 16544360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16554360d7c678536a451dde6f4229e6d8c427b48523Wink Saville public void 16564360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 1657767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message response) { 16589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count strings 16634360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeInt(4); 16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 16669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(serviceClass)); 16694360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeString(appId); 16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16744360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setFacilityLock (String facility, boolean lockState, String password, 1677767a662ecde33c3979bf02b793d392aca0403162Wink Saville int serviceClass, Message response) { 16784360d7c678536a451dde6f4229e6d8c427b48523Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 16794360d7c678536a451dde6f4229e6d8c427b48523Wink Saville } 16804360d7c678536a451dde6f4229e6d8c427b48523Wink Saville 16814360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16824360d7c678536a451dde6f4229e6d8c427b48523Wink Saville public void 16834360d7c678536a451dde6f4229e6d8c427b48523Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 16844360d7c678536a451dde6f4229e6d8c427b48523Wink Saville int serviceClass, String appId, Message response) { 16859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String lockString; 16869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 16879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 16889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count strings 16924360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeInt(5); 16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 16959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lockString = (lockState)?"1":"0"; 16969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(lockString); 16979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 16989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(serviceClass)); 16994360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeString(appId); 17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1704767a662ecde33c3979bf02b793d392aca0403162Wink Saville 17059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1706767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendUSSD (String ussdString, Message response) { 1707767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 17099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + ussdString); 17129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(ussdString); 17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // inherited javadoc suffices 17199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void cancelPendingUssd (Message response) { 17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() 17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "> " + requestToString(rr.mRequest)); 17259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1730767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void resetRadio(Message result) { 1731767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1739767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 1740767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 17429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1744767a662ecde33c3979bf02b793d392aca0403162Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeByteArray(data); 17479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1752767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 1753767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 17559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeStringArray(strings); 17599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Assign a specified band for RF configuration. 17659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bandMode one of BM_*_BAND 17679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param response is callback message 17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBandMode (int bandMode, Message response) { 17709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 17749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(bandMode); 17759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + bandMode); 17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Query the list of band mode supported by RF. 17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param response is callback message 17869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * ((AsyncResult)response.obj).result is an int[] with every 17879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * element representing one avialable BM_*_BAND 17889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void queryAvailableBandMode (Message response) { 17909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 17919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 17929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 17939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void sendTerminalResponse(String contents, Message response) { 18039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 18059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(contents); 18099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void sendEnvelope(String contents, Message response) { 18169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 18189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(contents); 18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1828094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby public void sendEnvelopeWithStatus(String contents, Message response) { 1829094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILRequest rr = RILRequest.obtain( 1830094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 1831094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1832094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1833094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby + '[' + contents + ']'); 1834094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1835094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(contents); 1836094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby send(rr); 1837094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby } 1838094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1839094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby /** 1840094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby * {@inheritDoc} 1841094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby */ 18429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void handleCallSetupRequestFromSim( 18439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean accept, Message response) { 18449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 18479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 18489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] param = new int[1]; 18529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project param[0] = accept ? 1 : 0; 18539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeIntArray(param); 18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1860975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville @Override 1861975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville public void setCurrentPreferredNetworkType() { 1862975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 1863975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 1864975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville } 1865975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville private int mSetPreferredNetworkType; 1866975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville 1867975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville /** 1868975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville * {@inheritDoc} 1869975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville */ 18709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setPreferredNetworkType(int networkType , Message response) { 18719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 18739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 18759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(networkType); 18769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1877975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville mSetPreferredNetworkType = networkType; 187805d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = networkType; 187905d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 18809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " : " + networkType); 18829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void getPreferredNetworkType(Message response) { 18909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 18929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 19009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void getNeighboringCids(Message response) { 19029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 19039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 19049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 19069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 19089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 19129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setLocationUpdates(boolean enable, Message response) { 19149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 19159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 19169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 1917767a662ecde33c3979bf02b793d392aca0403162Wink Saville 19189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " 19199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + requestToString(rr.mRequest) + ": " + enable); 1920767a662ecde33c3979bf02b793d392aca0403162Wink Saville 19219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 19229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1924c06ce125408696fd49c7fa9e1189ecb61804007ajsh /** 1925c06ce125408696fd49c7fa9e1189ecb61804007ajsh * {@inheritDoc} 1926c06ce125408696fd49c7fa9e1189ecb61804007ajsh */ 1927c06ce125408696fd49c7fa9e1189ecb61804007ajsh public void getSmscAddress(Message result) { 1928c06ce125408696fd49c7fa9e1189ecb61804007ajsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 1929c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1930c06ce125408696fd49c7fa9e1189ecb61804007ajsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1931c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1932c06ce125408696fd49c7fa9e1189ecb61804007ajsh send(rr); 1933c06ce125408696fd49c7fa9e1189ecb61804007ajsh } 1934c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1935c06ce125408696fd49c7fa9e1189ecb61804007ajsh /** 1936c06ce125408696fd49c7fa9e1189ecb61804007ajsh * {@inheritDoc} 1937c06ce125408696fd49c7fa9e1189ecb61804007ajsh */ 1938c06ce125408696fd49c7fa9e1189ecb61804007ajsh public void setSmscAddress(String address, Message result) { 1939c06ce125408696fd49c7fa9e1189ecb61804007ajsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 1940c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1941c06ce125408696fd49c7fa9e1189ecb61804007ajsh rr.mp.writeString(address); 1942c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1943c06ce125408696fd49c7fa9e1189ecb61804007ajsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1944c06ce125408696fd49c7fa9e1189ecb61804007ajsh + " : " + address); 1945c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1946c06ce125408696fd49c7fa9e1189ecb61804007ajsh send(rr); 1947c06ce125408696fd49c7fa9e1189ecb61804007ajsh } 1948c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1949867641ece36e2fd17faaea79cf19506ab17177c6jsh /** 1950867641ece36e2fd17faaea79cf19506ab17177c6jsh * {@inheritDoc} 1951867641ece36e2fd17faaea79cf19506ab17177c6jsh */ 1952867641ece36e2fd17faaea79cf19506ab17177c6jsh public void reportSmsMemoryStatus(boolean available, Message result) { 1953867641ece36e2fd17faaea79cf19506ab17177c6jsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 1954867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(1); 1955867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(available ? 1 : 0); 1956867641ece36e2fd17faaea79cf19506ab17177c6jsh 1957867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1958867641ece36e2fd17faaea79cf19506ab17177c6jsh + requestToString(rr.mRequest) + ": " + available); 1959867641ece36e2fd17faaea79cf19506ab17177c6jsh 1960867641ece36e2fd17faaea79cf19506ab17177c6jsh send(rr); 1961867641ece36e2fd17faaea79cf19506ab17177c6jsh } 1962867641ece36e2fd17faaea79cf19506ab17177c6jsh 1963e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville /** 1964e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville * {@inheritDoc} 1965e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville */ 1966e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville public void reportStkServiceIsRunning(Message result) { 1967e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 1968e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1969e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1970e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1971e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville send(rr); 1972e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville } 1973e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1974e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 1975e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 1976e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 1977e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void getGsmBroadcastConfig(Message response) { 1978e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 1979e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1980e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1981e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1982e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 1983e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1984e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1985e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 1986e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 1987e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 1988e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 1989e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 1990e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1991e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int numOfConfig = config.length; 1992e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(numOfConfig); 1993e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1994e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for(int i = 0; i < numOfConfig; i++) { 1995e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getFromServiceId()); 1996e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getToServiceId()); 1997e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getFromCodeScheme()); 1998e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getToCodeScheme()); 1999e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].isSelected() ? 1 : 0); 2000e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2001e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2002e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) { 2003e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 2004f044a370d41687e0546a63b747b7c383f7f41e3eJake Hamby + " with " + numOfConfig + " configs : "); 2005e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for (int i = 0; i < numOfConfig; i++) { 2006e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang riljLog(config[i].toString()); 2007e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2008e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2009e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2010e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 2011e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2012e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2013e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 2014e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 2015e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 2016e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setGsmBroadcastActivation(boolean activate, Message response) { 2017e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 2018e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2019e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(1); 2020e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(activate ? 0 : 1); 2021e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2022e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 2023e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2024e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 2025e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2026e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 20279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Private Methods 20289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029767a662ecde33c3979bf02b793d392aca0403162Wink Saville private void sendScreenState(boolean on) { 20309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 20319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 20329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(on ? 1 : 0); 2033767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2034e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 2035e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 2036767a662ecde33c3979bf02b793d392aca0403162Wink Saville 20379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 20389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039767a662ecde33c3979bf02b793d392aca0403162Wink Saville 20409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void 2041767a662ecde33c3979bf02b793d392aca0403162Wink Saville onRadioAvailable() { 20429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // In case screen state was lost (due to process crash), 20439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this ensures that the RIL knows the correct screen state. 20449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: Should query Power Manager and send the actual 20469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // screen state. Just send true for now. 20479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(true); 20489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20509a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka private RadioState getRadioStateFromInt(int stateInt) { 20519a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka RadioState state; 20529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* RIL_RadioState ril.h */ 20549a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka switch(stateInt) { 20559a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 0: state = RadioState.RADIO_OFF; break; 20569a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 1: state = RadioState.RADIO_UNAVAILABLE; break; 2057fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case 10: state = RadioState.RADIO_ON; break; 2058767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2059767a662ecde33c3979bf02b793d392aca0403162Wink Saville default: 20609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 20619a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka "Unrecognized RIL_RadioState: " + stateInt); 20629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20639a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka return state; 20649a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka } 20659a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka 20669a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka private void switchToRadioState(RadioState newState) { 206766958c73674673274bf08266b60ad3c1791c9179Wink Saville setRadioState(newState); 20689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Holds a PARTIAL_WAKE_LOCK whenever 20729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a) There is outstanding RIL request sent to RIL deamon and no replied 2073696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang * b) There is a request pending to be sent out. 20749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2075767a662ecde33c3979bf02b793d392aca0403162Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 20769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * happen often. 20779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2080767a662ecde33c3979bf02b793d392aca0403162Wink Saville acquireWakeLock() { 20819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 20829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.acquire(); 20839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending++; 20849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 20869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 20870e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 20889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2092767a662ecde33c3979bf02b793d392aca0403162Wink Saville releaseWakeLockIfDone() { 20939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 20949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mWakeLock.isHeld() && 20959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (mRequestMessagesPending == 0) && 2096696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang (mRequestMessagesWaiting == 0)) { 20979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 20989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.release(); 20999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2104767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(RILRequest rr) { 21059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message msg; 21069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 210760bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain if (mSocket == null) { 210860bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain rr.onError(RADIO_NOT_AVAILABLE, null); 210960bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain rr.release(); 211060bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain return; 211160bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain } 211260bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain 21139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg = mSender.obtainMessage(EVENT_SEND, rr); 21149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project acquireWakeLock(); 21169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg.sendToTarget(); 21189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2121767a662ecde33c3979bf02b793d392aca0403162Wink Saville processResponse (Parcel p) { 21229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int type; 21239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type = p.readInt(); 21259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type == RESPONSE_UNSOLICITED) { 21279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processUnsolicited (p); 21289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (type == RESPONSE_SOLICITED) { 21299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processSolicited (p); 2130767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 21319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project releaseWakeLockIfDone(); 21339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 213500d520b66caeef722281b76d30c0e1294070713dJohn Wang /** 213600d520b66caeef722281b76d30c0e1294070713dJohn Wang * Release each request in mReqeustsList then clear the list 213700d520b66caeef722281b76d30c0e1294070713dJohn Wang * @param error is the RIL_Errno sent back 213800d520b66caeef722281b76d30c0e1294070713dJohn Wang * @param loggable true means to print all requests in mRequestslist 213900d520b66caeef722281b76d30c0e1294070713dJohn Wang */ 214000d520b66caeef722281b76d30c0e1294070713dJohn Wang private void clearRequestsList(int error, boolean loggable) { 214100d520b66caeef722281b76d30c0e1294070713dJohn Wang RILRequest rr; 214200d520b66caeef722281b76d30c0e1294070713dJohn Wang synchronized (mRequestsList) { 214300d520b66caeef722281b76d30c0e1294070713dJohn Wang int count = mRequestsList.size(); 214400d520b66caeef722281b76d30c0e1294070713dJohn Wang if (RILJ_LOGD && loggable) { 214500d520b66caeef722281b76d30c0e1294070713dJohn Wang Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 214600d520b66caeef722281b76d30c0e1294070713dJohn Wang " mReqPending=" + mRequestMessagesPending + 214700d520b66caeef722281b76d30c0e1294070713dJohn Wang " mRequestList=" + count); 214800d520b66caeef722281b76d30c0e1294070713dJohn Wang } 214900d520b66caeef722281b76d30c0e1294070713dJohn Wang 215000d520b66caeef722281b76d30c0e1294070713dJohn Wang for (int i = 0; i < count ; i++) { 215100d520b66caeef722281b76d30c0e1294070713dJohn Wang rr = mRequestsList.get(i); 215200d520b66caeef722281b76d30c0e1294070713dJohn Wang if (RILJ_LOGD && loggable) { 215300d520b66caeef722281b76d30c0e1294070713dJohn Wang Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " + 215400d520b66caeef722281b76d30c0e1294070713dJohn Wang requestToString(rr.mRequest)); 215500d520b66caeef722281b76d30c0e1294070713dJohn Wang } 215600d520b66caeef722281b76d30c0e1294070713dJohn Wang rr.onError(error, null); 215700d520b66caeef722281b76d30c0e1294070713dJohn Wang rr.release(); 215800d520b66caeef722281b76d30c0e1294070713dJohn Wang } 215900d520b66caeef722281b76d30c0e1294070713dJohn Wang mRequestsList.clear(); 2160696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 216100d520b66caeef722281b76d30c0e1294070713dJohn Wang } 216200d520b66caeef722281b76d30c0e1294070713dJohn Wang } 216300d520b66caeef722281b76d30c0e1294070713dJohn Wang 2164767a662ecde33c3979bf02b793d392aca0403162Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 21659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mRequestsList) { 21669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = mRequestsList.size() ; i < s ; i++) { 21679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = mRequestsList.get(i); 21689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr.mSerial == serial) { 21709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestsList.remove(i); 2171696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesWaiting > 0) 2172696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting--; 21739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return rr; 21749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 21799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2182767a662ecde33c3979bf02b793d392aca0403162Wink Saville processSolicited (Parcel p) { 21839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int serial, error; 21849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean found = false; 21859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project serial = p.readInt(); 21879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project error = p.readInt(); 21889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr; 21909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = findAndRemoveRequestFromList(serial); 21929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr == null) { 2194767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.w(LOG_TAG, "Unexpected solicited response! sn: " 21959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + serial + " error: " + error); 21969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 21979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219903228fa8f950dfee3f679d280f98d040dea397dcjohnwang Object ret = null; 2200767a662ecde33c3979bf02b793d392aca0403162Wink Saville 220103228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (error == 0 || p.dataAvail() > 0) { 220203228fa8f950dfee3f679d280f98d040dea397dcjohnwang // either command succeeds or command fails but with data payload 220303228fa8f950dfee3f679d280f98d040dea397dcjohnwang try {switch (rr.mRequest) { 220403228fa8f950dfee3f679d280f98d040dea397dcjohnwang /* 22059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_commands.h \ 22069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 22079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 220803228fa8f950dfee3f679d280f98d040dea397dcjohnwang */ 2209767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 2210be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 2211be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 2212be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 2213be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 2214be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 2215be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 2216be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 22179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 22189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 22199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 22209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 22219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 22227c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 22237c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if (mTestingEmergencyCall.getAndSet(false)) { 22247c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if (mEmergencyCallbackModeRegistrant != null) { 22257c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville riljLog("testing emergency call, notify ECM Registrants"); 22267c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 22277c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 22287c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 22297c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville ret = responseVoid(p); 22307c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville break; 22317c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 22329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 22339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 22349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 22359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2236dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 22375284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 22385284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 22399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 22409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 22419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 22429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 22439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 2244abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 2245767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 22469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 22479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 22489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 22499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 22509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 22519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 22529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 22539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 22549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 22559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 22569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 22579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 2258767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 22599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 2260be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 22619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 22629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 22639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 22649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 22653caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 22669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 22679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 22689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 22699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 2270767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 2271767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 2272767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 2273767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2274767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 2275767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 2276767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 2277767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 22789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 2279767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 2280767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 2281767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 2282767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 2283767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 2284767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 2285767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 2286767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 2287767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 2288767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 2289767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 2290767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 229105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 22929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 2293767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 22945284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 2295767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 2296767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 2297767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 2298767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 2299767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 2300767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 2301767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 2302767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 2303e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 2304767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 2305e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 2306e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2307e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 2308e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 2309767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2310767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 231127d074e0efbdabd40f00eca41169ea225c05fcbeNaveen Kalla case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 2312767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 2313767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 2314767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 2315767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 2316c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 2317c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 2318e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2319e51d57f4ab035cd9bc316cc0f93a200d326ef5f9Jaikumar Ganesh case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 2320144fdfec240a56890657d2248a22bdda9f22470cWink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 23215284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 2322463f22114587344c96460179069a08d7381fbfd6Jake Hamby case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 2323094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 2324094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 2325fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 23269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 2327767a662ecde33c3979bf02b793d392aca0403162Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 23289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //break; 232903228fa8f950dfee3f679d280f98d040dea397dcjohnwang }} catch (Throwable tr) { 233003228fa8f950dfee3f679d280f98d040dea397dcjohnwang // Exceptions here usually mean invalid RIL responses 2331767a662ecde33c3979bf02b793d392aca0403162Wink Saville 233203228fa8f950dfee3f679d280f98d040dea397dcjohnwang Log.w(LOG_TAG, rr.serialString() + "< " 233303228fa8f950dfee3f679d280f98d040dea397dcjohnwang + requestToString(rr.mRequest) 233403228fa8f950dfee3f679d280f98d040dea397dcjohnwang + " exception, possible invalid RIL response", tr); 23359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 233603228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (rr.mResult != null) { 233703228fa8f950dfee3f679d280f98d040dea397dcjohnwang AsyncResult.forMessage(rr.mResult, null, tr); 233803228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.mResult.sendToTarget(); 233903228fa8f950dfee3f679d280f98d040dea397dcjohnwang } 234003228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.release(); 234103228fa8f950dfee3f679d280f98d040dea397dcjohnwang return; 23429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 234303228fa8f950dfee3f679d280f98d040dea397dcjohnwang } 234403228fa8f950dfee3f679d280f98d040dea397dcjohnwang 234503228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (error != 0) { 234603228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(error, ret); 23479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 23489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 23499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 23529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + retToString(rr.mRequest, ret)); 2353767a662ecde33c3979bf02b793d392aca0403162Wink Saville 23549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr.mResult != null) { 23559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AsyncResult.forMessage(rr.mResult, ret, null); 23569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mResult.sendToTarget(); 23579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2358767a662ecde33c3979bf02b793d392aca0403162Wink Saville 23599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 23609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String 2363767a662ecde33c3979bf02b793d392aca0403162Wink Saville retToString(int req, Object ret) { 23649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ret == null) return ""; 23659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (req) { 23669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Don't log these return values, for privacy's sake. 23679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: 23689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: 23699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: 23701d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville if (!RILJ_LOGV) { 23711d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 23721d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville return ""; 23731d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville } 23749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuilder sb; 23779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String s; 23789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length; 23799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ret instanceof int[]){ 23809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] intArray = (int[]) ret; 23819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = intArray.length; 23829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder("{"); 23839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > 0) { 23849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = 0; 23859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(intArray[i++]); 23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ( i < length) { 23879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(", ").append(intArray[i++]); 23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("}"); 23919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 23929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (ret instanceof String[]) { 23939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] strings = (String[]) ret; 23949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = strings.length; 23959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder("{"); 23969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > 0) { 23979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = 0; 23989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(strings[i++]); 23999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ( i < length) { 24009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(", ").append(strings[i++]); 24019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("}"); 24049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 24059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 24069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 24079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder(" "); 24089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (DriverCall dc : calls) { 24099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("[").append(dc).append("] "); 24109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 24129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 24139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<NeighboringCellInfo> cells; 24149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cells = (ArrayList<NeighboringCellInfo>) ret; 24159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder(" "); 24169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (NeighboringCellInfo cell : cells) { 24179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(cell).append(" "); 24189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 24209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 24219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = ret.toString(); 24229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return s; 24249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2427767a662ecde33c3979bf02b793d392aca0403162Wink Saville processUnsolicited (Parcel p) { 24289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int response; 24299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object ret; 24309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readInt(); 24329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try {switch(response) { 24349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 24359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_unsol_commands.h \ 24369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 24379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 24389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 24399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 24419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 24425284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 24439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 24449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 24459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 24469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 24479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 2448dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 2449767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 24509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 24519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 24529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 24539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 24549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 24559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 24568f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 2457e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 24584df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 2459767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 2460767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 24613b9f0a33a110d01e587ffd5ec7708af68723ad4bJean-Baptiste Queru case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 2462767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 2463e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2464e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 2465e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 246622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 24672a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 2468bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 24691ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 247066958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 24715284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 24725284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 24731dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 2474fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 2475e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2476767a662ecde33c3979bf02b793d392aca0403162Wink Saville default: 2477767a662ecde33c3979bf02b793d392aca0403162Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 24789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //break; (implied) 24799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }} catch (Throwable tr) { 24802a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh Log.e(LOG_TAG, "Exception processing unsol response: " + response + 24819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Exception:" + tr.toString()); 24829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 24839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(response) { 24869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 24879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* has bonus radio state int */ 24889a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka RadioState newState = getRadioStateFromInt(p.readInt()); 24899a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 2490767a662ecde33c3979bf02b793d392aca0403162Wink Saville 24919a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka switchToRadioState(newState); 24929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 24949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 24959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCallStateRegistrants 24979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrants(new AsyncResult(null, null, null)); 24989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24995284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 25009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 25019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25025284090631e638b916d9a453212e9dc802656a67Wink Saville mVoiceNetworkStateRegistrants 25039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrants(new AsyncResult(null, null, null)); 25049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: { 25069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 25079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // FIXME this should move up a layer 25099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String a[] = new String[2]; 25109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a[1] = (String)ret; 25129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SmsMessage sms; 25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2515767a662ecde33c3979bf02b793d392aca0403162Wink Saville sms = SmsMessage.newFromCMT(a); 2516b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby if (mGsmSmsRegistrant != null) { 2517b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mGsmSmsRegistrant 25189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrant(new AsyncResult(null, sms, null)); 25199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 25239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSmsStatusRegistrant != null) { 25269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSmsStatusRegistrant.notifyRegistrant( 25279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult(null, ret, null)); 25289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 25319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] smsIndex = (int[])ret; 25349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if(smsIndex.length == 1) { 25369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSmsOnSimRegistrant != null) { 25379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSmsOnSimRegistrant. 25389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notifyRegistrant(new AsyncResult(null, smsIndex, null)); 25399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 25419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 25429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + smsIndex.length); 25439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: 25469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] resp = (String[])ret; 2547767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (resp.length < 2) { 25499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp = new String[2]; 25509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp[0] = ((String[])ret)[0]; 25519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp[1] = null; 25529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogMore(response, resp[0]); 25549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mUSSDRegistrant != null) { 25559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mUSSDRegistrant.notifyRegistrant( 25569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, resp, null)); 25579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2559767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 25609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // has bonus long containing milliseconds since boot that the NITZ 25639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // time was received 25649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long nitzReceiveTime = p.readLong(); 25659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object[] result = new Object[2]; 25679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result[0] = ret; 25699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result[1] = Long.valueOf(nitzReceiveTime); 25709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2571a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville boolean ignoreNitz = SystemProperties.getBoolean( 2572a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 2573767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2574a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville if (ignoreNitz) { 2575a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 25769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2577a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville if (mNITZTimeRegistrant != null) { 2578a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville 2579a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville mNITZTimeRegistrant 2580a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 2581a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville } else { 2582a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville // in case NITZ time registrant isnt registered yet 2583a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville mLastNITZTimeInfo = result; 2584a27421a306c49fbe9b3823b30f7ab1cd58b28854Wink Saville } 25859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2587767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIGNAL_STRENGTH: 25899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Note this is set to "verbose" because it happens 25909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // frequently 25919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGV) unsljLogvRet(response, ret); 2592767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSignalStrengthRegistrant != null) { 25949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSignalStrengthRegistrant.notifyRegistrant( 25959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2598767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 25999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26015284090631e638b916d9a453212e9dc802656a67Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 26029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 26059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSsnRegistrant != null) { 26089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSsnRegistrant.notifyRegistrant( 26099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: 26149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 26159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2616a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatSessionEndRegistrant != null) { 2617a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatSessionEndRegistrant.notifyRegistrant( 26189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: 26239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2625a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatProCmdRegistrant != null) { 2626a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatProCmdRegistrant.notifyRegistrant( 26279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: 26329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2634a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatEventRegistrant != null) { 2635a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatEventRegistrant.notifyRegistrant( 26369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: 26419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2643a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatCallSetUpRegistrant != null) { 2644a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatCallSetUpRegistrant.notifyRegistrant( 26459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 26509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 26519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2652767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccSmsFullRegistrant != null) { 2653767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 26549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2657767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_SIM_REFRESH: 26589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2660a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt if (mIccRefreshRegistrants != null) { 2661a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt mIccRefreshRegistrants.notifyRegistrants( 26629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2665767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2666767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CALL_RING: 2667dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26682a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 26699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mRingRegistrant != null) { 2670dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mRingRegistrant.notifyRegistrant( 2671dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 26729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26742a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 26754df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 26764df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (RILJ_LOGD) unsljLogvRet(response, ret); 26774df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (mRestrictedStateRegistrant != null) { 26784df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project mRestrictedStateRegistrant.notifyRegistrant( 26794df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project new AsyncResult (null, ret, null)); 26804df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 268155c6f8881fdd2c5894e6297f49a9c4e0dc81ff8dWink Saville break; 26822a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 2683767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 2684e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2685e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2686767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccStatusChangedRegistrants != null) { 2687767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2688767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2689767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2690767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2691767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 2692e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2693e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2694767a662ecde33c3979bf02b793d392aca0403162Wink Saville SmsMessage sms = (SmsMessage) ret; 2695767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2696b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby if (mCdmaSmsRegistrant != null) { 2697b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mCdmaSmsRegistrant 2698767a662ecde33c3979bf02b793d392aca0403162Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 2699767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2700767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2701767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2702767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 2703e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2704e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2705e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (mGsmBroadcastSmsRegistrant != null) { 2706e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang mGsmBroadcastSmsRegistrant 2707e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang .notifyRegistrant(new AsyncResult(null, ret, null)); 2708e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2709767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2710767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2711767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 2712e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2713767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2714767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccSmsFullRegistrant != null) { 2715767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 2716767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2717767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 27182a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 2719e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 2720e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) unsljLog(response); 2721e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2722e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 2723e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 2724e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2725e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2726e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2727e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 27283bd5b0154faa02e197cdc344b45d968aba43d726Anna Markova if (RILJ_LOGD) unsljLogRet(response, ret); 2729e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2730dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mCallWaitingInfoRegistrants != null) { 2731dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 2732dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 2733e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2734e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2735e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2736e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 2737dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2738e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2739dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mOtaProvisionRegistrants != null) { 2740dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 2741dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 2742e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2743e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2744e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2745e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 274622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 2747dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 274822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville try { 274922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 275022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } catch (ClassCastException e) { 275122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Log.e(LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 275222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville break; 2753dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 275422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 275522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 275622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 275722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville notifyRegistrantsCdmaInfoRec(rec); 2758dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 2759dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 2760dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 2761dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 2762dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 2763dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mUnsolOemHookRawRegistrant != null) { 2764dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 2765e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2766e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2767bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang 2768bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: 2769bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang if (RILJ_LOGD) unsljLogvRet(response, ret); 2770bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang if (mRingbackToneRegistrants != null) { 2771bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang boolean playtone = (((int[])ret)[0] == 1); 2772bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang mRingbackToneRegistrants.notifyRegistrants( 2773bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang new AsyncResult (null, playtone, null)); 2774bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang } 27751ccc41ed938ff005ae3d621292580a90601242caJohn Wang break; 27761ccc41ed938ff005ae3d621292580a90601242caJohn Wang 27771ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: 27781ccc41ed938ff005ae3d621292580a90601242caJohn Wang if (RILJ_LOGD) unsljLogRet(response, ret); 27791ccc41ed938ff005ae3d621292580a90601242caJohn Wang 27801ccc41ed938ff005ae3d621292580a90601242caJohn Wang if (mResendIncallMuteRegistrants != null) { 27811ccc41ed938ff005ae3d621292580a90601242caJohn Wang mResendIncallMuteRegistrants.notifyRegistrants( 27821ccc41ed938ff005ae3d621292580a90601242caJohn Wang new AsyncResult (null, ret, null)); 27831ccc41ed938ff005ae3d621292580a90601242caJohn Wang } 27845284090631e638b916d9a453212e9dc802656a67Wink Saville break; 27855284090631e638b916d9a453212e9dc802656a67Wink Saville 2786fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 2787fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla if (RILJ_LOGD) unsljLogRet(response, ret); 2788fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 2789fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla if (mVoiceRadioTechChangedRegistrants != null) { 2790fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla mVoiceRadioTechChangedRegistrants.notifyRegistrants( 2791fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla new AsyncResult(null, ret, null)); 2792fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla } 2793fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla break; 2794fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla 279566958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 27965284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27975284090631e638b916d9a453212e9dc802656a67Wink Saville 27985284090631e638b916d9a453212e9dc802656a67Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 27995284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 28005284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, ret, null)); 28015284090631e638b916d9a453212e9dc802656a67Wink Saville } 28025284090631e638b916d9a453212e9dc802656a67Wink Saville break; 28035284090631e638b916d9a453212e9dc802656a67Wink Saville 28045284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 28055284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28065284090631e638b916d9a453212e9dc802656a67Wink Saville 28075284090631e638b916d9a453212e9dc802656a67Wink Saville if (mCdmaPrlChangedRegistrants != null) { 28085284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 28095284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, ret, null)); 28105284090631e638b916d9a453212e9dc802656a67Wink Saville } 28115284090631e638b916d9a453212e9dc802656a67Wink Saville break; 28125284090631e638b916d9a453212e9dc802656a67Wink Saville 28135284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 28145284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 28155284090631e638b916d9a453212e9dc802656a67Wink Saville 28165284090631e638b916d9a453212e9dc802656a67Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 28175284090631e638b916d9a453212e9dc802656a67Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 28185284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, null, null)); 28195284090631e638b916d9a453212e9dc802656a67Wink Saville } 28205284090631e638b916d9a453212e9dc802656a67Wink Saville break; 28211dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 28221dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 28231dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 282466958c73674673274bf08266b60ad3c1791c9179Wink Saville 282566958c73674673274bf08266b60ad3c1791c9179Wink Saville // Initial conditions 282666958c73674673274bf08266b60ad3c1791c9179Wink Saville setRadioPower(false, null); 282705d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville setPreferredNetworkType(mPreferredNetworkType, null); 282866958c73674673274bf08266b60ad3c1791c9179Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 28291dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 28301dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville break; 28311dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 28321dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 28331dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 28341dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 28351dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville /** 28361dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 28371dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * 28381dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 28391dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville */ 28401dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 28411dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilVersion = rilVer; 28421dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville if (mRilConnectedRegistrants != null) { 28431dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilConnectedRegistrants.notifyRegistrants( 28441dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 28459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2849767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseInts(Parcel p) { 28509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int numInts; 28519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int response[]; 28529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numInts = p.readInt(); 28549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new int[numInts]; 28569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < numInts ; i++) { 28589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response[i] = p.readInt(); 28599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 28629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2866767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseVoid(Parcel p) { 28679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 28689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2871767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCallForward(Parcel p) { 28729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int numInfos; 28739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CallForwardInfo infos[]; 28749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numInfos = p.readInt(); 28769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos = new CallForwardInfo[numInfos]; 28789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < numInfos ; i++) { 28809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i] = new CallForwardInfo(); 28819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].status = p.readInt(); 28839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].reason = p.readInt(); 28849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].serviceClass = p.readInt(); 28859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].toa = p.readInt(); 28869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].number = p.readString(); 28879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].timeSeconds = p.readInt(); 28889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return infos; 28919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2894767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseSuppServiceNotification(Parcel p) { 28959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SuppServiceNotification notification = new SuppServiceNotification(); 2896767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.notificationType = p.readInt(); 28989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.code = p.readInt(); 28999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.index = p.readInt(); 29009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.type = p.readInt(); 29019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.number = p.readString(); 2902767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return notification; 29049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2905767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2907767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCdmaSms(Parcel p) { 2908767a662ecde33c3979bf02b793d392aca0403162Wink Saville SmsMessage sms; 2909767a662ecde33c3979bf02b793d392aca0403162Wink Saville sms = SmsMessage.newFromParcel(p); 2910767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2911767a662ecde33c3979bf02b793d392aca0403162Wink Saville return sms; 2912767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2913767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2914767a662ecde33c3979bf02b793d392aca0403162Wink Saville private Object 2915767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseString(Parcel p) { 29169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String response; 29179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readString(); 29199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 29219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2924767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseStrings(Parcel p) { 29259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 29269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String response[]; 29279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readStringArray(); 29299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (false) { 29319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project num = p.readInt(); 29329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new String[num]; 29349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < num; i++) { 29359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response[i] = p.readString(); 29369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2938767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 29409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2943767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseRaw(Parcel p) { 29449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 29459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte response[]; 29469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.createByteArray(); 29489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 29509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2953767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseSMS(Parcel p) { 29547b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh int messageRef, errorCode; 29559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String ackPDU; 29569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project messageRef = p.readInt(); 29589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ackPDU = p.readString(); 29597b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh errorCode = p.readInt(); 29609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29617b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 29629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 29649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2968094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby responseICC_IO(Parcel p) { 29699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int sw1, sw2; 29709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte data[] = null; 29719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message ret; 2972767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sw1 = p.readInt(); 29749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sw2 = p.readInt(); 29759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String s = p.readString(); 29779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29783b13b2c9d1ee6035996766d332ba8b85cc3bf3d2Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 2979e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " 0x" + Integer.toHexString(sw1) 2980e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 2981e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + s); 2982e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2983767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new IccIoResult(sw1, sw2, s); 29849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2987767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseIccCardStatus(Parcel p) { 2988767a662ecde33c3979bf02b793d392aca0403162Wink Saville IccCardApplication ca; 2989767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2990767a662ecde33c3979bf02b793d392aca0403162Wink Saville IccCardStatus status = new IccCardStatus(); 2991cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setCardState(p.readInt()); 2992cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setUniversalPinState(p.readInt()); 2993cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setGsmUmtsSubscriptionAppIndex(p.readInt()); 2994cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setCdmaSubscriptionAppIndex(p.readInt()); 29955284090631e638b916d9a453212e9dc802656a67Wink Saville status.setImsSubscriptionAppIndex(p.readInt()); 2996cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh int numApplications = p.readInt(); 2997767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2998767a662ecde33c3979bf02b793d392aca0403162Wink Saville // limit to maximum allowed applications 2999cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh if (numApplications > IccCardStatus.CARD_MAX_APPS) { 3000cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh numApplications = IccCardStatus.CARD_MAX_APPS; 30019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3002cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setNumApplications(numApplications); 30039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3004cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh for (int i = 0 ; i < numApplications ; i++) { 3005767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca = new IccCardApplication(); 3006767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_type = ca.AppTypeFromRILInt(p.readInt()); 3007767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_state = ca.AppStateFromRILInt(p.readInt()); 3008767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.perso_substate = ca.PersoSubstateFromRILInt(p.readInt()); 3009767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.aid = p.readString(); 3010767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_label = p.readString(); 3011767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.pin1_replaced = p.readInt(); 3012b0b24b3df50988d23f571b83d829fecc986ec497John Wang ca.pin1 = ca.PinStateFromRILInt(p.readInt()); 3013b0b24b3df50988d23f571b83d829fecc986ec497John Wang ca.pin2 = ca.PinStateFromRILInt(p.readInt()); 3014cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.addApplication(ca); 3015767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3016cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return status; 3017767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 30189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 30208f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka responseSimRefresh(Parcel p) { 30218f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka IccRefreshResponse response = new IccRefreshResponse(); 30228f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka 30238f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka response.refreshResult = p.readInt(); 30248f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka response.efId = p.readInt(); 30258f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka response.aid = p.readString(); 30268f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka return response; 30278f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka } 30288f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka 30298f241458051c8bd2a68b0e8b9fe0d0f326a0a56bAlex Yakavenka private Object 3030767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCallList(Parcel p) { 30319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 3032767a662ecde33c3979bf02b793d392aca0403162Wink Saville int voiceSettings; 30339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<DriverCall> response; 30349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DriverCall dc; 30359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project num = p.readInt(); 30379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new ArrayList<DriverCall>(num); 30389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30397c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if (RILJ_LOGV) { 30407c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville riljLog("responseCallList: num=" + num + 30417c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 30427c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 30437c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 30449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < num ; i++) { 30459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc = new DriverCall(); 3046767a662ecde33c3979bf02b793d392aca0403162Wink Saville 30479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.state = DriverCall.stateFromCLCC(p.readInt()); 30489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.index = p.readInt(); 30499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.TOA = p.readInt(); 30509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.isMpty = (0 != p.readInt()); 30519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.isMT = (0 != p.readInt()); 30529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.als = p.readInt(); 3053767a662ecde33c3979bf02b793d392aca0403162Wink Saville voiceSettings = p.readInt(); 3054767a662ecde33c3979bf02b793d392aca0403162Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 305522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 30569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.number = p.readString(); 3057a14f47f975064816df3008e66055d41ddb9d7353Wink Saville int np = p.readInt(); 3058a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 3059a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.name = p.readString(); 3060a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.namePresentation = p.readInt(); 30610fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla int uusInfoPresent = p.readInt(); 30620fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla if (uusInfoPresent == 1) { 306324440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo = new UUSInfo(); 306424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setType(p.readInt()); 306524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setDcs(p.readInt()); 306624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla byte[] userData = p.createByteArray(); 306724440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setUserData(userData); 30685284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 306924440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.getType(), dc.uusInfo.getDcs(), 307024440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.getUserData().length)); 30715284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : data (string)=" 307224440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla + new String(dc.uusInfo.getUserData())); 30735284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : data (hex): " 307424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 307524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } else { 30765284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : NOT present!"); 30770fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla } 3078767a662ecde33c3979bf02b793d392aca0403162Wink Saville 307922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 308022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 30819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response.add(dc); 3083767a662ecde33c3979bf02b793d392aca0403162Wink Saville 308422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (dc.isVoicePrivacy) { 3085767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 30865284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("InCall VoicePrivacy is enabled"); 3087767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 3088767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 30895284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("InCall VoicePrivacy is disabled"); 3090767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 30919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Collections.sort(response); 30949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30957c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 30967c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if (mEmergencyCallbackModeRegistrant != null) { 30977c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville riljLog("responseCallList: call ended, testing emergency call," + 30987c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville " notify ECM Registrants"); 30997c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 31007c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 31017c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 31027c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville 31039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 31049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3106abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville private DataCallState getDataCallState(Parcel p, int version) { 3107abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville DataCallState dataCall = new DataCallState(); 3108abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3109abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.version = version; 3110abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (version < 5) { 3111abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = p.readInt(); 3112abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.active = p.readInt(); 3113abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.type = p.readString(); 3114abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 3115aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville if (!TextUtils.isEmpty(addresses)) { 3116abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.addresses = addresses.split(" "); 3117abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3118abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } else { 3119abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.status = p.readInt(); 3120e0acd0842f2de9b2bf02d34c0ed90ca7a6ab30a9Kazuhiro Ondo dataCall.suggestedRetryTime = p.readInt(); 3121abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = p.readInt(); 3122abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.active = p.readInt(); 3123abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.type = p.readString(); 3124abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.ifname = p.readString(); 3125aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville if ((dataCall.status == DataConnection.FailCause.NONE.getErrorCode()) && 3126aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville TextUtils.isEmpty(dataCall.ifname)) { 312770181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville throw new RuntimeException("getDataCallState, no ifname"); 312870181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 3129abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 313070181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(addresses)) { 3131abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.addresses = addresses.split(" "); 3132abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3133abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String dnses = p.readString(); 313470181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(dnses)) { 3135abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.dnses = dnses.split(" "); 3136abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 31375284090631e638b916d9a453212e9dc802656a67Wink Saville String gateways = p.readString(); 31385284090631e638b916d9a453212e9dc802656a67Wink Saville if (!TextUtils.isEmpty(gateways)) { 31395284090631e638b916d9a453212e9dc802656a67Wink Saville dataCall.gateways = gateways.split(" "); 31405284090631e638b916d9a453212e9dc802656a67Wink Saville } 3141abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3142abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return dataCall; 3143abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3144abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 31459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 3146767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseDataCallList(Parcel p) { 3147e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ArrayList<DataCallState> response; 31489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3149abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int ver = p.readInt(); 3150abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int num = p.readInt(); 31515284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 31529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3153abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville response = new ArrayList<DataCallState>(num); 31549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < num; i++) { 3155abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville response.add(getDataCallState(p, ver)); 3156abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 31579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3158abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return response; 3159abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3160abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3161abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville private Object 3162abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville responseSetupDataCall(Parcel p) { 3163abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int ver = p.readInt(); 3164abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int num = p.readInt(); 31653b13b2c9d1ee6035996766d332ba8b85cc3bf3d2Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 31669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3167abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville DataCallState dataCall; 3168abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3169abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (ver < 5) { 3170abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall = new DataCallState(); 317170181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.version = ver; 3172abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 3173abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.ifname = p.readString(); 317470181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 3175abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville throw new RuntimeException( 317670181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 3177abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3178abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 317970181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(addresses)) { 318070181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.addresses = addresses.split(" "); 318170181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 318270181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (num >= 4) { 318370181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville String dnses = p.readString(); 31845284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 318570181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(dnses)) { 318670181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.dnses = dnses.split(" "); 318770181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 3188abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 31895284090631e638b916d9a453212e9dc802656a67Wink Saville if (num >= 5) { 31905284090631e638b916d9a453212e9dc802656a67Wink Saville String gateways = p.readString(); 31915284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 31925284090631e638b916d9a453212e9dc802656a67Wink Saville if (!TextUtils.isEmpty(gateways)) { 31935284090631e638b916d9a453212e9dc802656a67Wink Saville dataCall.gateways = gateways.split(" "); 31945284090631e638b916d9a453212e9dc802656a67Wink Saville } 31955284090631e638b916d9a453212e9dc802656a67Wink Saville } 3196abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } else { 3197abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (num != 1) { 3198abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville throw new RuntimeException( 3199abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 3200abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville + " got " + num); 3201abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3202abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall = getDataCallState(p, ver); 32039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 32049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3205abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return dataCall; 32069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 32079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 32093caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt responseOperatorInfos(Parcel p) { 32109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String strings[] = (String [])responseStrings(p); 32113caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt ArrayList<OperatorInfo> ret; 32129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (strings.length % 4 != 0) { 32149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 3215767a662ecde33c3979bf02b793d392aca0403162Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 32169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + strings.length + " strings, expected multible of 4"); 32179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 32189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32193caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt ret = new ArrayList<OperatorInfo>(strings.length / 4); 32209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < strings.length ; i += 4) { 32229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret.add ( 32233caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt new OperatorInfo( 32249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+0], 32259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+1], 32269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+2], 32279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+3])); 32289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3229767a662ecde33c3979bf02b793d392aca0403162Wink Saville 32309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ret; 32319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 32329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3233094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby private Object 3234094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby responseCellList(Parcel p) { 32359c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang int num, rssi; 32369c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang String location; 3237767a662ecde33c3979bf02b793d392aca0403162Wink Saville ArrayList<NeighboringCellInfo> response; 3238767a662ecde33c3979bf02b793d392aca0403162Wink Saville NeighboringCellInfo cell; 3239767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3240767a662ecde33c3979bf02b793d392aca0403162Wink Saville num = p.readInt(); 32419c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang response = new ArrayList<NeighboringCellInfo>(); 32429c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang 32439c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang // Determine the radio access type 32449c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang String radioString = SystemProperties.get( 32459c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 32469c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang int radioType; 32479c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang if (radioString.equals("GPRS")) { 32489c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_GPRS; 32499c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("EDGE")) { 32509c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_EDGE; 32519c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("UMTS")) { 32529c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_UMTS; 32539c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSDPA")) { 32549c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSDPA; 32559c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSUPA")) { 32569c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSUPA; 32579c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSPA")) { 32589c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSPA; 32599c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else { 32609c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_UNKNOWN; 3261767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 32622a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 32639c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang // Interpret the location based on radio access type 32649c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang if (radioType != NETWORK_TYPE_UNKNOWN) { 32659c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang for (int i = 0 ; i < num ; i++) { 32669c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang rssi = p.readInt(); 32679c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang location = p.readString(); 32689c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang cell = new NeighboringCellInfo(rssi, location, radioType); 32699c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang response.add(cell); 32709c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } 32719c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } 32729c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang return response; 3273767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3274767a662ecde33c3979bf02b793d392aca0403162Wink Saville 327505d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville private Object responseGetPreferredNetworkType(Parcel p) { 327605d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville int [] response = (int[]) responseInts(p); 327705d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 327805d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville if (response.length >= 1) { 327905d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // Since this is the response for getPreferredNetworkType 328005d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // we'll assume that it should be the value we want the 328105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // vendor ril to take if we reestablish a connection to it. 328205d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = response[0]; 328305d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville } 328405d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville return response; 328505d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville } 328605d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 3287e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang private Object responseGmsBroadcastConfig(Parcel p) { 3288e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int num; 3289e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang ArrayList<SmsBroadcastConfigInfo> response; 3290e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang SmsBroadcastConfigInfo info; 3291e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3292e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang num = p.readInt(); 3293e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang response = new ArrayList<SmsBroadcastConfigInfo>(num); 3294e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3295e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for (int i = 0; i < num; i++) { 3296e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int fromId = p.readInt(); 3297e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int toId = p.readInt(); 3298e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int fromScheme = p.readInt(); 3299e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int toScheme = p.readInt(); 3300e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang boolean selected = (p.readInt() == 1); 3301e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3302e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 3303e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang toScheme, selected); 3304e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang response.add(info); 3305e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 3306e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang return response; 3307767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 33089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3309767a662ecde33c3979bf02b793d392aca0403162Wink Saville private Object 3310e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang responseCdmaBroadcastConfig(Parcel p) { 3311dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numServiceCategories; 3312767a662ecde33c3979bf02b793d392aca0403162Wink Saville int response[]; 33139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3314dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numServiceCategories = p.readInt(); 3315e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3316dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (numServiceCategories == 0) { 33177188f946521d64ea21121939d2a4c279f33fe910Wink Saville // TODO: The logic of providing default values should 33187188f946521d64ea21121939d2a4c279f33fe910Wink Saville // not be done by this transport layer. And needs to 33197188f946521d64ea21121939d2a4c279f33fe910Wink Saville // be done by the vendor ril or application logic. 3320dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numInts; 3321dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 3322dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3323e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 332422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Faking a default record for all possible records. 332522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 3326dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3327dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 332822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // default language and selection status to false for all. 3329dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 3330dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 3331dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 1] = 1; 3332dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 2] = 0; 3333dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3334dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } else { 3335dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numInts; 3336dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 3337dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3338dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3339dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[0] = numServiceCategories; 3340dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 1 ; i < numInts; i++) { 3341dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i] = p.readInt(); 3342dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3343e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3344e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3345e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return response; 3346e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3347e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3348e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3349dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville responseSignalStrength(Parcel p) { 33505284090631e638b916d9a453212e9dc802656a67Wink Saville int numInts = 12; 3351dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int response[]; 3352e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3353dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /* TODO: Add SignalStrength class to match RIL_SignalStrength */ 3354dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3355dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 0 ; i < numInts ; i++) { 3356dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i] = p.readInt(); 3357dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3358e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3359dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return response; 3360dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3361e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 336222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville private ArrayList<CdmaInformationRecords> 336322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville responseCdmaInformationRecord(Parcel p) { 336422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville int numberOfInfoRecs; 336522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville ArrayList<CdmaInformationRecords> response; 336622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 336722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville /** 336822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * Loop through all of the information records unmarshalling them 336922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * and converting them to Java Objects. 337022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville */ 337122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville numberOfInfoRecs = p.readInt(); 337222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 3373dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3374dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 337522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 337622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response.add(InfoRec); 33779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 337822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 337922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return response; 33809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3382e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3383dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville responseCdmaCallWaiting(Parcel p) { 3384dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 3385e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3386dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.number = p.readString(); 33873bd5b0154faa02e197cdc344b45d968aba43d726Anna Markova notification.numberPresentation = notification.presentationFromCLIP(p.readInt()); 3388dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.name = p.readString(); 3389dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.namePresentation = notification.numberPresentation; 3390dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.isPresent = p.readInt(); 3391dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.signalType = p.readInt(); 3392dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.alertPitch = p.readInt(); 3393dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.signal = p.readInt(); 33945284090631e638b916d9a453212e9dc802656a67Wink Saville notification.numberType = p.readInt(); 33955284090631e638b916d9a453212e9dc802656a67Wink Saville notification.numberPlan = p.readInt(); 3396dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3397dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return notification; 3398e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3399e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3400e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3401e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville responseCallRing(Parcel p){ 3402e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville char response[] = new char[4]; 3403e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3404e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[0] = (char) p.readInt(); // isPresent 3405e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[1] = (char) p.readInt(); // signalType 3406e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[2] = (char) p.readInt(); // alertPitch 3407e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[3] = (char) p.readInt(); // signal 3408e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3409e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return response; 3410e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3411e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 341222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville private void 341322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 341422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 341522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 341622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mDisplayInfoRegistrants != null) { 341722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 341822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 341922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 342022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 342122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 342222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mSignalInfoRegistrants != null) { 342322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 342422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mSignalInfoRegistrants.notifyRegistrants( 342522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 342622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 342722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 342822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mNumberInfoRegistrants != null) { 342922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 343022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mNumberInfoRegistrants.notifyRegistrants( 343122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 343222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 343322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 343422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mRedirNumInfoRegistrants != null) { 343522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 343622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 343722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 343822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 343922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 344022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mLineControlInfoRegistrants != null) { 344122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 344222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 344322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 344422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 344522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 344622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mT53ClirInfoRegistrants != null) { 344722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 344822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 344922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 345022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 345122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 345222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 345322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 345422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 345522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 345622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 345722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 345822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 345922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 34609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static String 3461767a662ecde33c3979bf02b793d392aca0403162Wink Saville requestToString(int request) { 34629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 34639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_commands.h \ 34649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 34659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 34669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 34679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(request) { 34689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 34699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 34709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 34719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 34729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 34739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 34749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 34759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 34769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 34779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DIAL: return "DIAL"; 34789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 34799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP: return "HANGUP"; 34809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 34819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 34829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 34839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 34849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_UDUB: return "UDUB"; 34859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 34869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 34875284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 34885284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 34899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OPERATOR: return "OPERATOR"; 34909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 34919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF: return "DTMF"; 34929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 34939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 3494767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 34959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SIM_IO: return "SIM_IO"; 34969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 34979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 34989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 34999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 35009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 35019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 35029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 35039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 35049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 35059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 35069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 35079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ANSWER: return "ANSWER"; 3508767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 35099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 35109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 35119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 35129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 35139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 35149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 35159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 35169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_START: return "DTMF_START"; 35179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 35189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 35199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 35209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 35219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 35229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 3523767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 3524767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 35259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 35269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 35279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 35289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 35299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 35309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 35319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 35329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 35339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 35349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 35359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 35369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 35379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 35389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 35399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 35409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 35419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 35429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 35439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 35445284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 3545767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 3546767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 3547767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 3548767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 3549767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 3550767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 3551767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 3552767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 3553767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 3554767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 3555e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 3556e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 3557767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 3558767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 3559e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 356027d074e0efbdabd40f00eca41169ea225c05fcbeNaveen Kalla case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 3561767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 3562767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 3563767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 3564767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 3565767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 3566c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 3567c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 3568e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 35699c9151eccd27e824fdb7c266bff78c10038e87fejsh case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 3570e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 35715284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 3572463f22114587344c96460179069a08d7381fbfd6Jake Hamby case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 3573094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 3574094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 3575fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 35769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: return "<unknown request>"; 35779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static String 35819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project responseToString(int request) 35829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 35839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 35849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_unsol_commands.h \ 35859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 35869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 35879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 35889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(request) { 35899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 35909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 35915284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 35929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 35939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 35949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 35959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 35969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 35979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 35989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 3599767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 36009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 36019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 36029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 36039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 36049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 36059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 36069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 36079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 3608e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 3609e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 3610e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 3611e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 3612dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 3613e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 3614e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 3615e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 3616e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 3617dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 3618bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONG"; 36191ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 362066958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 36215284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 36225284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 36231dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 3624fc2cbe9b46ab17a401dc50f8e0dbb677ed012299Naveen Kalla case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 36259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: return "<unknown reponse>"; 36269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void riljLog(String msg) { 36309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.d(LOG_TAG, msg); 36319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void riljLogv(String msg) { 36349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOG_TAG, msg); 36359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLog(int response) { 36389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response)); 36399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogMore(int response, String more) { 36429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response) + " " + more); 36439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogRet(int response, Object ret) { 36469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 36479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogvRet(int response, Object ret) { 36509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 36519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36532a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 3654767a662ecde33c3979bf02b793d392aca0403162Wink Saville // ***** Methods for CDMA support 3655767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3656767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDeviceIdentity(Message response) { 3657767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 3658767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3659767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3660767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3661767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3662767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3663767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3664767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3665767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCDMASubscription(Message response) { 3666767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 3667767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3668767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3669767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3670767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3671767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3672767a662ecde33c3979bf02b793d392aca0403162Wink Saville 36735e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville @Override 36745e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 36755e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 3676767a662ecde33c3979bf02b793d392aca0403162Wink Saville mPhoneType = phoneType; 3677767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3678767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3679767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3680767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3681767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3682767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void queryCdmaRoamingPreference(Message response) { 3683767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3684767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 3685767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3686767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3687767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3688767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3689767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3690767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3691767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3692767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3693767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3694767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 3695767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3696767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 3697767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3698767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3699767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(cdmaRoamingType); 3700767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3701767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3702767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + cdmaRoamingType); 3703767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3704767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3705767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3706767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3707767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3708767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3709767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 37105284090631e638b916d9a453212e9dc802656a67Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 3711767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 37125284090631e638b916d9a453212e9dc802656a67Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 3713767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3714767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3715767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(cdmaSubscription); 3716767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3717767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3718767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + cdmaSubscription); 3719767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3720767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3721767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3722767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3723767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3724767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3725767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3726d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville @Override 3727d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville public void getCdmaSubscriptionSource(Message response) { 37285284090631e638b916d9a453212e9dc802656a67Wink Saville RILRequest rr = RILRequest.obtain( 37295284090631e638b916d9a453212e9dc802656a67Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 37305284090631e638b916d9a453212e9dc802656a67Wink Saville 3731d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37325284090631e638b916d9a453212e9dc802656a67Wink Saville 37335284090631e638b916d9a453212e9dc802656a67Wink Saville send(rr); 37345284090631e638b916d9a453212e9dc802656a67Wink Saville } 37355284090631e638b916d9a453212e9dc802656a67Wink Saville 37365284090631e638b916d9a453212e9dc802656a67Wink Saville /** 37375284090631e638b916d9a453212e9dc802656a67Wink Saville * {@inheritDoc} 37385284090631e638b916d9a453212e9dc802656a67Wink Saville */ 3739e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void queryTTYMode(Message response) { 3740767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3741767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 3742767a662ecde33c3979bf02b793d392aca0403162Wink Saville 37432e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 37442e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla 3745767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3746767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3747767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3748767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3749767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3750767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3751e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setTTYMode(int ttyMode, Message response) { 3752767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3753767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 3754767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3755767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3756e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville rr.mp.writeInt(ttyMode); 3757767a662ecde33c3979bf02b793d392aca0403162Wink Saville 37582e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 37592e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla + " : " + ttyMode); 37602e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla 3761767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3762767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3763767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3764767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3765767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3766767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3767767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3768767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 3769767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 3770767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3771767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(FeatureCode); 3772767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3773767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3774767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + FeatureCode); 3775767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3776767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3777767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3778767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3779767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getCdmaBroadcastConfig(Message response) { 3780767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 3781767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3782767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3783767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3784767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3785f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig 3786767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { 3787767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 3788767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3789e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville for(int i = 0; i < configValuesArray.length; i++) { 3790767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(configValuesArray[i]); 3791767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3792767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3793e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3794e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 3795767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3796767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3797767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3798e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setCdmaBroadcastActivation(boolean activate, Message response) { 3799767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 3800767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3801767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3802e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(activate ? 0 :1); 3803767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3804e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3805e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 3806767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3807767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3808e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3809e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 3810e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * {@inheritDoc} 3811e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 3812e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void exitEmergencyCallbackMode(Message response) { 3813dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 3814e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3815e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3816e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3817e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville send(rr); 3818e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 38195284090631e638b916d9a453212e9dc802656a67Wink Saville 3820463f22114587344c96460179069a08d7381fbfd6Jake Hamby public void requestIsimAuthentication(String nonce, Message response) { 3821463f22114587344c96460179069a08d7381fbfd6Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 3822463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3823463f22114587344c96460179069a08d7381fbfd6Jake Hamby rr.mp.writeString(nonce); 3824463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3825463f22114587344c96460179069a08d7381fbfd6Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3826463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3827463f22114587344c96460179069a08d7381fbfd6Jake Hamby send(rr); 3828463f22114587344c96460179069a08d7381fbfd6Jake Hamby } 38297c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville 38307c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville /* (non-Javadoc) 38317c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 38327c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville */ 38337c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville @Override 38347c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville public void testingEmergencyCall() { 38357c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 38367c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville mTestingEmergencyCall.set(true); 38377c20c4607c4402589ce4800a0c49127876dbc6bdWink Saville } 383830ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville 383930ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 384030ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println("RIL:"); 384130ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mSocket=" + mSocket); 384230ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mSenderThread=" + mSenderThread); 384330ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mSender=" + mSender); 384430ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mReceiverThread=" + mReceiverThread); 384530ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mReceiver=" + mReceiver); 384630ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mWakeLock=" + mWakeLock); 384730ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 384830ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville synchronized (mRequestsList) { 384930ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mRequestMessagesPending=" + mRequestMessagesPending); 385030ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting); 385130ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville int count = mRequestsList.size(); 385230ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mRequestList count=" + count); 385330ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville for (int i = 0; i < count; i++) { 385430ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville RILRequest rr = mRequestsList.get(i); 385530ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 385630ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville } 385730ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville } 385830ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 385930ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 386030ccade7f9432b8212807b9ddc8cc69a4a8fc854Wink Saville } 38619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3862