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; 55767a662ecde33c3979bf02b793d392aca0403162Wink Saville 56767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.ByteArrayInputStream; 57767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.DataInputStream; 58767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport java.io.IOException; 592a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganeshimport java.io.InputStream; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Collections; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 66767a662ecde33c3979bf02b793d392aca0403162Wink Savilleclass RILRequest { 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String LOG_TAG = "RILJ"; 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Class Variables 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static int sNextSerial = 0; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static Object sSerialMonitor = new Object(); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static Object sPoolSync = new Object(); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static RILRequest sPool = null; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static int sPoolSize = 0; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int MAX_POOL_SIZE = 4; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Instance Variables 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mSerial; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mRequest; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message mResult; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel mp; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest mNext; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieves a new RILRequest instance from the pool. 86767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param request RIL_REQUEST_* 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param result sent when operation completes 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a RILRequest instance from the pool. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static RILRequest obtain(int request, Message result) { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = null; 93767a662ecde33c3979bf02b793d392aca0403162Wink Saville 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sPoolSync) { 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (sPool != null) { 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = sPool; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPool = rr.mNext; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mNext = null; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPoolSize--; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 102767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr == null) { 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = new RILRequest(); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sSerialMonitor) { 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mSerial = sNextSerial++; 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mRequest = request; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mResult = result; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp = Parcel.obtain(); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != null && result.getTarget() == null) { 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new NullPointerException("Message target must not be null"); 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // first elements in any RIL Parcel 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(request); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(rr.mSerial); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return rr; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a RILRequest instance to the pool. 127767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note: This should only be called once per use. 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void release() { 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (sPoolSync) { 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (sPoolSize < MAX_POOL_SIZE) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mNext = sPool; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPool = this; 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sPoolSize++; 1363ffccab78666d8960c10a00239de6bb40f4fb1b6Johannes Carlsson mResult = null; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 141767a662ecde33c3979bf02b793d392aca0403162Wink Saville private RILRequest() { 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static void 145767a662ecde33c3979bf02b793d392aca0403162Wink Saville resetSerial() { 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(sSerialMonitor) { 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sNextSerial = 0; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String 152767a662ecde33c3979bf02b793d392aca0403162Wink Saville serialString() { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Cheesy way to do %04d 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuilder sb = new StringBuilder(8); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String sn; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sn = Integer.toString(mSerial); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //sb.append("J["); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append('['); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append('0'); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(sn); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(']'); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sb.toString(); 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void 17103228fa8f950dfee3f679d280f98d040dea397dcjohnwang onError(int error, Object ret) { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CommandException ex; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ex = CommandException.fromRilErrno(error); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RIL.RILJ_LOGD) Log.d(LOG_TAG, serialString() + "< " 177767a662ecde33c3979bf02b793d392aca0403162Wink Saville + RIL.requestToString(mRequest) 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " error: " + ex); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mResult != null) { 18103228fa8f950dfee3f679d280f98d040dea397dcjohnwang AsyncResult.forMessage(mResult, ret, ex); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResult.sendToTarget(); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mp != null) { 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp.recycle(); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mp = null; 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * RIL implementation of the CommandsInterface. 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * FIXME public only for testing 196767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 199767a662ecde33c3979bf02b793d392aca0403162Wink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String LOG_TAG = "RILJ"; 2011d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville static final boolean RILJ_LOGD = true; 2021d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville static final boolean RILJ_LOGV = false; // STOP SHIP if true 2030e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville 2040e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville /** 2050e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville * Wake lock timeout should be longer than the longest timeout in 2060e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville * the vendor ril. 2070e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville */ 208b260fe75c18e5cb4823654e031ea5a66e0eecdbbWink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Instance Variables 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket mSocket; 213767a662ecde33c3979bf02b793d392aca0403162Wink Saville HandlerThread mSenderThread; 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILSender mSender; 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread mReceiverThread; 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILReceiver mReceiver; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project WakeLock mWakeLock; 2180e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville int mWakeLockTimeout; 219696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // The number of requests pending to be sent out, it increases before calling 220696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // EVENT_SEND and decreases while handling EVENT_SEND. It gets cleared while 221696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT occurs. 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mRequestMessagesPending; 223696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // The number of requests sent out but waiting for response. It increases while 224696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // sending request and decreases while handling response. It should match 225696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestList.size() unless there are requests no replied while 226696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT occurs. 227696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang int mRequestMessagesWaiting; 228767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //I'd rather this be LinkedList or something 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<RILRequest> mRequestsList = new ArrayList<RILRequest>(); 231767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object mLastNITZTimeInfo; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Events 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int EVENT_SEND = 1; 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Constants 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // match with constant in ril.cpp 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RESPONSE_SOLICITED = 0; 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int RESPONSE_UNSOLICITED = 1; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final String SOCKET_NAME_RIL = "rild"; 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 250e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville // The number of the required config values for broadcast SMS stored in the C struct 251e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville // RIL_CDMA_BroadcastServiceInfo 252e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 253e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 254e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 257e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville @Override 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void onReceive(Context context, Intent intent) { 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(true); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(false); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.w(LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 268767a662ecde33c3979bf02b793d392aca0403162Wink Saville 269767a662ecde33c3979bf02b793d392aca0403162Wink Saville class RILSender extends Handler implements Runnable { 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RILSender(Looper looper) { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(looper); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 273767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Only allocated once 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] dataLength = new byte[4]; 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Runnable implementation 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 279767a662ecde33c3979bf02b793d392aca0403162Wink Saville run() { 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //setup if needed 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 284145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby //***** Handler implementation 285145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby @Override public void 286767a662ecde33c3979bf02b793d392aca0403162Wink Saville handleMessage(Message msg) { 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = (RILRequest)(msg.obj); 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest req = null; 289767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (msg.what) { 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case EVENT_SEND: 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mRequestMessagePending++ already happened for every 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * EVENT_SEND, thus we must make sure 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mRequestMessagePending-- happens once and only once 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean alreadySubtracted = false; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket s; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = mSocket; 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s == null) { 30403228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(RADIO_NOT_AVAILABLE, null); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 306696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesPending > 0) 307696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending--; 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project alreadySubtracted = true; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mRequestsList) { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestsList.add(rr); 314696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting++; 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 317696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesPending > 0) 318696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending--; 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project alreadySubtracted = true; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] data; 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data = rr.mp.marshall(); 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.recycle(); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp = null; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (data.length > RIL_MAX_COMMAND_BYTES) { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 329767a662ecde33c3979bf02b793d392aca0403162Wink Saville "Parcel larger than max bytes allowed! " 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + data.length); 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel length in big endian 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[0] = dataLength[1] = 0; 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[2] = (byte)((data.length >> 8) & 0xff); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dataLength[3] = (byte)((data.length) & 0xff); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(LOG_TAG, "writing packet: " + data.length + " bytes"); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 340767a662ecde33c3979bf02b793d392aca0403162Wink Saville s.getOutputStream().write(dataLength); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.getOutputStream().write(data); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex) { 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "IOException", ex); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project req = findAndRemoveRequestFromList(rr.mSerial); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // make sure this request has not already been handled, 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // eg, if RILReceiver cleared the list. 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (req != null || !alreadySubtracted) { 34803228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(RADIO_NOT_AVAILABLE, null); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RuntimeException exc) { 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Uncaught exception ", exc); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project req = findAndRemoveRequestFromList(rr.mSerial); 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // make sure this request has not already been handled, 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // eg, if RILReceiver cleared the list. 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (req != null || !alreadySubtracted) { 35703228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(GENERIC_FAILURE, null); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36060bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain } finally { 36160bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // Note: We are "Done" only if there are no outstanding 36260bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // requests or replies. Thus this code path will only release 36360bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain // the wake lock on errors. 36460bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain releaseWakeLockIfDone(); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 367696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (!alreadySubtracted && mRequestMessagesPending > 0) { 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending--; 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case EVENT_WAKE_LOCK_TIMEOUT: 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Haven't heard back from the last request. Assume we're 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // not getting a response and release the wake lock. 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mWakeLock.isHeld()) { 37800d520b66caeef722281b76d30c0e1294070713dJohn Wang // The timer of WAKE_LOCK_TIMEOUT is reset with each 37900d520b66caeef722281b76d30c0e1294070713dJohn Wang // new send request. So when WAKE_LOCK_TIMEOUT occurs 38000d520b66caeef722281b76d30c0e1294070713dJohn Wang // all requests in mRequestList already waited at 38100d520b66caeef722281b76d30c0e1294070713dJohn Wang // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 382696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // Reset mRequestMessagesWaiting to enable 383696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // releaseWakeLockIfDone(). 38400d520b66caeef722281b76d30c0e1294070713dJohn Wang // 385696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // Note: Keep mRequestList so that delayed response 386696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // can still be handled when response finally comes. 387696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesWaiting != 0) { 388696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, "NOTE: mReqWaiting is NOT 0 but" 389696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + mRequestMessagesWaiting + " at TIMEOUT, reset!" 390696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + " There still msg waitng for response"); 391696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 392696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 393696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 394696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (RILJ_LOGD) { 395696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang synchronized (mRequestsList) { 396696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang int count = mRequestsList.size(); 397696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 398696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang " mRequestList=" + count); 399696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 400696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang for (int i = 0; i < count; i++) { 401696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang rr = mRequestsList.get(i); 402696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " 403696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + requestToString(rr.mRequest)); 404696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 405696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 406696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 407696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang } 408696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestMessagesPending shows how many 409696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // requests are waiting to be sent (and before 410696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // to be added in request list) since star the 411696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // WAKE_LOCK_TIMEOUT timer. Since WAKE_LOCK_TIMEOUT 412696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // is the expected time to get response, all requests 413696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // should already sent out (i.e. 414696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang // mRequestMessagesPending is 0 )while TIMEOUT occurs. 41500d520b66caeef722281b76d30c0e1294070713dJohn Wang if (mRequestMessagesPending != 0) { 416696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang Log.e(LOG_TAG, "ERROR: mReqPending is NOT 0 but" 417696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang + mRequestMessagesPending + " at TIMEOUT, reset!"); 418696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesPending = 0; 419696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.release(); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reads in a single RIL message off the wire. A RIL message consists 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of a 4-byte little-endian length and a subsequent series of bytes. 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The final message (length header omitted) is read into 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <code>buffer</code> and the length of the final message (less header) 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is returned. A return value of -1 indicates end-of-stream. 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param is non-null; Stream to read from 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param buffer Buffer to fill in. Must be as large as maximum 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * message size, or an ArrayOutOfBounds exception will be thrown. 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Length of message less header, or -1 on end of stream. 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws IOException 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static int readRilMessage(InputStream is, byte[] buffer) 443767a662ecde33c3979bf02b793d392aca0403162Wink Saville throws IOException { 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int countRead; 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int offset; 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int remaining; 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int messageLength; 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // First, read in the length of the message 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset = 0; 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining = 4; 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project countRead = is.read(buffer, offset, remaining); 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (countRead < 0 ) { 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Hit EOS reading message length"); 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset += countRead; 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining -= countRead; 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while (remaining > 0); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project messageLength = ((buffer[0] & 0xff) << 24) 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | ((buffer[1] & 0xff) << 16) 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | ((buffer[2] & 0xff) << 8) 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | (buffer[3] & 0xff); 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Then, re-use the buffer and read in the message itself 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset = 0; 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining = messageLength; 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project countRead = is.read(buffer, offset, remaining); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (countRead < 0 ) { 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " remaining=" + remaining); 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset += countRead; 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project remaining -= countRead; 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while (remaining > 0); 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return messageLength; 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 488767a662ecde33c3979bf02b793d392aca0403162Wink Saville class RILReceiver implements Runnable { 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte[] buffer; 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 491767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILReceiver() { 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project buffer = new byte[RIL_MAX_COMMAND_BYTES]; 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 496767a662ecde33c3979bf02b793d392aca0403162Wink Saville run() { 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int retryCount = 0; 498767a662ecde33c3979bf02b793d392aca0403162Wink Saville 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try {for (;;) { 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocket s = null; 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocketAddress l; 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = new LocalSocket(); 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project l = new LocalSocketAddress(SOCKET_NAME_RIL, 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocalSocketAddress.Namespace.RESERVED); 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.connect(l); 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex){ 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (s != null) { 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s.close(); 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex2) { 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //ignore failure to close after failure to connect 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 516767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // don't print an error message after the the first time 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // or after the 8th time 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (retryCount == 8) { 521767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.e (LOG_TAG, 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Couldn't find '" + SOCKET_NAME_RIL 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket after " + retryCount 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " times, continuing to retry silently"); 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (retryCount > 0 && retryCount < 8) { 526767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.i (LOG_TAG, 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Couldn't find '" + SOCKET_NAME_RIL 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket; retrying after timeout"); 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 532767a662ecde33c3979bf02b793d392aca0403162Wink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException er) { 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project retryCount++; 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project continue; 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project retryCount = 0; 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSocket = s; 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length = 0; 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputStream is = mSocket.getInputStream(); 548767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (;;) { 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel p; 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = readRilMessage(is, buffer); 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length < 0) { 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // End-of-stream reached 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p = Parcel.obtain(); 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.unmarshall(buffer, 0, length); 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.setDataPosition(0); 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.v(LOG_TAG, "Read packet: " + length + " bytes"); 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processResponse(p); 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p.recycle(); 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (java.io.IOException ex) { 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ex); 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (Throwable tr) { 5722a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh Log.e(LOG_TAG, "Uncaught exception read length=" + length + 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Exception:" + tr.toString()); 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "' socket"); 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setRadioState (RadioState.RADIO_UNAVAILABLE); 580767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 582767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSocket.close(); 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException ex) { 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSocket = null; 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest.resetSerial(); 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Clear request list on close 59000d520b66caeef722281b76d30c0e1294070713dJohn Wang clearRequestsList(RADIO_NOT_AVAILABLE, false); 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }} catch (Throwable tr) { 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.e(LOG_TAG,"Uncaught exception", tr); 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5941dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 5951dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville /* We're disconnected so we don't know the ril version */ 5961dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville notifyRegistrantsRilConnectionChanged(-1); 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 602767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Constructors 603767a662ecde33c3979bf02b793d392aca0403162Wink Saville 60405d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context); 6065e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville if (RILJ_LOGD) { 60705d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 6085e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 6095e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville } 610767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCdmaSubscription = cdmaSubscription; 61105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = preferredNetworkType; 6125e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville mPhoneType = RILConstants.NO_PHONE; 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 615767a662ecde33c3979bf02b793d392aca0403162Wink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.setReferenceCounted(false); 6170e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 6180e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending = 0; 620696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSenderThread = new HandlerThread("RILSender"); 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSenderThread.start(); 6242a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Looper looper = mSenderThread.getLooper(); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender = new RILSender(looper); 6272a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 6289b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 6299b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt Context.CONNECTIVITY_SERVICE); 6309b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 6310dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville riljLog("Not starting RILReceiver: wifi-only"); 6320dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville } else { 6330dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville riljLog("Starting RILReceiver"); 6340dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiver = new RILReceiver(); 6350dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 6360dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville mReceiverThread.start(); 6370dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville 6380dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville IntentFilter filter = new IntentFilter(); 6390dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 6400dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 6410dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville context.registerReceiver(mIntentReceiver, filter); 6420dc8618dc70a6aa23ea030eeda1ea9934b4a04c6Wink Saville } 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** CommandsInterface implementation 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 647767a662ecde33c3979bf02b793d392aca0403162Wink Saville @Override public void 648767a662ecde33c3979bf02b793d392aca0403162Wink Saville setOnNITZTime(Handler h, int what, Object obj) { 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setOnNITZTime(h, what, obj); 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Send the last NITZ time if we have it 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mLastNITZTimeInfo != null) { 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNITZTimeRegistrant 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrant( 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, mLastNITZTimeInfo, null)); 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mLastNITZTimeInfo = null; 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 660767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 661cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh getIccCardStatus(Message result) { 662767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 663767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6715284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 672767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPin(String pin, Message result) { 6735284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPinForApp(pin, null, result); 6745284090631e638b916d9a453212e9dc802656a67Wink Saville } 6755284090631e638b916d9a453212e9dc802656a67Wink Saville 6765284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 6775284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPinForApp(String pin, String aid, 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_ENTER_SIM_PIN, 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 6845284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(2); 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin); 6865284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6915284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 692767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPuk(String puk, String newPin, Message result) { 6935284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPukForApp(puk, newPin, null, result); 6945284090631e638b916d9a453212e9dc802656a67Wink Saville } 6955284090631e638b916d9a453212e9dc802656a67Wink Saville 6965284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 6975284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 698767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 699767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7045284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(puk); 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin); 7075284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7125284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 713767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyIccPin2(String pin, Message result) { 7145284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPin2ForApp(pin, null, result); 7155284090631e638b916d9a453212e9dc802656a67Wink Saville } 7165284090631e638b916d9a453212e9dc802656a67Wink Saville 7175284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7185284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 719767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 720767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7255284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(2); 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin); 7275284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7325284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7335284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 7345284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 7355284090631e638b916d9a453212e9dc802656a67Wink Saville } 7365284090631e638b916d9a453212e9dc802656a67Wink Saville 7375284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7385284090631e638b916d9a453212e9dc802656a67Wink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 739767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 740767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7455284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(puk); 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin2); 7485284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7535284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 754767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeIccPin(String oldPin, String newPin, Message result) { 7555284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPinForApp(oldPin, newPin, null, result); 7565284090631e638b916d9a453212e9dc802656a67Wink Saville } 7575284090631e638b916d9a453212e9dc802656a67Wink Saville 7585284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7595284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 760767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 761767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7665284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPin); 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin); 7695284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7745284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 775767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 7765284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 7775284090631e638b916d9a453212e9dc802656a67Wink Saville } 7785284090631e638b916d9a453212e9dc802656a67Wink Saville 7795284090631e638b916d9a453212e9dc802656a67Wink Saville @Override public void 7805284090631e638b916d9a453212e9dc802656a67Wink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 781767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 782767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7875284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeInt(3); 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPin2); 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPin2); 7905284090631e638b916d9a453212e9dc802656a67Wink Saville rr.mp.writeString(aid); 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 796767a662ecde33c3979bf02b793d392aca0403162Wink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(3); 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(oldPwd); 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(newPwd); 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 810767a662ecde33c3979bf02b793d392aca0403162Wink Saville supplyNetworkDepersonalization(String netpin, Message result) { 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(netpin); 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 820767a662ecde33c3979bf02b793d392aca0403162Wink Saville 821767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 822767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCurrentCalls (Message result) { 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 830145ff609de3206b585819ef974fab20cdc2d9f5eJake Hamby @Deprecated public void 831767a662ecde33c3979bf02b793d392aca0403162Wink Saville getPDPContextList(Message result) { 832767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataCallList(result); 833767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 834767a662ecde33c3979bf02b793d392aca0403162Wink Saville 835767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 836767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDataCallList(Message result) { 837767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 844767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 845767a662ecde33c3979bf02b793d392aca0403162Wink Saville dial (String address, int clirMode, Message result) { 84624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dial(address, clirMode, null, result); 84724440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } 84824440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla 84924440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla public void 85024440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(address); 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(clirMode); 8550fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla rr.mp.writeInt(0); // UUS information is absent 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 85724440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla if (uusInfo == null) { 85824440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(0); // UUS information is absent 85924440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } else { 86024440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(1); // UUS information is present 86124440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(uusInfo.getType()); 86224440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeInt(uusInfo.getDcs()); 86324440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla rr.mp.writeByteArray(uusInfo.getUserData()); 86424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } 86524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 871767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 872767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMSI(Message result) { 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 87556b4965f5b429fdd01831c2652f37047c04fcf3eWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 881767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMEI(Message result) { 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 890767a662ecde33c3979bf02b793d392aca0403162Wink Saville getIMEISV(Message result) { 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 900767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupConnection (int gsmIndex, Message result) { 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 905767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 906767a662ecde33c3979bf02b793d392aca0403162Wink Saville gsmIndex); 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(gsmIndex); 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 914767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 915767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupWaitingOrBackground (Message result) { 916767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 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 public void 925767a662ecde33c3979bf02b793d392aca0403162Wink Saville hangupForegroundResumeBackground (Message result) { 926767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain( 928767a662ecde33c3979bf02b793d392aca0403162Wink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result); 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 936767a662ecde33c3979bf02b793d392aca0403162Wink Saville switchWaitingOrHoldingAndActive (Message result) { 937767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain( 939767a662ecde33c3979bf02b793d392aca0403162Wink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result); 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 947767a662ecde33c3979bf02b793d392aca0403162Wink Saville conference (Message result) { 948767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 957767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 958767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 959767a662ecde33c3979bf02b793d392aca0403162Wink Saville result); 960767a662ecde33c3979bf02b793d392aca0403162Wink Saville 961767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 962767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(enable ? 1:0); 963767a662ecde33c3979bf02b793d392aca0403162Wink Saville 964767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 965767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 966767a662ecde33c3979bf02b793d392aca0403162Wink Saville 967767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getPreferredVoicePrivacy(Message result) { 968767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 969767a662ecde33c3979bf02b793d392aca0403162Wink Saville result); 970767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 971767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 972767a662ecde33c3979bf02b793d392aca0403162Wink Saville 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 974767a662ecde33c3979bf02b793d392aca0403162Wink Saville separateConnection (int gsmIndex, Message result) { 975767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + gsmIndex); 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(gsmIndex); 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 988767a662ecde33c3979bf02b793d392aca0403162Wink Saville acceptCall (Message result) { 989767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 997767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 998767a662ecde33c3979bf02b793d392aca0403162Wink Saville rejectCall (Message result) { 999767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_UDUB, result); 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1008767a662ecde33c3979bf02b793d392aca0403162Wink Saville explicitCallTransfer (Message result) { 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1018767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastCallFailCause (Message result) { 1019767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1027767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 1028767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @deprecated 1029767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 1030767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1031767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastPdpFailCause (Message result) { 1032767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastDataCallFailCause (result); 1033767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1034767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1035767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 1036767a662ecde33c3979bf02b793d392aca0403162Wink Saville * The preferred new alternative to getLastPdpFailCause 1037767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 1038767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1039767a662ecde33c3979bf02b793d392aca0403162Wink Saville getLastDataCallFailCause (Message result) { 1040767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1041767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1049767a662ecde33c3979bf02b793d392aca0403162Wink Saville setMute (boolean enableMute, Message response) { 1050767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + enableMute); 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enableMute ? 1 : 0); 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1063767a662ecde33c3979bf02b793d392aca0403162Wink Saville getMute (Message response) { 1064767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1073767a662ecde33c3979bf02b793d392aca0403162Wink Saville getSignalStrength (Message result) { 1074767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1082767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 10835284090631e638b916d9a453212e9dc802656a67Wink Saville getVoiceRegistrationState (Message result) { 1084767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10855284090631e638b916d9a453212e9dc802656a67Wink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1092767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 10935284090631e638b916d9a453212e9dc802656a67Wink Saville getDataRegistrationState (Message result) { 1094767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 10955284090631e638b916d9a453212e9dc802656a67Wink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1102767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1103767a662ecde33c3979bf02b793d392aca0403162Wink Saville getOperator(Message result) { 1104767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1112767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1113767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendDtmf(char c, Message result) { 1114767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF, result); 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1118767a662ecde33c3979bf02b793d392aca0403162Wink Saville 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Character.toString(c)); 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project startDtmf(char c, Message result) { 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Character.toString(c)); 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project stopDtmf(Message result) { 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1146e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void 1147dafa22a3ef9328c72319aeec605f6a6d20e46080jsh sendBurstDtmf(String dtmfString, int on, int off, Message result) { 1148e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 1149e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1150dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeInt(3); 1151e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville rr.mp.writeString(dtmfString); 1152dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeString(Integer.toString(on)); 1153dafa22a3ef9328c72319aeec605f6a6d20e46080jsh rr.mp.writeString(Integer.toString(off)); 1154e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 1155dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1156dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville + " : " + dtmfString); 1157dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 1158e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville send(rr); 1159e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1162767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendSMS (String smscPDU, String pdu, Message result) { 1163767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(smscPDU); 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pdu); 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1171767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1172767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1173767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1174767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1175767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1176767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendCdmaSms(byte[] pdu, Message result) { 1177767a662ecde33c3979bf02b793d392aca0403162Wink Saville int address_nbr_of_digits; 1178767a662ecde33c3979bf02b793d392aca0403162Wink Saville int subaddr_nbr_of_digits; 1179767a662ecde33c3979bf02b793d392aca0403162Wink Saville int bearerDataLength; 1180767a662ecde33c3979bf02b793d392aca0403162Wink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 1181767a662ecde33c3979bf02b793d392aca0403162Wink Saville DataInputStream dis = new DataInputStream(bais); 1182767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1183767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1184767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 1185767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1186767a662ecde33c3979bf02b793d392aca0403162Wink Saville try { 1187767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.readInt()); //teleServiceId 1188767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) dis.readInt()); //servicePresent 1189767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.readInt()); //serviceCategory 1190767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_digit_mode 1191767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_mode 1192767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_ton 1193767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //address_nbr_plan 1194767a662ecde33c3979bf02b793d392aca0403162Wink Saville address_nbr_of_digits = (byte) dis.read(); 1195767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) address_nbr_of_digits); 1196767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < address_nbr_of_digits; i++){ 1197767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); // address_orig_bytes[i] 1198767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1199767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(dis.read()); //subaddressType 1200767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) dis.read()); //subaddr_odd 1201767a662ecde33c3979bf02b793d392aca0403162Wink Saville subaddr_nbr_of_digits = (byte) dis.read(); 1202767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte((byte) subaddr_nbr_of_digits); 1203767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 1204767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 1205767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1206767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1207767a662ecde33c3979bf02b793d392aca0403162Wink Saville bearerDataLength = dis.read(); 1208767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(bearerDataLength); 1209767a662ecde33c3979bf02b793d392aca0403162Wink Saville for(int i=0; i < bearerDataLength; i++){ 1210767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeByte(dis.readByte()); //bearerData[i] 1211767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1212767a662ecde33c3979bf02b793d392aca0403162Wink Saville }catch (IOException ex){ 1213767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 1214767a662ecde33c3979bf02b793d392aca0403162Wink Saville + ex); 1215767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1216767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1217767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1218767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void deleteSmsOnSim(int index, Message response) { 12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1225767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1226767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 1227767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(index); 1228767a662ecde33c3979bf02b793d392aca0403162Wink Saville 122943a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1230767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1231767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 1232767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + index); 1233767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1234767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1235767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1236767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1237767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1238767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void deleteSmsOnRuim(int index, Message response) { 1239767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 1240767a662ecde33c3979bf02b793d392aca0403162Wink Saville response); 1241767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(index); 12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 124543a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1246767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + requestToString(rr.mRequest) 12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + index); 12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status = translateStatus(status); 1256767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1259767a662ecde33c3979bf02b793d392aca0403162Wink Saville 12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(status); 12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pdu); 12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(smsc); 1263767a662ecde33c3979bf02b793d392aca0403162Wink Saville 126443a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1265767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1266767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 1267767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + status); 1268767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1269767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1270767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1271767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1272767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1273767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 1274767a662ecde33c3979bf02b793d392aca0403162Wink Saville status = translateStatus(status); 1275767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1276767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 1277767a662ecde33c3979bf02b793d392aca0403162Wink Saville response); 1278767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1279767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(status); 1280767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(pdu); 1281767a662ecde33c3979bf02b793d392aca0403162Wink Saville 128243a17654cf4bfe7f1ec22bd8b7b32daccdf27c09Joe Onorato if (false) { 1283767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1284767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest) 12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + status); 12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Translates EF_SMS status bits to a status value compatible with 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SMS AT commands. See TS 27.005 3.1. 12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int translateStatus(int status) { 12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(status & 0x7) { 1297767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_READ: 12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 1299767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1301767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_SENT: 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 3; 1303767a662ecde33c3979bf02b793d392aca0403162Wink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 2; 13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1306767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Default to READ. 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1311767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1312767a662ecde33c3979bf02b793d392aca0403162Wink Saville setupDataCall(String radioTechnology, String profile, String apn, 13134eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti String user, String password, String authType, String protocol, 13144eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti Message result) { 1315767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1316767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 1317767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1318b60c9ba33582e798e40b102ba3180d5cd1102ca3Lorenzo Colitti rr.mp.writeInt(7); 1319767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1320767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(radioTechnology); 1321767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(profile); 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(apn); 13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(user); 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 1325106d27140bdd1acf388310807d662f08cb6292c6johnwang rr.mp.writeString(authType); 13264eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti rr.mp.writeString(protocol); 1327106d27140bdd1acf388310807d662f08cb6292c6johnwang 1328106d27140bdd1acf388310807d662f08cb6292c6johnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1329106d27140bdd1acf388310807d662f08cb6292c6johnwang + requestToString(rr.mRequest) + " " + radioTechnology + " " 1330106d27140bdd1acf388310807d662f08cb6292c6johnwang + profile + " " + apn + " " + user + " " 13314eb40450720f6cc1ed07fa181b22677461fa96bdLorenzo Colitti + password + " " + authType + " " + protocol); 1332767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 13376ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo deactivateDataCall(int cid, int reason, Message result) { 1338767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1339767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13416ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo rr.mp.writeInt(2); 13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(cid)); 13436ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo rr.mp.writeString(Integer.toString(reason)); 13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1345767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 13466ef74b1b073f04f55ef43095a336bd10d599dedfKazuhiro Ondo requestToString(rr.mRequest) + " " + cid + " " + reason); 1347767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1352767a662ecde33c3979bf02b793d392aca0403162Wink Saville setRadioPower(boolean on, Message result) { 1353f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(on ? 1 : 0); 13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1358f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville if (RILJ_LOGD) { 1359f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1360f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville + (on ? " on" : " off")); 1361f90c26090402a517aa68cade7f452bc1ad85e654Wink Saville } 1362767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1367767a662ecde33c3979bf02b793d392aca0403162Wink Saville setSuppServiceNotifications(boolean enable, Message result) { 1368767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 1373767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1375767a662ecde33c3979bf02b793d392aca0403162Wink Saville + requestToString(rr.mRequest)); 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1380767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1381867641ece36e2fd17faaea79cf19506ab17177c6jsh acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 1382767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1385867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(2); 13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(success ? 1 : 0); 1387867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(cause); 13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1390867641ece36e2fd17faaea79cf19506ab17177c6jsh + " " + success + " " + cause); 1391767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1394767a662ecde33c3979bf02b793d392aca0403162Wink Saville 13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1396867641ece36e2fd17faaea79cf19506ab17177c6jsh acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 1397767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1398767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 1399767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1400767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 1401767a662ecde33c3979bf02b793d392aca0403162Wink Saville // cause code according to X.S004-550E 1402867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(cause); 1403767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1404867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1405867641ece36e2fd17faaea79cf19506ab17177c6jsh + " " + success + " " + cause); 1406767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1407767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 1408767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1409767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1410094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby public void 1411094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 1412094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILRequest rr 1413094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 1414094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1415094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeInt(2); 1416094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(success ? "1" : "0"); 1417094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(ackPdu); 1418094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1419094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1420094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby + ' ' + success + " [" + ackPdu + ']'); 1421094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1422094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby send(rr); 1423094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby } 1424767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1425767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1426767a662ecde33c3979bf02b793d392aca0403162Wink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 1427767a662ecde33c3979bf02b793d392aca0403162Wink Saville String data, String pin2, Message result) { 1428767a662ecde33c3979bf02b793d392aca0403162Wink Saville //Note: This RIL request has not been renamed to ICC, 1429767a662ecde33c3979bf02b793d392aca0403162Wink Saville // but this request is also valid for SIM and RUIM 1430767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 1432767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(command); 14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(fileid); 14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(path); 14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p1); 14379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p2); 14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(p3); 14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(data); 14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(pin2); 14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1442767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " + requestToString(rr.mRequest) 1443767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " 0x" + Integer.toHexString(command) 1444767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " 0x" + Integer.toHexString(fileid) + " " 1445e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " path: " + path + "," 14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + p1 + "," + p2 + "," + p3); 1447767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1450767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1452767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCLIR(Message result) { 1453767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 1455767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1457767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1462767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCLIR(int clirMode, Message result) { 1463767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count ints 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(clirMode); 1470767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + clirMode); 1473767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1478767a662ecde33c3979bf02b793d392aca0403162Wink Saville queryCallWaiting(int serviceClass, Message response) { 1479767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 14819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 14839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 1484767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 14869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + serviceClass); 14879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 14899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1492767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 1493767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 14949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 1495767a662ecde33c3979bf02b793d392aca0403162Wink Saville 14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); 14979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 1499767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + enable + ", " + serviceClass); 1502767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1507767a662ecde33c3979bf02b793d392aca0403162Wink Saville setNetworkSelectionModeAutomatic(Message response) { 1508767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1509767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1511767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1513767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1517767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1518767a662ecde33c3979bf02b793d392aca0403162Wink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 1519767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1520767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1522767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + operatorNumeric); 15259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(operatorNumeric); 1527767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1531767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1532767a662ecde33c3979bf02b793d392aca0403162Wink Saville getNetworkSelectionMode(Message response) { 1533767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1534767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1536767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1538767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1542767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 1543767a662ecde33c3979bf02b793d392aca0403162Wink Saville getAvailableNetworks(Message response) { 1544767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 1545767a662ecde33c3979bf02b793d392aca0403162Wink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 15469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 1547767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1549767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1554767a662ecde33c3979bf02b793d392aca0403162Wink Saville setCallForward(int action, int cfReason, int serviceClass, 1555767a662ecde33c3979bf02b793d392aca0403162Wink Saville String number, int timeSeconds, Message response) { 1556767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 15579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 15589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(action); 15609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(cfReason); 15619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 15629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 15639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(number); 15649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt (timeSeconds); 1565767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1567767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " " + action + " " + cfReason + " " + serviceClass 15689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + timeSeconds); 1569767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 15749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project queryCallForwardStatus(int cfReason, int serviceClass, 1575767a662ecde33c3979bf02b793d392aca0403162Wink Saville String number, Message response) { 1576767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 15779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 15789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(2); // 2 is for query action, not in used anyway 15809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(cfReason); 15819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(serviceClass); 15829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 15839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(number); 15849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt (0); 1585767a662ecde33c3979bf02b793d392aca0403162Wink Saville 15869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + cfReason + " " + serviceClass); 15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1593767a662ecde33c3979bf02b793d392aca0403162Wink Saville queryCLIP(Message response) { 15949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 15969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1604767a662ecde33c3979bf02b793d392aca0403162Wink Saville getBasebandVersion (Message response) { 1605767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 1607767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16134360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 16154360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLock(String facility, String password, int serviceClass, 16164360d7c678536a451dde6f4229e6d8c427b48523Wink Saville Message response) { 16174360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 16184360d7c678536a451dde6f4229e6d8c427b48523Wink Saville } 16194360d7c678536a451dde6f4229e6d8c427b48523Wink Saville 16204360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16214360d7c678536a451dde6f4229e6d8c427b48523Wink Saville public void 16224360d7c678536a451dde6f4229e6d8c427b48523Wink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 1623767a662ecde33c3979bf02b793d392aca0403162Wink Saville Message response) { 16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count strings 16294360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeInt(4); 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 16329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 16339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(serviceClass)); 16354360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeString(appId); 16369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16404360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setFacilityLock (String facility, boolean lockState, String password, 1643767a662ecde33c3979bf02b793d392aca0403162Wink Saville int serviceClass, Message response) { 16444360d7c678536a451dde6f4229e6d8c427b48523Wink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 16454360d7c678536a451dde6f4229e6d8c427b48523Wink Saville } 16464360d7c678536a451dde6f4229e6d8c427b48523Wink Saville 16474360d7c678536a451dde6f4229e6d8c427b48523Wink Saville @Override 16484360d7c678536a451dde6f4229e6d8c427b48523Wink Saville public void 16494360d7c678536a451dde6f4229e6d8c427b48523Wink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 16504360d7c678536a451dde6f4229e6d8c427b48523Wink Saville int serviceClass, String appId, Message response) { 16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String lockString; 16529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 16539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 16549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // count strings 16584360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeInt(5); 16599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(facility); 16619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lockString = (lockState)?"1":"0"; 16629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(lockString); 16639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(password); 16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(Integer.toString(serviceClass)); 16654360d7c678536a451dde6f4229e6d8c427b48523Wink Saville rr.mp.writeString(appId); 16669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1670767a662ecde33c3979bf02b793d392aca0403162Wink Saville 16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void 1672767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendUSSD (String ussdString, Message response) { 1673767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 16749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + ussdString); 16789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(ussdString); 16809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // inherited javadoc suffices 16859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void cancelPendingUssd (Message response) { 16869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 16879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 16889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() 16909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + "> " + requestToString(rr.mRequest)); 16919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1696767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void resetRadio(Message result) { 1697767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 16989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 16999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1705767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 1706767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 17089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1710767a662ecde33c3979bf02b793d392aca0403162Wink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 17119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeByteArray(data); 17139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1718767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 1719767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr 17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeStringArray(strings); 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 /** 17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Assign a specified band for RF configuration. 17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bandMode one of BM_*_BAND 17339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param response is callback message 17349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBandMode (int bandMode, Message response) { 17369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 17379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 17409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(bandMode); 17419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 17439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + bandMode); 17449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Query the list of band mode supported by RF. 17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 17519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param response is callback message 17529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * ((AsyncResult)response.obj).result is an int[] with every 17539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * element representing one avialable BM_*_BAND 17549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void queryAvailableBandMode (Message response) { 17569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr 17579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 17589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 17599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 17679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void sendTerminalResponse(String contents, Message response) { 17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 17709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(contents); 17759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void sendEnvelope(String contents, Message response) { 17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 17869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeString(contents); 17889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 17939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1794094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby public void sendEnvelopeWithStatus(String contents, Message response) { 1795094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILRequest rr = RILRequest.obtain( 1796094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 1797094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1798094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1799094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby + '[' + contents + ']'); 1800094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1801094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby rr.mp.writeString(contents); 1802094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby send(rr); 1803094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby } 1804094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby 1805094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby /** 1806094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby * {@inheritDoc} 1807094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby */ 18089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void handleCallSetupRequestFromSim( 18099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean accept, Message response) { 18109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 18139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response); 18149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] param = new int[1]; 18189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project param[0] = accept ? 1 : 0; 18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeIntArray(param); 18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1826975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville @Override 1827975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville public void setCurrentPreferredNetworkType() { 1828975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 1829975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 1830975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville } 1831975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville private int mSetPreferredNetworkType; 1832975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville 1833975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville /** 1834975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville * {@inheritDoc} 1835975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville */ 18369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setPreferredNetworkType(int networkType , Message response) { 18379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 18399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 18419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(networkType); 18429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1843975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville mSetPreferredNetworkType = networkType; 184405d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = networkType; 184505d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 18469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 18479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " : " + networkType); 18489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void getPreferredNetworkType(Message response) { 18569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 18589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void getNeighboringCids(Message response) { 18689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain( 18699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 18709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 18729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 18789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setLocationUpdates(boolean enable, Message response) { 18809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 18819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 18829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(enable ? 1 : 0); 1883767a662ecde33c3979bf02b793d392aca0403162Wink Saville 18849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "> " 18859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + requestToString(rr.mRequest) + ": " + enable); 1886767a662ecde33c3979bf02b793d392aca0403162Wink Saville 18879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 18889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1890c06ce125408696fd49c7fa9e1189ecb61804007ajsh /** 1891c06ce125408696fd49c7fa9e1189ecb61804007ajsh * {@inheritDoc} 1892c06ce125408696fd49c7fa9e1189ecb61804007ajsh */ 1893c06ce125408696fd49c7fa9e1189ecb61804007ajsh public void getSmscAddress(Message result) { 1894c06ce125408696fd49c7fa9e1189ecb61804007ajsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 1895c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1896c06ce125408696fd49c7fa9e1189ecb61804007ajsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1897c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1898c06ce125408696fd49c7fa9e1189ecb61804007ajsh send(rr); 1899c06ce125408696fd49c7fa9e1189ecb61804007ajsh } 1900c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1901c06ce125408696fd49c7fa9e1189ecb61804007ajsh /** 1902c06ce125408696fd49c7fa9e1189ecb61804007ajsh * {@inheritDoc} 1903c06ce125408696fd49c7fa9e1189ecb61804007ajsh */ 1904c06ce125408696fd49c7fa9e1189ecb61804007ajsh public void setSmscAddress(String address, Message result) { 1905c06ce125408696fd49c7fa9e1189ecb61804007ajsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 1906c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1907c06ce125408696fd49c7fa9e1189ecb61804007ajsh rr.mp.writeString(address); 1908c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1909c06ce125408696fd49c7fa9e1189ecb61804007ajsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1910c06ce125408696fd49c7fa9e1189ecb61804007ajsh + " : " + address); 1911c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1912c06ce125408696fd49c7fa9e1189ecb61804007ajsh send(rr); 1913c06ce125408696fd49c7fa9e1189ecb61804007ajsh } 1914c06ce125408696fd49c7fa9e1189ecb61804007ajsh 1915867641ece36e2fd17faaea79cf19506ab17177c6jsh /** 1916867641ece36e2fd17faaea79cf19506ab17177c6jsh * {@inheritDoc} 1917867641ece36e2fd17faaea79cf19506ab17177c6jsh */ 1918867641ece36e2fd17faaea79cf19506ab17177c6jsh public void reportSmsMemoryStatus(boolean available, Message result) { 1919867641ece36e2fd17faaea79cf19506ab17177c6jsh RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 1920867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(1); 1921867641ece36e2fd17faaea79cf19506ab17177c6jsh rr.mp.writeInt(available ? 1 : 0); 1922867641ece36e2fd17faaea79cf19506ab17177c6jsh 1923867641ece36e2fd17faaea79cf19506ab17177c6jsh if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1924867641ece36e2fd17faaea79cf19506ab17177c6jsh + requestToString(rr.mRequest) + ": " + available); 1925867641ece36e2fd17faaea79cf19506ab17177c6jsh 1926867641ece36e2fd17faaea79cf19506ab17177c6jsh send(rr); 1927867641ece36e2fd17faaea79cf19506ab17177c6jsh } 1928867641ece36e2fd17faaea79cf19506ab17177c6jsh 1929e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville /** 1930e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville * {@inheritDoc} 1931e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville */ 1932e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville public void reportStkServiceIsRunning(Message result) { 1933e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 1934e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1935e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1936e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1937e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville send(rr); 1938e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville } 1939e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville 1940e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 1941e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 1942e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 1943e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void getGsmBroadcastConfig(Message response) { 1944e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 1945e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1946e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1947e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1948e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 1949e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1950e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1951e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 1952e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 1953e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 1954e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 1955e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 1956e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1957e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int numOfConfig = config.length; 1958e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(numOfConfig); 1959e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1960e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for(int i = 0; i < numOfConfig; i++) { 1961e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getFromServiceId()); 1962e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getToServiceId()); 1963e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getFromCodeScheme()); 1964e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].getToCodeScheme()); 1965e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(config[i].isSelected() ? 1 : 0); 1966e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1967e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1968e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) { 1969e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1970f044a370d41687e0546a63b747b7c383f7f41e3eJake Hamby + " with " + numOfConfig + " configs : "); 1971e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for (int i = 0; i < numOfConfig; i++) { 1972e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang riljLog(config[i].toString()); 1973e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1974e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1975e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1976e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 1977e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1978e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1979e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang /** 1980e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang * {@inheritDoc} 1981e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang */ 1982e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setGsmBroadcastActivation(boolean activate, Message response) { 1983e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 1984e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1985e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(1); 1986e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(activate ? 0 : 1); 1987e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1988e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1989e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 1990e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang send(rr); 1991e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 1992e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 19939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //***** Private Methods 19949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1995767a662ecde33c3979bf02b793d392aca0403162Wink Saville private void sendScreenState(boolean on) { 19969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 19979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(1); 19989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mp.writeInt(on ? 1 : 0); 1999767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2000e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() 2001e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 2002767a662ecde33c3979bf02b793d392aca0403162Wink Saville 20039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project send(rr); 20049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2005767a662ecde33c3979bf02b793d392aca0403162Wink Saville 20069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void 2007767a662ecde33c3979bf02b793d392aca0403162Wink Saville onRadioAvailable() { 20089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // In case screen state was lost (due to process crash), 20099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this ensures that the RIL knows the correct screen state. 20109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: Should query Power Manager and send the actual 20129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // screen state. Just send true for now. 20139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sendScreenState(true); 20149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20169a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka private RadioState getRadioStateFromInt(int stateInt) { 20179a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka RadioState state; 20189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* RIL_RadioState ril.h */ 20209a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka switch(stateInt) { 20219a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 0: state = RadioState.RADIO_OFF; break; 20229a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 1: state = RadioState.RADIO_UNAVAILABLE; break; 20239a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 2: state = RadioState.SIM_NOT_READY; break; 20249a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 3: state = RadioState.SIM_LOCKED_OR_ABSENT; break; 20259a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 4: state = RadioState.SIM_READY; break; 20269a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 5: state = RadioState.RUIM_NOT_READY; break; 20279a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 6: state = RadioState.RUIM_READY; break; 20289a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 7: state = RadioState.RUIM_LOCKED_OR_ABSENT; break; 20299a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 8: state = RadioState.NV_NOT_READY; break; 20309a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka case 9: state = RadioState.NV_READY; break; 2031767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2032767a662ecde33c3979bf02b793d392aca0403162Wink Saville default: 20339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 20349a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka "Unrecognized RIL_RadioState: " + stateInt); 20359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20369a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka return state; 20379a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka } 20389a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka 20399a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka private void switchToRadioState(RadioState newState) { 204066958c73674673274bf08266b60ad3c1791c9179Wink Saville setRadioState(newState); 20419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Holds a PARTIAL_WAKE_LOCK whenever 20459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a) There is outstanding RIL request sent to RIL deamon and no replied 2046696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang * b) There is a request pending to be sent out. 20479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2048767a662ecde33c3979bf02b793d392aca0403162Wink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 20499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * happen often. 20509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2053767a662ecde33c3979bf02b793d392aca0403162Wink Saville acquireWakeLock() { 20549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 20559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.acquire(); 20569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestMessagesPending++; 20579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 20599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 20600e57e73575f27682b57b8ba615215d1bc2669b3aWink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 20619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2065767a662ecde33c3979bf02b793d392aca0403162Wink Saville releaseWakeLockIfDone() { 20669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mWakeLock) { 20679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mWakeLock.isHeld() && 20689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (mRequestMessagesPending == 0) && 2069696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang (mRequestMessagesWaiting == 0)) { 20709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 20719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mWakeLock.release(); 20729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2077767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(RILRequest rr) { 20789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message msg; 20799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 208060bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain if (mSocket == null) { 208160bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain rr.onError(RADIO_NOT_AVAILABLE, null); 208260bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain rr.release(); 208360bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain return; 208460bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain } 208560bb9c9a81bcd766d3e79f765ac22c7c38492409Anshul Jain 20869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg = mSender.obtainMessage(EVENT_SEND, rr); 20879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project acquireWakeLock(); 20899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project msg.sendToTarget(); 20919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2094767a662ecde33c3979bf02b793d392aca0403162Wink Saville processResponse (Parcel p) { 20959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int type; 20969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type = p.readInt(); 20989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type == RESPONSE_UNSOLICITED) { 21009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processUnsolicited (p); 21019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (type == RESPONSE_SOLICITED) { 21029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processSolicited (p); 2103767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 21049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project releaseWakeLockIfDone(); 21069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 210800d520b66caeef722281b76d30c0e1294070713dJohn Wang /** 210900d520b66caeef722281b76d30c0e1294070713dJohn Wang * Release each request in mReqeustsList then clear the list 211000d520b66caeef722281b76d30c0e1294070713dJohn Wang * @param error is the RIL_Errno sent back 211100d520b66caeef722281b76d30c0e1294070713dJohn Wang * @param loggable true means to print all requests in mRequestslist 211200d520b66caeef722281b76d30c0e1294070713dJohn Wang */ 211300d520b66caeef722281b76d30c0e1294070713dJohn Wang private void clearRequestsList(int error, boolean loggable) { 211400d520b66caeef722281b76d30c0e1294070713dJohn Wang RILRequest rr; 211500d520b66caeef722281b76d30c0e1294070713dJohn Wang synchronized (mRequestsList) { 211600d520b66caeef722281b76d30c0e1294070713dJohn Wang int count = mRequestsList.size(); 211700d520b66caeef722281b76d30c0e1294070713dJohn Wang if (RILJ_LOGD && loggable) { 211800d520b66caeef722281b76d30c0e1294070713dJohn Wang Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 211900d520b66caeef722281b76d30c0e1294070713dJohn Wang " mReqPending=" + mRequestMessagesPending + 212000d520b66caeef722281b76d30c0e1294070713dJohn Wang " mRequestList=" + count); 212100d520b66caeef722281b76d30c0e1294070713dJohn Wang } 212200d520b66caeef722281b76d30c0e1294070713dJohn Wang 212300d520b66caeef722281b76d30c0e1294070713dJohn Wang for (int i = 0; i < count ; i++) { 212400d520b66caeef722281b76d30c0e1294070713dJohn Wang rr = mRequestsList.get(i); 212500d520b66caeef722281b76d30c0e1294070713dJohn Wang if (RILJ_LOGD && loggable) { 212600d520b66caeef722281b76d30c0e1294070713dJohn Wang Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " + 212700d520b66caeef722281b76d30c0e1294070713dJohn Wang requestToString(rr.mRequest)); 212800d520b66caeef722281b76d30c0e1294070713dJohn Wang } 212900d520b66caeef722281b76d30c0e1294070713dJohn Wang rr.onError(error, null); 213000d520b66caeef722281b76d30c0e1294070713dJohn Wang rr.release(); 213100d520b66caeef722281b76d30c0e1294070713dJohn Wang } 213200d520b66caeef722281b76d30c0e1294070713dJohn Wang mRequestsList.clear(); 2133696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting = 0; 213400d520b66caeef722281b76d30c0e1294070713dJohn Wang } 213500d520b66caeef722281b76d30c0e1294070713dJohn Wang } 213600d520b66caeef722281b76d30c0e1294070713dJohn Wang 2137767a662ecde33c3979bf02b793d392aca0403162Wink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 21389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (mRequestsList) { 21399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = mRequestsList.size() ; i < s ; i++) { 21409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr = mRequestsList.get(i); 21419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr.mSerial == serial) { 21439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRequestsList.remove(i); 2144696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang if (mRequestMessagesWaiting > 0) 2145696794fc139a752e2a10fa66d73a9ae6fd085accJohn Wang mRequestMessagesWaiting--; 21469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return rr; 21479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 21529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2155767a662ecde33c3979bf02b793d392aca0403162Wink Saville processSolicited (Parcel p) { 21569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int serial, error; 21579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean found = false; 21589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project serial = p.readInt(); 21609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project error = p.readInt(); 21619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RILRequest rr; 21639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr = findAndRemoveRequestFromList(serial); 21659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr == null) { 2167767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.w(LOG_TAG, "Unexpected solicited response! sn: " 21689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + serial + " error: " + error); 21699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 21709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 217203228fa8f950dfee3f679d280f98d040dea397dcjohnwang Object ret = null; 2173767a662ecde33c3979bf02b793d392aca0403162Wink Saville 217403228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (error == 0 || p.dataAvail() > 0) { 217503228fa8f950dfee3f679d280f98d040dea397dcjohnwang // either command succeeds or command fails but with data payload 217603228fa8f950dfee3f679d280f98d040dea397dcjohnwang try {switch (rr.mRequest) { 217703228fa8f950dfee3f679d280f98d040dea397dcjohnwang /* 21789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_commands.h \ 21799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 21809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 218103228fa8f950dfee3f679d280f98d040dea397dcjohnwang */ 2182767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 2183be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 2184be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 2185be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 2186be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 2187be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 2188be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 2189be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 21909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 21919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 21929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 21939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 21949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 21959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: ret = responseVoid(p); break; 21969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 21979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 21989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 21999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2200dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 22015284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 22025284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 22039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 22049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 22059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 22069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 22079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 2208abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 2209767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 22109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 22119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 22129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 22139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 22149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 22159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 22169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 22179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 22189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 22199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 22209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 22219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 2222767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 22239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 2224be7f0f78afde931ce6ea2d4ba61c340fac5722f6jsh case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 22259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 22269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 22279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 22289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 22293caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 22309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 22319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 22329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 22339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 2234767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 2235767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 2236767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 2237767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2238767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 2239767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 2240767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 2241767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 22429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 2243767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 2244767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 2245767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 2246767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 2247767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 2248767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 2249767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 2250767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 2251767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 2252767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 2253767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 2254767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 225505d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 22569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 2257767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 22585284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 2259767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 2260767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 2261767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 2262767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 2263767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 2264767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 2265767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 2266767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 2267e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 2268767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 2269e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 2270e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2271e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 2272e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 2273767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2274767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 227527d074e0efbdabd40f00eca41169ea225c05fcbeNaveen Kalla case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 2276767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 2277767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 2278767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 2279767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 2280c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 2281c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 2282e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2283e51d57f4ab035cd9bc316cc0f93a200d326ef5f9Jaikumar Ganesh case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 2284144fdfec240a56890657d2248a22bdda9f22470cWink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 22855284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 2286463f22114587344c96460179069a08d7381fbfd6Jake Hamby case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 2287094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 2288094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 22899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 2290767a662ecde33c3979bf02b793d392aca0403162Wink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 22919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //break; 229203228fa8f950dfee3f679d280f98d040dea397dcjohnwang }} catch (Throwable tr) { 229303228fa8f950dfee3f679d280f98d040dea397dcjohnwang // Exceptions here usually mean invalid RIL responses 2294767a662ecde33c3979bf02b793d392aca0403162Wink Saville 229503228fa8f950dfee3f679d280f98d040dea397dcjohnwang Log.w(LOG_TAG, rr.serialString() + "< " 229603228fa8f950dfee3f679d280f98d040dea397dcjohnwang + requestToString(rr.mRequest) 229703228fa8f950dfee3f679d280f98d040dea397dcjohnwang + " exception, possible invalid RIL response", tr); 22989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229903228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (rr.mResult != null) { 230003228fa8f950dfee3f679d280f98d040dea397dcjohnwang AsyncResult.forMessage(rr.mResult, null, tr); 230103228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.mResult.sendToTarget(); 230203228fa8f950dfee3f679d280f98d040dea397dcjohnwang } 230303228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.release(); 230403228fa8f950dfee3f679d280f98d040dea397dcjohnwang return; 23059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 230603228fa8f950dfee3f679d280f98d040dea397dcjohnwang } 230703228fa8f950dfee3f679d280f98d040dea397dcjohnwang 230803228fa8f950dfee3f679d280f98d040dea397dcjohnwang if (error != 0) { 230903228fa8f950dfee3f679d280f98d040dea397dcjohnwang rr.onError(error, ret); 23109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 23119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 23129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 23159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + retToString(rr.mRequest, ret)); 2316767a662ecde33c3979bf02b793d392aca0403162Wink Saville 23179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (rr.mResult != null) { 23189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AsyncResult.forMessage(rr.mResult, ret, null); 23199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.mResult.sendToTarget(); 23209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2321767a662ecde33c3979bf02b793d392aca0403162Wink Saville 23229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project rr.release(); 23239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String 2326767a662ecde33c3979bf02b793d392aca0403162Wink Saville retToString(int req, Object ret) { 23279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ret == null) return ""; 23289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (req) { 23299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Don't log these return values, for privacy's sake. 23309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: 23319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: 23329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: 23331d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville if (!RILJ_LOGV) { 23341d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 23351d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville return ""; 23361d1a373f5c7637de545ad815ad21aa325aaa970fWink Saville } 23379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StringBuilder sb; 23409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String s; 23419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length; 23429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ret instanceof int[]){ 23439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] intArray = (int[]) ret; 23449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = intArray.length; 23459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder("{"); 23469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > 0) { 23479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = 0; 23489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(intArray[i++]); 23499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ( i < length) { 23509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(", ").append(intArray[i++]); 23519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("}"); 23549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 23559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (ret instanceof String[]) { 23569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] strings = (String[]) ret; 23579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = strings.length; 23589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder("{"); 23599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length > 0) { 23609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = 0; 23619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(strings[i++]); 23629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while ( i < length) { 23639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(", ").append(strings[i++]); 23649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("}"); 23679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 23689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 23699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 23709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder(" "); 23719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (DriverCall dc : calls) { 23729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append("[").append(dc).append("] "); 23739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 23759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 23769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<NeighboringCellInfo> cells; 23779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cells = (ArrayList<NeighboringCellInfo>) ret; 23789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb = new StringBuilder(" "); 23799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (NeighboringCellInfo cell : cells) { 23809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sb.append(cell).append(" "); 23819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = sb.toString(); 23839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 23849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = ret.toString(); 23859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return s; 23879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void 2390767a662ecde33c3979bf02b793d392aca0403162Wink Saville processUnsolicited (Parcel p) { 23919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int response; 23929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object ret; 23939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readInt(); 23959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try {switch(response) { 23979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 23989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_unsol_commands.h \ 23999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 24009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 24019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 24029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 24049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 24055284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 24069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 24079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 24089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 24099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 24109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 2411dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 2412767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 24139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 24149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 24159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 24169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 24179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 24189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 24199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_REFRESH: ret = responseInts(p); break; 2420e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 24214df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 2422767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 2423767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 24243b9f0a33a110d01e587ffd5ec7708af68723ad4bJean-Baptiste Queru case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 2425767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 2426e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2427e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 2428e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 242922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 24302a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 2431bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 24321ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 243366958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 24345284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 24355284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 24361dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 2437e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2438767a662ecde33c3979bf02b793d392aca0403162Wink Saville default: 2439767a662ecde33c3979bf02b793d392aca0403162Wink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 24409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //break; (implied) 24419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }} catch (Throwable tr) { 24422a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh Log.e(LOG_TAG, "Exception processing unsol response: " + response + 24439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "Exception:" + tr.toString()); 24449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 24459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(response) { 24489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 24499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* has bonus radio state int */ 24509a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka RadioState newState = getRadioStateFromInt(p.readInt()); 24519a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 2452767a662ecde33c3979bf02b793d392aca0403162Wink Saville 24539a8e567d2a801d36842e611c1ec7d73c71fffd8fAlex Yakavenka switchToRadioState(newState); 24549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 24569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 24579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCallStateRegistrants 24599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrants(new AsyncResult(null, null, null)); 24609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24615284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 24629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 24639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24645284090631e638b916d9a453212e9dc802656a67Wink Saville mVoiceNetworkStateRegistrants 24659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrants(new AsyncResult(null, null, null)); 24669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: { 24689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 24699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // FIXME this should move up a layer 24719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String a[] = new String[2]; 24729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a[1] = (String)ret; 24749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SmsMessage sms; 24769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2477767a662ecde33c3979bf02b793d392aca0403162Wink Saville sms = SmsMessage.newFromCMT(a); 2478b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby if (mGsmSmsRegistrant != null) { 2479b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mGsmSmsRegistrant 24809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrant(new AsyncResult(null, sms, null)); 24819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 24859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 24869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSmsStatusRegistrant != null) { 24889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSmsStatusRegistrant.notifyRegistrant( 24899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult(null, ret, null)); 24909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 24919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 24929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 24949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] smsIndex = (int[])ret; 24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if(smsIndex.length == 1) { 24989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSmsOnSimRegistrant != null) { 24999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSmsOnSimRegistrant. 25009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notifyRegistrant(new AsyncResult(null, smsIndex, null)); 25019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 25039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 25049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + smsIndex.length); 25059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: 25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] resp = (String[])ret; 2509767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (resp.length < 2) { 25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp = new String[2]; 25129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp[0] = ((String[])ret)[0]; 25139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resp[1] = null; 25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogMore(response, resp[0]); 25169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mUSSDRegistrant != null) { 25179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mUSSDRegistrant.notifyRegistrant( 25189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, resp, null)); 25199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2521767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 25229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // has bonus long containing milliseconds since boot that the NITZ 25259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // time was received 25269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long nitzReceiveTime = p.readLong(); 25279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object[] result = new Object[2]; 25299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result[0] = ret; 25319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result[1] = Long.valueOf(nitzReceiveTime); 25329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mNITZTimeRegistrant != null) { 2534767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNITZTimeRegistrant 25369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .notifyRegistrant(new AsyncResult (null, result, null)); 25379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 25389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // in case NITZ time registrant isnt registered yet 25399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mLastNITZTimeInfo = result; 25409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2542767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIGNAL_STRENGTH: 25449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Note this is set to "verbose" because it happens 25459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // frequently 25469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGV) unsljLogvRet(response, ret); 2547767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSignalStrengthRegistrant != null) { 25499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSignalStrengthRegistrant.notifyRegistrant( 25509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2553767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 25549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25565284090631e638b916d9a453212e9dc802656a67Wink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 25579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 25609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mSsnRegistrant != null) { 25639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSsnRegistrant.notifyRegistrant( 25649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: 25699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 25709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2571a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatSessionEndRegistrant != null) { 2572a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatSessionEndRegistrant.notifyRegistrant( 25739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: 25789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2580a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatProCmdRegistrant != null) { 2581a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatProCmdRegistrant.notifyRegistrant( 25829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: 25879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2589a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatEventRegistrant != null) { 2590a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatEventRegistrant.notifyRegistrant( 25919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 25929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 25949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: 25969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 25979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2598a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka if (mCatCallSetUpRegistrant != null) { 2599a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatCallSetUpRegistrant.notifyRegistrant( 26009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 26059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLog(response); 26069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2607767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccSmsFullRegistrant != null) { 2608767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 26099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2612767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_SIM_REFRESH: 26139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (RILJ_LOGD) unsljLogRet(response, ret); 26149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2615a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt if (mIccRefreshRegistrants != null) { 2616a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt mIccRefreshRegistrants.notifyRegistrants( 26179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new AsyncResult (null, ret, null)); 26189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2620767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2621767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CALL_RING: 2622dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 26232a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 26249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mRingRegistrant != null) { 2625dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mRingRegistrant.notifyRegistrant( 2626dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 26279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 26292a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 26304df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 26314df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (RILJ_LOGD) unsljLogvRet(response, ret); 26324df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project if (mRestrictedStateRegistrant != null) { 26334df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project mRestrictedStateRegistrant.notifyRegistrant( 26344df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project new AsyncResult (null, ret, null)); 26354df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 263655c6f8881fdd2c5894e6297f49a9c4e0dc81ff8dWink Saville break; 26372a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 2638767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 2639e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2640e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2641767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccStatusChangedRegistrants != null) { 2642767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2643767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2644767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2645767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2646767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 2647e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2648e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2649767a662ecde33c3979bf02b793d392aca0403162Wink Saville SmsMessage sms = (SmsMessage) ret; 2650767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2651b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby if (mCdmaSmsRegistrant != null) { 2652b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mCdmaSmsRegistrant 2653767a662ecde33c3979bf02b793d392aca0403162Wink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 2654767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2655767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2656767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2657767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 2658e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2659e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 2660e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (mGsmBroadcastSmsRegistrant != null) { 2661e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang mGsmBroadcastSmsRegistrant 2662e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang .notifyRegistrant(new AsyncResult(null, ret, null)); 2663e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 2664767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 2665767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2666767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 2667e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang if (RILJ_LOGD) unsljLog(response); 2668767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2669767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mIccSmsFullRegistrant != null) { 2670767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant.notifyRegistrant(); 2671767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2672767a662ecde33c3979bf02b793d392aca0403162Wink Saville break; 26732a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 2674e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 2675e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) unsljLog(response); 2676e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2677e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (mEmergencyCallbackModeRegistrant != null) { 2678e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 2679e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2680e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2681e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2682e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 26833bd5b0154faa02e197cdc344b45d968aba43d726Anna Markova if (RILJ_LOGD) unsljLogRet(response, ret); 2684e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2685dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mCallWaitingInfoRegistrants != null) { 2686dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 2687dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 2688e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2689e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2690e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2691e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 2692dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2693e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2694dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mOtaProvisionRegistrants != null) { 2695dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mOtaProvisionRegistrants.notifyRegistrants( 2696dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville new AsyncResult (null, ret, null)); 2697e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2698e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2699e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2700e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_INFO_REC: 270122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 2702dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 270322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville try { 270422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 270522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } catch (ClassCastException e) { 270622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Log.e(LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 270722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville break; 2708dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 270922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 271022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville for (CdmaInformationRecords rec : listInfoRecs) { 271122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 271222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville notifyRegistrantsCdmaInfoRec(rec); 2713dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 2714dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville break; 2715dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 2716dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: 2717dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 2718dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (mUnsolOemHookRawRegistrant != null) { 2719dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 2720e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 2721e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville break; 2722bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang 2723bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: 2724bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang if (RILJ_LOGD) unsljLogvRet(response, ret); 2725bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang if (mRingbackToneRegistrants != null) { 2726bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang boolean playtone = (((int[])ret)[0] == 1); 2727bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang mRingbackToneRegistrants.notifyRegistrants( 2728bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang new AsyncResult (null, playtone, null)); 2729bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang } 27301ccc41ed938ff005ae3d621292580a90601242caJohn Wang break; 27311ccc41ed938ff005ae3d621292580a90601242caJohn Wang 27321ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: 27331ccc41ed938ff005ae3d621292580a90601242caJohn Wang if (RILJ_LOGD) unsljLogRet(response, ret); 27341ccc41ed938ff005ae3d621292580a90601242caJohn Wang 27351ccc41ed938ff005ae3d621292580a90601242caJohn Wang if (mResendIncallMuteRegistrants != null) { 27361ccc41ed938ff005ae3d621292580a90601242caJohn Wang mResendIncallMuteRegistrants.notifyRegistrants( 27371ccc41ed938ff005ae3d621292580a90601242caJohn Wang new AsyncResult (null, ret, null)); 27381ccc41ed938ff005ae3d621292580a90601242caJohn Wang } 27395284090631e638b916d9a453212e9dc802656a67Wink Saville break; 27405284090631e638b916d9a453212e9dc802656a67Wink Saville 274166958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 27425284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27435284090631e638b916d9a453212e9dc802656a67Wink Saville 27445284090631e638b916d9a453212e9dc802656a67Wink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 27455284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 27465284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, ret, null)); 27475284090631e638b916d9a453212e9dc802656a67Wink Saville } 27485284090631e638b916d9a453212e9dc802656a67Wink Saville break; 27495284090631e638b916d9a453212e9dc802656a67Wink Saville 27505284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 27515284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27525284090631e638b916d9a453212e9dc802656a67Wink Saville 27535284090631e638b916d9a453212e9dc802656a67Wink Saville if (mCdmaPrlChangedRegistrants != null) { 27545284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 27555284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, ret, null)); 27565284090631e638b916d9a453212e9dc802656a67Wink Saville } 27575284090631e638b916d9a453212e9dc802656a67Wink Saville break; 27585284090631e638b916d9a453212e9dc802656a67Wink Saville 27595284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 27605284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 27615284090631e638b916d9a453212e9dc802656a67Wink Saville 27625284090631e638b916d9a453212e9dc802656a67Wink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 27635284090631e638b916d9a453212e9dc802656a67Wink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 27645284090631e638b916d9a453212e9dc802656a67Wink Saville new AsyncResult (null, null, null)); 27655284090631e638b916d9a453212e9dc802656a67Wink Saville } 27665284090631e638b916d9a453212e9dc802656a67Wink Saville break; 27671dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 27681dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: { 27691dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 277066958c73674673274bf08266b60ad3c1791c9179Wink Saville 277166958c73674673274bf08266b60ad3c1791c9179Wink Saville // Initial conditions 277266958c73674673274bf08266b60ad3c1791c9179Wink Saville setRadioPower(false, null); 277305d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville setPreferredNetworkType(mPreferredNetworkType, null); 277466958c73674673274bf08266b60ad3c1791c9179Wink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 27751dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 27761dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville break; 27771dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 27781dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 27791dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 27801dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 27811dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville /** 27821dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * Notifiy all registrants that the ril has connected or disconnected. 27831dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * 27841dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * @param rilVer is the version of the ril or -1 if disconnected. 27851dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville */ 27861dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 27871dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilVersion = rilVer; 27881dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville if (mRilConnectedRegistrants != null) { 27891dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilConnectedRegistrants.notifyRegistrants( 27901dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville new AsyncResult (null, new Integer(rilVer), null)); 27919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2795767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseInts(Parcel p) { 27969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int numInts; 27979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int response[]; 27989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numInts = p.readInt(); 28009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new int[numInts]; 28029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < numInts ; i++) { 28049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response[i] = p.readInt(); 28059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 28089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2812767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseVoid(Parcel p) { 28139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 28149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2817767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCallForward(Parcel p) { 28189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int numInfos; 28199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CallForwardInfo infos[]; 28209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numInfos = p.readInt(); 28229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos = new CallForwardInfo[numInfos]; 28249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < numInfos ; i++) { 28269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i] = new CallForwardInfo(); 28279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].status = p.readInt(); 28299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].reason = p.readInt(); 28309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].serviceClass = p.readInt(); 28319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].toa = p.readInt(); 28329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].number = p.readString(); 28339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project infos[i].timeSeconds = p.readInt(); 28349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return infos; 28379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2840767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseSuppServiceNotification(Parcel p) { 28419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SuppServiceNotification notification = new SuppServiceNotification(); 2842767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.notificationType = p.readInt(); 28449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.code = p.readInt(); 28459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.index = p.readInt(); 28469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.type = p.readInt(); 28479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project notification.number = p.readString(); 2848767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return notification; 28509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2851767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2853767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCdmaSms(Parcel p) { 2854767a662ecde33c3979bf02b793d392aca0403162Wink Saville SmsMessage sms; 2855767a662ecde33c3979bf02b793d392aca0403162Wink Saville sms = SmsMessage.newFromParcel(p); 2856767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2857767a662ecde33c3979bf02b793d392aca0403162Wink Saville return sms; 2858767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2859767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2860767a662ecde33c3979bf02b793d392aca0403162Wink Saville private Object 2861767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseString(Parcel p) { 28629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String response; 28639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readString(); 28659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 28679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2870767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseStrings(Parcel p) { 28719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 28729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String response[]; 28739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.readStringArray(); 28759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (false) { 28779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project num = p.readInt(); 28789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new String[num]; 28809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < num; i++) { 28819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response[i] = p.readString(); 28829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2884767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 28869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2889767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseRaw(Parcel p) { 28909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 28919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte response[]; 28929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = p.createByteArray(); 28949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 28969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2899767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseSMS(Parcel p) { 29007b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh int messageRef, errorCode; 29019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String ackPDU; 29029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project messageRef = p.readInt(); 29049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ackPDU = p.readString(); 29057b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh errorCode = p.readInt(); 29069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29077b3f5520d32b5f149fa9d4a7c953547ba55f1708Jaikumar Ganesh SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 29089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 29109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2914094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby responseICC_IO(Parcel p) { 29159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int sw1, sw2; 29169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project byte data[] = null; 29179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Message ret; 2918767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sw1 = p.readInt(); 29209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sw2 = p.readInt(); 29219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String s = p.readString(); 29239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29243b13b2c9d1ee6035996766d332ba8b85cc3bf3d2Wink Saville if (RILJ_LOGV) riljLog("< iccIO: " 2925e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " 0x" + Integer.toHexString(sw1) 2926e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + " 0x" + Integer.toHexString(sw2) + " " 2927e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville + s); 2928e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 2929767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new IccIoResult(sw1, sw2, s); 29309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 29319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2933767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseIccCardStatus(Parcel p) { 2934767a662ecde33c3979bf02b793d392aca0403162Wink Saville IccCardApplication ca; 2935767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2936767a662ecde33c3979bf02b793d392aca0403162Wink Saville IccCardStatus status = new IccCardStatus(); 2937cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setCardState(p.readInt()); 2938cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setUniversalPinState(p.readInt()); 2939cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setGsmUmtsSubscriptionAppIndex(p.readInt()); 2940cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setCdmaSubscriptionAppIndex(p.readInt()); 29415284090631e638b916d9a453212e9dc802656a67Wink Saville status.setImsSubscriptionAppIndex(p.readInt()); 2942cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh int numApplications = p.readInt(); 2943767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2944767a662ecde33c3979bf02b793d392aca0403162Wink Saville // limit to maximum allowed applications 2945cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh if (numApplications > IccCardStatus.CARD_MAX_APPS) { 2946cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh numApplications = IccCardStatus.CARD_MAX_APPS; 29479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2948cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.setNumApplications(numApplications); 29499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2950cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh for (int i = 0 ; i < numApplications ; i++) { 2951767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca = new IccCardApplication(); 2952767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_type = ca.AppTypeFromRILInt(p.readInt()); 2953767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_state = ca.AppStateFromRILInt(p.readInt()); 2954767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.perso_substate = ca.PersoSubstateFromRILInt(p.readInt()); 2955767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.aid = p.readString(); 2956767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.app_label = p.readString(); 2957767a662ecde33c3979bf02b793d392aca0403162Wink Saville ca.pin1_replaced = p.readInt(); 2958b0b24b3df50988d23f571b83d829fecc986ec497John Wang ca.pin1 = ca.PinStateFromRILInt(p.readInt()); 2959b0b24b3df50988d23f571b83d829fecc986ec497John Wang ca.pin2 = ca.PinStateFromRILInt(p.readInt()); 2960cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh status.addApplication(ca); 2961767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 2962cdadaad0e4e76a69eba144d3501cca9765cee80cJaikumar Ganesh return status; 2963767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 29649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 2966767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseCallList(Parcel p) { 29679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int num; 2968767a662ecde33c3979bf02b793d392aca0403162Wink Saville int voiceSettings; 29699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList<DriverCall> response; 29709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DriverCall dc; 29719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project num = p.readInt(); 29739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response = new ArrayList<DriverCall>(num); 29749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < num ; i++) { 29769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc = new DriverCall(); 2977767a662ecde33c3979bf02b793d392aca0403162Wink Saville 29789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.state = DriverCall.stateFromCLCC(p.readInt()); 29799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.index = p.readInt(); 29809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.TOA = p.readInt(); 29819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.isMpty = (0 != p.readInt()); 29829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.isMT = (0 != p.readInt()); 29839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.als = p.readInt(); 2984767a662ecde33c3979bf02b793d392aca0403162Wink Saville voiceSettings = p.readInt(); 2985767a662ecde33c3979bf02b793d392aca0403162Wink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 298622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville dc.isVoicePrivacy = (0 != p.readInt()); 29879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dc.number = p.readString(); 2988a14f47f975064816df3008e66055d41ddb9d7353Wink Saville int np = p.readInt(); 2989a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 2990a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.name = p.readString(); 2991a14f47f975064816df3008e66055d41ddb9d7353Wink Saville dc.namePresentation = p.readInt(); 29920fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla int uusInfoPresent = p.readInt(); 29930fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla if (uusInfoPresent == 1) { 299424440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo = new UUSInfo(); 299524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setType(p.readInt()); 299624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setDcs(p.readInt()); 299724440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla byte[] userData = p.createByteArray(); 299824440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.setUserData(userData); 29995284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 300024440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.getType(), dc.uusInfo.getDcs(), 300124440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla dc.uusInfo.getUserData().length)); 30025284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : data (string)=" 300324440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla + new String(dc.uusInfo.getUserData())); 30045284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : data (hex): " 300524440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 300624440cf8a9431291bdcaa77b418e6c4715932507Naveen Kalla } else { 30075284090631e638b916d9a453212e9dc802656a67Wink Saville riljLogv("Incoming UUS : NOT present!"); 30080fa1b24593bbe7972bfbc5290519359db8c4ade6Naveen Kalla } 3009767a662ecde33c3979bf02b793d392aca0403162Wink Saville 301022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Make sure there's a leading + on addresses with a TOA of 145 301122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 30129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project response.add(dc); 3014767a662ecde33c3979bf02b793d392aca0403162Wink Saville 301522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (dc.isVoicePrivacy) { 3016767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 30175284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("InCall VoicePrivacy is enabled"); 3018767a662ecde33c3979bf02b793d392aca0403162Wink Saville } else { 3019767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 30205284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("InCall VoicePrivacy is disabled"); 3021767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 30229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Collections.sort(response); 30259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 30269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return response; 30279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3029abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville private DataCallState getDataCallState(Parcel p, int version) { 3030abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville DataCallState dataCall = new DataCallState(); 3031abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3032abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.version = version; 3033abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (version < 5) { 3034abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = p.readInt(); 3035abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.active = p.readInt(); 3036abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.type = p.readString(); 3037abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 3038aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville if (!TextUtils.isEmpty(addresses)) { 3039abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.addresses = addresses.split(" "); 3040abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3041abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } else { 3042abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.status = p.readInt(); 3043e0acd0842f2de9b2bf02d34c0ed90ca7a6ab30a9Kazuhiro Ondo dataCall.suggestedRetryTime = p.readInt(); 3044abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = p.readInt(); 3045abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.active = p.readInt(); 3046abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.type = p.readString(); 3047abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.ifname = p.readString(); 3048aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville if ((dataCall.status == DataConnection.FailCause.NONE.getErrorCode()) && 3049aa44b52ee07eb4937d23bb3c2464007a2eb3f50fWink Saville TextUtils.isEmpty(dataCall.ifname)) { 305070181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville throw new RuntimeException("getDataCallState, no ifname"); 305170181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 3052abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 305370181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(addresses)) { 3054abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.addresses = addresses.split(" "); 3055abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3056abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String dnses = p.readString(); 305770181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(dnses)) { 3058abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.dnses = dnses.split(" "); 3059abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 30605284090631e638b916d9a453212e9dc802656a67Wink Saville String gateways = p.readString(); 30615284090631e638b916d9a453212e9dc802656a67Wink Saville if (!TextUtils.isEmpty(gateways)) { 30625284090631e638b916d9a453212e9dc802656a67Wink Saville dataCall.gateways = gateways.split(" "); 30635284090631e638b916d9a453212e9dc802656a67Wink Saville } 3064abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3065abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return dataCall; 3066abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3067abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 30689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 3069767a662ecde33c3979bf02b793d392aca0403162Wink Saville responseDataCallList(Parcel p) { 3070e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville ArrayList<DataCallState> response; 30719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3072abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int ver = p.readInt(); 3073abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int num = p.readInt(); 30745284090631e638b916d9a453212e9dc802656a67Wink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 30759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3076abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville response = new ArrayList<DataCallState>(num); 30779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < num; i++) { 3078abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville response.add(getDataCallState(p, ver)); 3079abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 30809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3081abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return response; 3082abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3083abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3084abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville private Object 3085abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville responseSetupDataCall(Parcel p) { 3086abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int ver = p.readInt(); 3087abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville int num = p.readInt(); 30883b13b2c9d1ee6035996766d332ba8b85cc3bf3d2Wink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 30899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3090abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville DataCallState dataCall; 3091abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville 3092abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (ver < 5) { 3093abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall = new DataCallState(); 309470181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.version = ver; 3095abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.cid = Integer.parseInt(p.readString()); 3096abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall.ifname = p.readString(); 309770181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 3098abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville throw new RuntimeException( 309970181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 3100abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3101abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville String addresses = p.readString(); 310270181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(addresses)) { 310370181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.addresses = addresses.split(" "); 310470181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 310570181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (num >= 4) { 310670181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville String dnses = p.readString(); 31075284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 310870181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville if (!TextUtils.isEmpty(dnses)) { 310970181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville dataCall.dnses = dnses.split(" "); 311070181e2a9f4366eb422dcfe35636e90090ebe942Wink Saville } 3111abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 31125284090631e638b916d9a453212e9dc802656a67Wink Saville if (num >= 5) { 31135284090631e638b916d9a453212e9dc802656a67Wink Saville String gateways = p.readString(); 31145284090631e638b916d9a453212e9dc802656a67Wink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 31155284090631e638b916d9a453212e9dc802656a67Wink Saville if (!TextUtils.isEmpty(gateways)) { 31165284090631e638b916d9a453212e9dc802656a67Wink Saville dataCall.gateways = gateways.split(" "); 31175284090631e638b916d9a453212e9dc802656a67Wink Saville } 31185284090631e638b916d9a453212e9dc802656a67Wink Saville } 3119abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } else { 3120abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville if (num != 1) { 3121abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville throw new RuntimeException( 3122abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 3123abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville + " got " + num); 3124abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville } 3125abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville dataCall = getDataCallState(p, ver); 31269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3128abea3b892b5e54c46423bfe33fdb0aa1315f6bf4Wink Saville return dataCall; 31299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Object 31323caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt responseOperatorInfos(Parcel p) { 31339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String strings[] = (String [])responseStrings(p); 31343caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt ArrayList<OperatorInfo> ret; 31359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (strings.length % 4 != 0) { 31379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException( 3138767a662ecde33c3979bf02b793d392aca0403162Wink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 31399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + strings.length + " strings, expected multible of 4"); 31409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31423caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt ret = new ArrayList<OperatorInfo>(strings.length / 4); 31439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0 ; i < strings.length ; i += 4) { 31459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret.add ( 31463caa1bd1061df4029951e68d0a04d5e30928701fRobert Greenwalt new OperatorInfo( 31479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+0], 31489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+1], 31499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+2], 31509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project strings[i+3])); 31519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3152767a662ecde33c3979bf02b793d392aca0403162Wink Saville 31539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ret; 31549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3156094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby private Object 3157094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby responseCellList(Parcel p) { 31589c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang int num, rssi; 31599c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang String location; 3160767a662ecde33c3979bf02b793d392aca0403162Wink Saville ArrayList<NeighboringCellInfo> response; 3161767a662ecde33c3979bf02b793d392aca0403162Wink Saville NeighboringCellInfo cell; 3162767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3163767a662ecde33c3979bf02b793d392aca0403162Wink Saville num = p.readInt(); 31649c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang response = new ArrayList<NeighboringCellInfo>(); 31659c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang 31669c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang // Determine the radio access type 31679c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang String radioString = SystemProperties.get( 31689c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 31699c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang int radioType; 31709c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang if (radioString.equals("GPRS")) { 31719c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_GPRS; 31729c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("EDGE")) { 31739c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_EDGE; 31749c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("UMTS")) { 31759c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_UMTS; 31769c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSDPA")) { 31779c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSDPA; 31789c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSUPA")) { 31799c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSUPA; 31809c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else if (radioString.equals("HSPA")) { 31819c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_HSPA; 31829c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } else { 31839c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang radioType = NETWORK_TYPE_UNKNOWN; 3184767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 31852a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 31869c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang // Interpret the location based on radio access type 31879c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang if (radioType != NETWORK_TYPE_UNKNOWN) { 31889c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang for (int i = 0 ; i < num ; i++) { 31899c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang rssi = p.readInt(); 31909c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang location = p.readString(); 31919c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang cell = new NeighboringCellInfo(rssi, location, radioType); 31929c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang response.add(cell); 31939c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } 31949c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang } 31959c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang return response; 3196767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3197767a662ecde33c3979bf02b793d392aca0403162Wink Saville 319805d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville private Object responseGetPreferredNetworkType(Parcel p) { 319905d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville int [] response = (int[]) responseInts(p); 320005d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 320105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville if (response.length >= 1) { 320205d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // Since this is the response for getPreferredNetworkType 320305d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // we'll assume that it should be the value we want the 320405d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // vendor ril to take if we reestablish a connection to it. 320505d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville mPreferredNetworkType = response[0]; 320605d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville } 320705d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville return response; 320805d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville } 320905d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville 3210e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang private Object responseGmsBroadcastConfig(Parcel p) { 3211e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int num; 3212e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang ArrayList<SmsBroadcastConfigInfo> response; 3213e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang SmsBroadcastConfigInfo info; 3214e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3215e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang num = p.readInt(); 3216e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang response = new ArrayList<SmsBroadcastConfigInfo>(num); 3217e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3218e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang for (int i = 0; i < num; i++) { 3219e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int fromId = p.readInt(); 3220e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int toId = p.readInt(); 3221e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int fromScheme = p.readInt(); 3222e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang int toScheme = p.readInt(); 3223e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang boolean selected = (p.readInt() == 1); 3224e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 3225e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 3226e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang toScheme, selected); 3227e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang response.add(info); 3228e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 3229e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang return response; 3230767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 32319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3232767a662ecde33c3979bf02b793d392aca0403162Wink Saville private Object 3233e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang responseCdmaBroadcastConfig(Parcel p) { 3234dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numServiceCategories; 3235767a662ecde33c3979bf02b793d392aca0403162Wink Saville int response[]; 32369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3237dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numServiceCategories = p.readInt(); 3238e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3239dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville if (numServiceCategories == 0) { 32407188f946521d64ea21121939d2a4c279f33fe910Wink Saville // TODO: The logic of providing default values should 32417188f946521d64ea21121939d2a4c279f33fe910Wink Saville // not be done by this transport layer. And needs to 32427188f946521d64ea21121939d2a4c279f33fe910Wink Saville // be done by the vendor ril or application logic. 3243dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numInts; 3244dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 3245dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3246e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 324722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Faking a default record for all possible records. 324822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 3249dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3250dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 325122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // default language and selection status to false for all. 3252dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 3253dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 3254dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 1] = 1; 3255dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i + 2] = 0; 3256dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3257dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } else { 3258dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int numInts; 3259dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 3260dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3261dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3262dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[0] = numServiceCategories; 3263dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 1 ; i < numInts; i++) { 3264dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i] = p.readInt(); 3265dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3266e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3267e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3268e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return response; 3269e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3270e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3271e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3272dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville responseSignalStrength(Parcel p) { 32735284090631e638b916d9a453212e9dc802656a67Wink Saville int numInts = 12; 3274dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville int response[]; 3275e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3276dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville /* TODO: Add SignalStrength class to match RIL_SignalStrength */ 3277dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response = new int[numInts]; 3278dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 0 ; i < numInts ; i++) { 3279dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville response[i] = p.readInt(); 3280dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3281e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3282dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return response; 3283dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 3284e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 328522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville private ArrayList<CdmaInformationRecords> 328622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville responseCdmaInformationRecord(Parcel p) { 328722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville int numberOfInfoRecs; 328822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville ArrayList<CdmaInformationRecords> response; 328922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 329022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville /** 329122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * Loop through all of the information records unmarshalling them 329222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * and converting them to Java Objects. 329322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville */ 329422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville numberOfInfoRecs = p.readInt(); 329522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 3296dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3297dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 329822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 329922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville response.add(InfoRec); 33009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 330122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 330222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return response; 33039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3305e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3306dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville responseCdmaCallWaiting(Parcel p) { 3307dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 3308e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3309dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.number = p.readString(); 33103bd5b0154faa02e197cdc344b45d968aba43d726Anna Markova notification.numberPresentation = notification.presentationFromCLIP(p.readInt()); 3311dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.name = p.readString(); 3312dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.namePresentation = notification.numberPresentation; 3313dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.isPresent = p.readInt(); 3314dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.signalType = p.readInt(); 3315dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.alertPitch = p.readInt(); 3316dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville notification.signal = p.readInt(); 33175284090631e638b916d9a453212e9dc802656a67Wink Saville notification.numberType = p.readInt(); 33185284090631e638b916d9a453212e9dc802656a67Wink Saville notification.numberPlan = p.readInt(); 3319dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 3320dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville return notification; 3321e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3322e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3323e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville private Object 3324e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville responseCallRing(Parcel p){ 3325e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville char response[] = new char[4]; 3326e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3327e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[0] = (char) p.readInt(); // isPresent 3328e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[1] = (char) p.readInt(); // signalType 3329e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[2] = (char) p.readInt(); // alertPitch 3330e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville response[3] = (char) p.readInt(); // signal 3331e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3332e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville return response; 3333e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 3334e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 333522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville private void 333622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 333722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 333822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 333922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mDisplayInfoRegistrants != null) { 334022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 334122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mDisplayInfoRegistrants.notifyRegistrants( 334222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 334322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 334422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 334522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mSignalInfoRegistrants != null) { 334622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 334722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mSignalInfoRegistrants.notifyRegistrants( 334822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 334922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 335022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 335122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mNumberInfoRegistrants != null) { 335222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 335322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mNumberInfoRegistrants.notifyRegistrants( 335422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 335522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 335622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 335722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mRedirNumInfoRegistrants != null) { 335822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 335922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mRedirNumInfoRegistrants.notifyRegistrants( 336022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 336122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 336222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 336322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mLineControlInfoRegistrants != null) { 336422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 336522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mLineControlInfoRegistrants.notifyRegistrants( 336622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 336722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 336822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 336922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mT53ClirInfoRegistrants != null) { 337022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 337122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53ClirInfoRegistrants.notifyRegistrants( 337222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 337322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 337422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 337522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (mT53AudCntrlInfoRegistrants != null) { 337622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 337722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 337822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville new AsyncResult (null, infoRec.record, null)); 337922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 338022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 338122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 338222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 33839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static String 3384767a662ecde33c3979bf02b793d392aca0403162Wink Saville requestToString(int request) { 33859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 33869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_commands.h \ 33879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 33889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 33899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 33909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(request) { 33919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 33929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 33939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 33949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 33959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 33969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 33979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 33989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 33999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 34009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DIAL: return "DIAL"; 34019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 34029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP: return "HANGUP"; 34039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 34049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 34059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 34069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 34079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_UDUB: return "UDUB"; 34089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 34099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 34105284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 34115284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 34129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OPERATOR: return "OPERATOR"; 34139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 34149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF: return "DTMF"; 34159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 34169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 3417767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 34189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SIM_IO: return "SIM_IO"; 34199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 34209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 34219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 34229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 34239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 34249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 34259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 34269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 34279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 34289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 34299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 34309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_ANSWER: return "ANSWER"; 3431767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 34329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 34339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 34349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 34359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 34369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 34379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 34389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 34399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_START: return "DTMF_START"; 34409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 34419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 34429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 34439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 34449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 34459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 3446767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 3447767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 34489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 34499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 34509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 34519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 34529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 34539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 34549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 34559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 34569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 34579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 34589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 34599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 34609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 34619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 34629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 34639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 34649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 34659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 34669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 34675284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 3468767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 3469767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 3470767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 3471767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 3472767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 3473767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 3474767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 3475767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 3476767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 3477767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 3478e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 3479e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 3480767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 3481767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 3482e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 348327d074e0efbdabd40f00eca41169ea225c05fcbeNaveen Kalla case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 3484767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 3485767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 3486767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 3487767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 3488767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 3489c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 3490c06ce125408696fd49c7fa9e1189ecb61804007ajsh case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 3491e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 34929c9151eccd27e824fdb7c266bff78c10038e87fejsh case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 3493e14af0e26eb11d0a9e4620a75aadcc4b40885aa8Wink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 34945284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 3495463f22114587344c96460179069a08d7381fbfd6Jake Hamby case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 3496094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 3497094854091b63498f952f0a6c4bcedfdfefaf1cf7Jake Hamby case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 34989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: return "<unknown request>"; 34999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static String 35039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project responseToString(int request) 35049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 35059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 35069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cat libs/telephony/ril_unsol_commands.h \ 35079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | egrep "^ *{RIL_" \ 35089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 35099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 35109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch(request) { 35119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 35129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 35135284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 35149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 35159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 35169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 35179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 35189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 35199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 35209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 3521767a662ecde33c3979bf02b793d392aca0403162Wink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 35229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 35239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 35249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 35259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 35269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 35279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 35289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 35299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 3530e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 3531e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 3532e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 3533e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 3534dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 3535e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 3536e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 3537e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 3538e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 3539dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 3540bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONG"; 35411ccc41ed938ff005ae3d621292580a90601242caJohn Wang case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 354266958c73674673274bf08266b60ad3c1791c9179Wink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 35435284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 35445284090631e638b916d9a453212e9dc802656a67Wink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 35451dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 35469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: return "<unknown reponse>"; 35479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void riljLog(String msg) { 35519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.d(LOG_TAG, msg); 35529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void riljLogv(String msg) { 35559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(LOG_TAG, msg); 35569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLog(int response) { 35599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response)); 35609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogMore(int response, String more) { 35639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response) + " " + more); 35649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogRet(int response, Object ret) { 35679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 35689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void unsljLogvRet(int response, Object ret) { 35719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 35729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 35739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 35742a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 3575767a662ecde33c3979bf02b793d392aca0403162Wink Saville // ***** Methods for CDMA support 3576767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3577767a662ecde33c3979bf02b793d392aca0403162Wink Saville getDeviceIdentity(Message response) { 3578767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 3579767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3580767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3581767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3582767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3583767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3584767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3585767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3586767a662ecde33c3979bf02b793d392aca0403162Wink Saville getCDMASubscription(Message response) { 3587767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 3588767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3589767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3590767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3591767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3592767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3593767a662ecde33c3979bf02b793d392aca0403162Wink Saville 35945e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville @Override 35955e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 35965e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 3597767a662ecde33c3979bf02b793d392aca0403162Wink Saville mPhoneType = phoneType; 3598767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3599767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3600767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3601767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3602767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3603767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void queryCdmaRoamingPreference(Message response) { 3604767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3605767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 3606767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3607767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3608767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3609767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3610767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3611767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3612767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3613767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3614767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3615767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 3616767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3617767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 3618767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3619767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3620767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(cdmaRoamingType); 3621767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3622767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3623767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + cdmaRoamingType); 3624767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3625767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3626767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3627767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3628767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3629767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3630767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 36315284090631e638b916d9a453212e9dc802656a67Wink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 3632767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 36335284090631e638b916d9a453212e9dc802656a67Wink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 3634767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3635767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3636767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(cdmaSubscription); 3637767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3638767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3639767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + cdmaSubscription); 3640767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3641767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3642767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3643767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3644767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3645767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3646767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3647d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville @Override 3648d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville public void getCdmaSubscriptionSource(Message response) { 36495284090631e638b916d9a453212e9dc802656a67Wink Saville RILRequest rr = RILRequest.obtain( 36505284090631e638b916d9a453212e9dc802656a67Wink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 36515284090631e638b916d9a453212e9dc802656a67Wink Saville 3652d31fdf05659bcd87fb8b989931f540f5e739fb22Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 36535284090631e638b916d9a453212e9dc802656a67Wink Saville 36545284090631e638b916d9a453212e9dc802656a67Wink Saville send(rr); 36555284090631e638b916d9a453212e9dc802656a67Wink Saville } 36565284090631e638b916d9a453212e9dc802656a67Wink Saville 36575284090631e638b916d9a453212e9dc802656a67Wink Saville /** 36585284090631e638b916d9a453212e9dc802656a67Wink Saville * {@inheritDoc} 36595284090631e638b916d9a453212e9dc802656a67Wink Saville */ 3660e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void queryTTYMode(Message response) { 3661767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3662767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 3663767a662ecde33c3979bf02b793d392aca0403162Wink Saville 36642e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 36652e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla 3666767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3667767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3668767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3669767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3670767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3671767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3672e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setTTYMode(int ttyMode, Message response) { 3673767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain( 3674767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 3675767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3676767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3677e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville rr.mp.writeInt(ttyMode); 3678767a662ecde33c3979bf02b793d392aca0403162Wink Saville 36792e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 36802e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla + " : " + ttyMode); 36812e896830f83d3398b9dac51ac0e9ad803a5bacdbNaveen Kalla 3682767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3683767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3684767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3685767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 3686767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@inheritDoc} 3687767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 3688767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void 3689767a662ecde33c3979bf02b793d392aca0403162Wink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 3690767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 3691767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3692767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeString(FeatureCode); 3693767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3694767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3695767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " : " + FeatureCode); 3696767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3697767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3698767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3699767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3700767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void getCdmaBroadcastConfig(Message response) { 3701767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 3702767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3703767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3704767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3705767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3706f315238a2b07c7e84f6ade800e504f520d262e66Wink Saville // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig 3707767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { 3708767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 3709767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3710e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville for(int i = 0; i < configValuesArray.length; i++) { 3711767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(configValuesArray[i]); 3712767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3713767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3714e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3715e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 3716767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3717767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3718767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3719e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setCdmaBroadcastActivation(boolean activate, Message response) { 3720767a662ecde33c3979bf02b793d392aca0403162Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 3721767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3722767a662ecde33c3979bf02b793d392aca0403162Wink Saville rr.mp.writeInt(1); 3723e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang rr.mp.writeInt(activate ? 0 :1); 3724767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3725e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3726e66b5c43cb2d0aece7f4a636a2368a9c66c46cf5Wink Saville 3727767a662ecde33c3979bf02b793d392aca0403162Wink Saville send(rr); 3728767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 3729e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3730e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville /** 3731e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville * {@inheritDoc} 3732e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville */ 3733e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void exitEmergencyCallbackMode(Message response) { 3734dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 3735e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3736e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3737e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 3738e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville send(rr); 3739e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 37405284090631e638b916d9a453212e9dc802656a67Wink Saville 3741463f22114587344c96460179069a08d7381fbfd6Jake Hamby public void requestIsimAuthentication(String nonce, Message response) { 3742463f22114587344c96460179069a08d7381fbfd6Jake Hamby RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 3743463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3744463f22114587344c96460179069a08d7381fbfd6Jake Hamby rr.mp.writeString(nonce); 3745463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3746463f22114587344c96460179069a08d7381fbfd6Jake Hamby if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3747463f22114587344c96460179069a08d7381fbfd6Jake Hamby 3748463f22114587344c96460179069a08d7381fbfd6Jake Hamby send(rr); 3749463f22114587344c96460179069a08d7381fbfd6Jake Hamby } 37509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3751