RIL.java revision e287feac673ff68565b766e0e463d105fa9cef9d
1c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 2c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Copyright (C) 2006 The Android Open Source Project 3c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 4c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * you may not use this file except in compliance with the License. 6c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * You may obtain a copy of the License at 7c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 8c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 10c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Unless required by applicable law or agreed to in writing, software 11c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * See the License for the specific language governing permissions and 14c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * limitations under the License. 15c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 16c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 17c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepackage com.android.internal.telephony; 18c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 19c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static com.android.internal.telephony.RILConstants.*; 20c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; 21c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; 22c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; 23c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; 24c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; 25c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; 26c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; 27c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 28c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.BroadcastReceiver; 29c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.Context; 30c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.Intent; 31c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.content.IntentFilter; 32c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.net.ConnectivityManager; 33c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.net.LocalSocket; 34c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.net.LocalSocketAddress; 35c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.AsyncResult; 36c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Handler; 37c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.HandlerThread; 38c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Looper; 39c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Message; 40c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Parcel; 41c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.PowerManager; 42c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.SystemProperties; 43c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.PowerManager.WakeLock; 44c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.telephony.NeighboringCellInfo; 45c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.telephony.PhoneNumberUtils; 465b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingamimport android.telephony.SignalStrength; 47c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.telephony.SmsManager; 48c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.telephony.SmsMessage; 49c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.text.TextUtils; 50c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.util.Log; 51c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 52c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 53c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.gsm.SuppServiceNotification; 54e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.IccCardApplicationStatus; 55c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.cdma.CdmaCallWaitingNotification; 56c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.cdma.CdmaInformationRecords; 57c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.IccRefreshResponse; 58c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 59c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.ByteArrayInputStream; 60c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.DataInputStream; 61c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.FileDescriptor; 62c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.IOException; 63c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.InputStream; 64c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.PrintWriter; 65c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.util.ArrayList; 66c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.util.Collections; 67c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.util.concurrent.atomic.AtomicBoolean; 68c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 69c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/** 70c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@hide} 71c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 72c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleclass RILRequest { 73c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final String LOG_TAG = "RILJ"; 74c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 75c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Class Variables 76c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static int sNextSerial = 0; 77c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static Object sSerialMonitor = new Object(); 78c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static Object sPoolSync = new Object(); 79c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static RILRequest sPool = null; 80c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static int sPoolSize = 0; 81c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static final int MAX_POOL_SIZE = 4; 82c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 83c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Instance Variables 84c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int mSerial; 85c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int mRequest; 86c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message mResult; 87c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Parcel mp; 88c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest mNext; 89c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 90c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 91c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Retrieves a new RILRequest instance from the pool. 92c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 93c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param request RIL_REQUEST_* 94c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param result sent when operation completes 95c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return a RILRequest instance from the pool. 96c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 97c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static RILRequest obtain(int request, Message result) { 98c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = null; 99c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized(sPoolSync) { 101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (sPool != null) { 102c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr = sPool; 103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sPool = rr.mNext; 104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mNext = null; 105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sPoolSize--; 106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (rr == null) { 110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr = new RILRequest(); 111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized(sSerialMonitor) { 114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mSerial = sNextSerial++; 115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mRequest = request; 117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mResult = result; 118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp = Parcel.obtain(); 119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (result != null && result.getTarget() == null) { 121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new NullPointerException("Message target must not be null"); 122c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 123c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 124c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // first elements in any RIL Parcel 125c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(request); 126c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(rr.mSerial); 127c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 128c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return rr; 129c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 130c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 131c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 132c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Returns a RILRequest instance to the pool. 133c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 134c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Note: This should only be called once per use. 135c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 136c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville void release() { 137c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (sPoolSync) { 138c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (sPoolSize < MAX_POOL_SIZE) { 139c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville this.mNext = sPool; 140c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sPool = this; 141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sPoolSize++; 142c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mResult = null; 143c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 147c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private RILRequest() { 148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static void 151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville resetSerial() { 152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized(sSerialMonitor) { 153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sNextSerial = 0; 154c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 156c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String 158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville serialString() { 159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Cheesy way to do %04d 160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville StringBuilder sb = new StringBuilder(8); 161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String sn; 162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sn = Integer.toString(mSerial); 164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 165c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //sb.append("J["); 166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append('['); 167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0, s = sn.length() ; i < 4 - s; i++) { 168c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append('0'); 169c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 170c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 171c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(sn); 172c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(']'); 173c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return sb.toString(); 174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville void 177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville onError(int error, Object ret) { 178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CommandException ex; 179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ex = CommandException.fromRilErrno(error); 181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RIL.RILJ_LOGD) Log.d(LOG_TAG, serialString() + "< " 183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + RIL.requestToString(mRequest) 184c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " error: " + ex); 185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 186c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mResult != null) { 187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville AsyncResult.forMessage(mResult, ret, ex); 188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mResult.sendToTarget(); 189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 191c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mp != null) { 192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mp.recycle(); 193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mp = null; 194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 196c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville} 197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/** 200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * RIL implementation of the CommandsInterface. 201c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * FIXME public only for testing 202c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@hide} 204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 205c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepublic final class RIL extends BaseCommands implements CommandsInterface { 206c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final String LOG_TAG = "RILJ"; 207c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final boolean RILJ_LOGD = true; 208c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final boolean RILJ_LOGV = false; // STOP SHIP if true 209c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 210c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 211c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Wake lock timeout should be longer than the longest timeout in 212c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * the vendor ril. 213c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 214c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static final int DEFAULT_WAKE_LOCK_TIMEOUT = 60000; 215c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 216c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Instance Variables 217c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 218c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville LocalSocket mSocket; 219c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville HandlerThread mSenderThread; 220c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILSender mSender; 221c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Thread mReceiverThread; 222c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILReceiver mReceiver; 223c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville WakeLock mWakeLock; 224c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int mWakeLockTimeout; 225c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // The number of requests pending to be sent out, it increases before calling 226c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // EVENT_SEND and decreases while handling EVENT_SEND. It gets cleared while 227c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // WAKE_LOCK_TIMEOUT occurs. 228c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int mRequestMessagesPending; 229c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // The number of requests sent out but waiting for response. It increases while 230c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // sending request and decreases while handling response. It should match 231c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // mRequestList.size() unless there are requests no replied while 232c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // WAKE_LOCK_TIMEOUT occurs. 233c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int mRequestMessagesWaiting; 234c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 235c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //I'd rather this be LinkedList or something 236c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<RILRequest> mRequestsList = new ArrayList<RILRequest>(); 237c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 238c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Object mLastNITZTimeInfo; 239c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 240c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // When we are testing emergency calls 241c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false); 242c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 243c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Events 244c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 245c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int EVENT_SEND = 1; 246c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int EVENT_WAKE_LOCK_TIMEOUT = 2; 247c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 248c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Constants 249c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 250c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // match with constant in ril.cpp 251c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int RIL_MAX_COMMAND_BYTES = (8 * 1024); 252c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int RESPONSE_SOLICITED = 0; 253c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int RESPONSE_UNSOLICITED = 1; 254c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 255c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final String SOCKET_NAME_RIL = "rild"; 256c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 257c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int SOCKET_OPEN_RETRY_MILLIS = 4 * 1000; 258c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 259c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // The number of the required config values for broadcast SMS stored in the C struct 260c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // RIL_CDMA_BroadcastServiceInfo 261c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static final int CDMA_BSI_NO_OF_INTS_STRUCT = 3; 262c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 263c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31; 264c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 265c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 266c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 267c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void onReceive(Context context, Intent intent) { 268c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 269c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendScreenState(true); 270c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 271c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendScreenState(false); 272c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 273c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, "RIL received unexpected Intent: " + intent.getAction()); 274c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 275c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 276c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }; 277c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 278c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville class RILSender extends Handler implements Runnable { 279c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public RILSender(Looper looper) { 280c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super(looper); 281c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 282c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 283c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Only allocated once 284c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte[] dataLength = new byte[4]; 285c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 286c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Runnable implementation 287c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 288c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville run() { 289c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //setup if needed 290c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 291c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 292c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 293c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Handler implementation 294c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 295c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville handleMessage(Message msg) { 296c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = (RILRequest)(msg.obj); 297c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest req = null; 298c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 299c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch (msg.what) { 300c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case EVENT_SEND: 301c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 302c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * mRequestMessagePending++ already happened for every 303c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * EVENT_SEND, thus we must make sure 304c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * mRequestMessagePending-- happens once and only once 305c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 306c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean alreadySubtracted = false; 307c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 308c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville LocalSocket s; 309c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 310c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = mSocket; 311c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 312c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (s == null) { 313c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 314c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 315c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRequestMessagesPending > 0) 316c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending--; 317c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville alreadySubtracted = true; 318c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 319c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 320c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 321c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mRequestsList) { 322c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestsList.add(rr); 323c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesWaiting++; 324c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 325c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 326c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRequestMessagesPending > 0) 327c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending--; 328c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville alreadySubtracted = true; 329c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 330c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte[] data; 331c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 332c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville data = rr.mp.marshall(); 333c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.recycle(); 334c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp = null; 335c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 336c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (data.length > RIL_MAX_COMMAND_BYTES) { 337c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException( 338c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Parcel larger than max bytes allowed! " 339c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + data.length); 340c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 341c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 342c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // parcel length in big endian 343c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataLength[0] = dataLength[1] = 0; 344c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataLength[2] = (byte)((data.length >> 8) & 0xff); 345c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataLength[3] = (byte)((data.length) & 0xff); 346c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 347c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Log.v(LOG_TAG, "writing packet: " + data.length + " bytes"); 348c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 349c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s.getOutputStream().write(dataLength); 350c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s.getOutputStream().write(data); 351c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (IOException ex) { 352c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "IOException", ex); 353c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville req = findAndRemoveRequestFromList(rr.mSerial); 354c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // make sure this request has not already been handled, 355c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // eg, if RILReceiver cleared the list. 356c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (req != null || !alreadySubtracted) { 357c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 358c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 359c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 360c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (RuntimeException exc) { 361c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Uncaught exception ", exc); 362c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville req = findAndRemoveRequestFromList(rr.mSerial); 363c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // make sure this request has not already been handled, 364c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // eg, if RILReceiver cleared the list. 365c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (req != null || !alreadySubtracted) { 366c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(GENERIC_FAILURE, null); 367c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 368c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 369c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } finally { 370c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Note: We are "Done" only if there are no outstanding 371c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // requests or replies. Thus this code path will only release 372c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // the wake lock on errors. 373c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville releaseWakeLockIfDone(); 374c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 375c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 376c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!alreadySubtracted && mRequestMessagesPending > 0) { 377c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending--; 378c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 379c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 380c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 381c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 382c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case EVENT_WAKE_LOCK_TIMEOUT: 383c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Haven't heard back from the last request. Assume we're 384c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // not getting a response and release the wake lock. 385c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mWakeLock) { 386c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mWakeLock.isHeld()) { 387c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // The timer of WAKE_LOCK_TIMEOUT is reset with each 388c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // new send request. So when WAKE_LOCK_TIMEOUT occurs 389c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // all requests in mRequestList already waited at 390c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // least DEFAULT_WAKE_LOCK_TIMEOUT but no response. 391c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Reset mRequestMessagesWaiting to enable 392c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // releaseWakeLockIfDone(). 393c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // 394c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Note: Keep mRequestList so that delayed response 395c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // can still be handled when response finally comes. 396c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRequestMessagesWaiting != 0) { 397c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, "NOTE: mReqWaiting is NOT 0 but" 398c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + mRequestMessagesWaiting + " at TIMEOUT, reset!" 399c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " There still msg waitng for response"); 400c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 401c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesWaiting = 0; 402c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 403c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) { 404c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mRequestsList) { 405c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int count = mRequestsList.size(); 406c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 407c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " mRequestList=" + count); 408c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 409c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < count; i++) { 410c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr = mRequestsList.get(i); 411c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " 412c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest)); 413c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 414c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 415c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 416c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 417c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // mRequestMessagesPending shows how many 418c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // requests are waiting to be sent (and before 419c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // to be added in request list) since star the 420c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // WAKE_LOCK_TIMEOUT timer. Since WAKE_LOCK_TIMEOUT 421c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // is the expected time to get response, all requests 422c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // should already sent out (i.e. 423c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // mRequestMessagesPending is 0 )while TIMEOUT occurs. 424c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRequestMessagesPending != 0) { 425c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "ERROR: mReqPending is NOT 0 but" 426c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + mRequestMessagesPending + " at TIMEOUT, reset!"); 427c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending = 0; 428c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 429c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 430c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLock.release(); 431c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 432c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 433c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 434c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 435c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 436c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 437c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 438c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 439c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Reads in a single RIL message off the wire. A RIL message consists 440c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * of a 4-byte little-endian length and a subsequent series of bytes. 441c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * The final message (length header omitted) is read into 442c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * <code>buffer</code> and the length of the final message (less header) 443c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * is returned. A return value of -1 indicates end-of-stream. 444c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 445c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param is non-null; Stream to read from 446c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param buffer Buffer to fill in. Must be as large as maximum 447c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * message size, or an ArrayOutOfBounds exception will be thrown. 448c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return Length of message less header, or -1 on end of stream. 449c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @throws IOException 450c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 451c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private static int readRilMessage(InputStream is, byte[] buffer) 452c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throws IOException { 453c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int countRead; 454c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int offset; 455c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int remaining; 456c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int messageLength; 457c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 458c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // First, read in the length of the message 459c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville offset = 0; 460c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville remaining = 4; 461c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville do { 462c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville countRead = is.read(buffer, offset, remaining); 463c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 464c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (countRead < 0 ) { 465c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Hit EOS reading message length"); 466c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return -1; 467c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 468c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 469c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville offset += countRead; 470c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville remaining -= countRead; 471c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } while (remaining > 0); 472c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 473c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville messageLength = ((buffer[0] & 0xff) << 24) 474c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | ((buffer[1] & 0xff) << 16) 475c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | ((buffer[2] & 0xff) << 8) 476c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | (buffer[3] & 0xff); 477c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 478c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Then, re-use the buffer and read in the message itself 479c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville offset = 0; 480c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville remaining = messageLength; 481c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville do { 482c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville countRead = is.read(buffer, offset, remaining); 483c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 484c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (countRead < 0 ) { 485c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Hit EOS reading message. messageLength=" + messageLength 486c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " remaining=" + remaining); 487c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return -1; 488c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 489c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 490c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville offset += countRead; 491c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville remaining -= countRead; 492c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } while (remaining > 0); 493c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 494c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return messageLength; 495c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 496c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 497c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville class RILReceiver implements Runnable { 498c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte[] buffer; 499c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 500c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILReceiver() { 501c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville buffer = new byte[RIL_MAX_COMMAND_BYTES]; 502c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 503c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 504c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 505c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville run() { 506c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int retryCount = 0; 507c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 508c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try {for (;;) { 509c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville LocalSocket s = null; 510c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville LocalSocketAddress l; 511c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 512c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 513c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = new LocalSocket(); 514c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville l = new LocalSocketAddress(SOCKET_NAME_RIL, 515c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville LocalSocketAddress.Namespace.RESERVED); 516c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s.connect(l); 517c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (IOException ex){ 518c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 519c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (s != null) { 520c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s.close(); 521c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 522c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (IOException ex2) { 523c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //ignore failure to close after failure to connect 524c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 525c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 526c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // don't print an error message after the the first time 527c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // or after the 8th time 528c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 529c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (retryCount == 8) { 530c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e (LOG_TAG, 531c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Couldn't find '" + SOCKET_NAME_RIL 532c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "' socket after " + retryCount 533c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " times, continuing to retry silently"); 534c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (retryCount > 0 && retryCount < 8) { 535c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.i (LOG_TAG, 536c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Couldn't find '" + SOCKET_NAME_RIL 537c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "' socket; retrying after timeout"); 538c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 539c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 540c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 541c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); 542c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (InterruptedException er) { 543c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 544c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 545c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville retryCount++; 546c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville continue; 547c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 548c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 549c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville retryCount = 0; 550c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 551c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSocket = s; 552c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.i(LOG_TAG, "Connected to '" + SOCKET_NAME_RIL + "' socket"); 553c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 554c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int length = 0; 555c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 556c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville InputStream is = mSocket.getInputStream(); 557c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 558c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (;;) { 559c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Parcel p; 560c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 561c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville length = readRilMessage(is, buffer); 562c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 563c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (length < 0) { 564c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // End-of-stream reached 565c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 566c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 567c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 568c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville p = Parcel.obtain(); 569c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville p.unmarshall(buffer, 0, length); 570c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville p.setDataPosition(0); 571c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 572c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Log.v(LOG_TAG, "Read packet: " + length + " bytes"); 573c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 574c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processResponse(p); 575c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville p.recycle(); 576c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 577c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (java.io.IOException ex) { 578c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.i(LOG_TAG, "'" + SOCKET_NAME_RIL + "' socket closed", 579c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ex); 580c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (Throwable tr) { 581c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Uncaught exception read length=" + length + 582c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Exception:" + tr.toString()); 583c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 584c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 585c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.i(LOG_TAG, "Disconnected from '" + SOCKET_NAME_RIL 586c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "' socket"); 587c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 588c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setRadioState (RadioState.RADIO_UNAVAILABLE); 589c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 590c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 591c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSocket.close(); 592c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (IOException ex) { 593c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 594c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 595c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSocket = null; 596c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest.resetSerial(); 597c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 598c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Clear request list on close 599c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville clearRequestsList(RADIO_NOT_AVAILABLE, false); 600c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }} catch (Throwable tr) { 601c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG,"Uncaught exception", tr); 602c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 603c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 604c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /* We're disconnected so we don't know the ril version */ 605c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notifyRegistrantsRilConnectionChanged(-1); 606c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 607c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 608c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 609c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 610c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 611c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Constructors 612c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 613c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { 614c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super(context); 615c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) { 616c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("RIL(context, preferredNetworkType=" + preferredNetworkType + 617c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " cdmaSubscription=" + cdmaSubscription + ")"); 618c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 619c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCdmaSubscription = cdmaSubscription; 620c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mPreferredNetworkType = preferredNetworkType; 621c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mPhoneType = RILConstants.NO_PHONE; 622c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 623c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 624c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); 625c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLock.setReferenceCounted(false); 626c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLockTimeout = SystemProperties.getInt(TelephonyProperties.PROPERTY_WAKE_LOCK_TIMEOUT, 627c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville DEFAULT_WAKE_LOCK_TIMEOUT); 628c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending = 0; 629c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesWaiting = 0; 630c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 631c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSenderThread = new HandlerThread("RILSender"); 632c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSenderThread.start(); 633c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 634c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Looper looper = mSenderThread.getLooper(); 635c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSender = new RILSender(looper); 636c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 637c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ConnectivityManager cm = (ConnectivityManager)context.getSystemService( 638c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Context.CONNECTIVITY_SERVICE); 639c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false) { 640c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("Not starting RILReceiver: wifi-only"); 641c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 642c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("Starting RILReceiver"); 643c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mReceiver = new RILReceiver(); 644c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mReceiverThread = new Thread(mReceiver, "RILReceiver"); 645c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mReceiverThread.start(); 646c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 647c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville IntentFilter filter = new IntentFilter(); 648c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville filter.addAction(Intent.ACTION_SCREEN_ON); 649c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville filter.addAction(Intent.ACTION_SCREEN_OFF); 650c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville context.registerReceiver(mIntentReceiver, filter); 651c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 652c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 653c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 654c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** CommandsInterface implementation 655c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 656c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getVoiceRadioTechnology(Message result) { 657c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result); 658c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 659c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 660c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 661c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 662c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 663c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 664c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 665c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 666c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setOnNITZTime(Handler h, int what, Object obj) { 667c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville super.setOnNITZTime(h, what, obj); 668c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 669c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Send the last NITZ time if we have it 670c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mLastNITZTimeInfo != null) { 671c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mNITZTimeRegistrant 672c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrant( 673c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, mLastNITZTimeInfo, null)); 674c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mLastNITZTimeInfo = null; 675c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 676c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 677c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 678c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 679c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIccCardStatus(Message result) { 680c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 681c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 682c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); 683c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 684c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 685c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 686c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 687c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 688c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 689c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 690c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPin(String pin, Message result) { 691c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPinForApp(pin, null, result); 692c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 693c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 694c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 695c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPinForApp(String pin, String aid, Message result) { 696c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 697c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 698c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); 699c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 700c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 701c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 702c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 703c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pin); 704c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 705c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 706c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 707c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 708c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 709c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 710c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPuk(String puk, String newPin, Message result) { 711c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPukForApp(puk, newPin, null, result); 712c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 713c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 714c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 715c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 716c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 717c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 718c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); 719c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 720c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 721c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 722c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 723c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(puk); 724c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(newPin); 725c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 726c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 727c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 728c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 729c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 730c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 731c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPin2(String pin, Message result) { 732c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPin2ForApp(pin, null, result); 733c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 734c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 735c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 736c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPin2ForApp(String pin, String aid, Message result) { 737c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 738c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 739c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); 740c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 741c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 742c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 743c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 744c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pin); 745c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 746c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 747c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 748c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 749c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 750c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 751c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPuk2(String puk2, String newPin2, Message result) { 752c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPuk2ForApp(puk2, newPin2, null, result); 753c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 754c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 755c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 756c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyIccPuk2ForApp(String puk, String newPin2, String aid, Message result) { 757c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 758c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 759c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); 760c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 761c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 762c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 763c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 764c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(puk); 765c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(newPin2); 766c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 767c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 768c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 769c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 770c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 771c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 772c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPin(String oldPin, String newPin, Message result) { 773c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPinForApp(oldPin, newPin, null, result); 774c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 775c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 776c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 777c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPinForApp(String oldPin, String newPin, String aid, Message result) { 778c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 779c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 780c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); 781c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 782c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 783c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 784c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 785c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(oldPin); 786c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(newPin); 787c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 788c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 789c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 790c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 791c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 792c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 793c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPin2(String oldPin2, String newPin2, Message result) { 794c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPin2ForApp(oldPin2, newPin2, null, result); 795c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 796c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 797c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override public void 798c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeIccPin2ForApp(String oldPin2, String newPin2, String aid, Message result) { 799c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 800c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 801c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); 802c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 803c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 804c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 805c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 806c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(oldPin2); 807c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(newPin2); 808c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 809c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 810c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 811c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 812c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 813c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 814c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville changeBarringPassword(String facility, String oldPwd, String newPwd, Message result) { 815c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_BARRING_PASSWORD, result); 816c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 817c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 818c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 819c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 820c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(facility); 821c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(oldPwd); 822c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(newPwd); 823c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 824c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 825c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 826c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 827c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 828c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville supplyNetworkDepersonalization(String netpin, Message result) { 829c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); 830c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 831c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 832c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 833c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 834c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(netpin); 835c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 836c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 837c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 838c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 839c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 840c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getCurrentCalls (Message result) { 841c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); 842c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 843c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 844c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 845c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 846c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 847c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 848c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Deprecated public void 849c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getPDPContextList(Message result) { 850c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getDataCallList(result); 851c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 852c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 853c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 854c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getDataCallList(Message result) { 855c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); 856c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 857c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 858c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 859c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 860c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 861c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 862c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 863c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dial (String address, int clirMode, Message result) { 864c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dial(address, clirMode, null, result); 865c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 866c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 867c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 868c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 869c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); 870c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 871c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(address); 872c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(clirMode); 873c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(0); // UUS information is absent 874c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 875c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (uusInfo == null) { 876c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(0); // UUS information is absent 877c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 878c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); // UUS information is present 879c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(uusInfo.getType()); 880c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(uusInfo.getDcs()); 881c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByteArray(uusInfo.getUserData()); 882c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 883c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 884c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 885c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 886c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 887c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 888c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 889c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 890c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIMSI(Message result) { 891c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIMSIForApp(null, result); 892c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 893c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 894c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 895c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIMSIForApp(String aid, Message result) { 896c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); 897c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 898c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 899c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 900c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 901c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + 902c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "> getIMSI: " + requestToString(rr.mRequest) 903c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " aid: " + aid); 904c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 905c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 906c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 907c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 908c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 909c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIMEI(Message result) { 910c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEI, result); 911c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 912c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 913c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 914c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 915c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 916c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 917c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 918c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getIMEISV(Message result) { 919c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMEISV, result); 920c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 921c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 922c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 923c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 924c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 925c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 926c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 927c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 928c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville hangupConnection (int gsmIndex, Message result) { 929c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("hangupConnection: gsmIndex=" + gsmIndex); 930c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 931c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); 932c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 933c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + 934c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville gsmIndex); 935c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 936c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 937c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(gsmIndex); 938c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 939c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 940c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 941c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 942c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 943c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville hangupWaitingOrBackground (Message result) { 944c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, 945c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result); 946c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 947c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 948c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 949c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 950c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 951c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 952c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 953c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville hangupForegroundResumeBackground (Message result) { 954c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 955c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain( 956c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, 957c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result); 958c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 959c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 960c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 961c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 962c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 963c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 964c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switchWaitingOrHoldingAndActive (Message result) { 965c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 966c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain( 967c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, 968c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result); 969c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 970c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 971c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 972c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 973c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 974c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 975c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville conference (Message result) { 976c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 977c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); 978c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 979c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 980c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 981c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 982c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 983c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 984c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 985c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setPreferredVoicePrivacy(boolean enable, Message result) { 986c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, 987c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result); 988c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 989c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 990c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(enable ? 1:0); 991c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 992c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 993c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 994c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 995c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getPreferredVoicePrivacy(Message result) { 996c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, 997c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result); 998c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 999c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1000c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1001c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1002c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville separateConnection (int gsmIndex, Message result) { 1003c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1004c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); 1005c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1006c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1007c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + gsmIndex); 1008c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1009c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1010c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(gsmIndex); 1011c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1012c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1013c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1014c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1015c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1016c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acceptCall (Message result) { 1017c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1018c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_ANSWER, result); 1019c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1020c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1021c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1022c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1023c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1024c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1025c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1026c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rejectCall (Message result) { 1027c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1028c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_UDUB, result); 1029c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1030c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1031c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1032c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1033c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1034c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1035c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1036c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville explicitCallTransfer (Message result) { 1037c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1038c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_EXPLICIT_CALL_TRANSFER, result); 1039c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1040c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1041c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1042c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1043c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1044c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1045c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1046c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getLastCallFailCause (Message result) { 1047c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1048c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); 1049c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1050c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1051c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1052c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1053c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1054c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1055c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1056c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @deprecated 1057c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1058c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1059c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getLastPdpFailCause (Message result) { 1060c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getLastDataCallFailCause (result); 1061c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1062c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1063c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1064c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * The preferred new alternative to getLastPdpFailCause 1065c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1066c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1067c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getLastDataCallFailCause (Message result) { 1068c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1069c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); 1070c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1071c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1072c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1073c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1074c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1075c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1076c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1077c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setMute (boolean enableMute, Message response) { 1078c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1079c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); 1080c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1081c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1082c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + enableMute); 1083c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1084c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1085c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(enableMute ? 1 : 0); 1086c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1087c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1088c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1089c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1090c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1091c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getMute (Message response) { 1092c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1093c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); 1094c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1095c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1096c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1097c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1098c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1099c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getSignalStrength (Message result) { 1102c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); 1104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getVoiceRegistrationState (Message result) { 1112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_VOICE_REGISTRATION_STATE, result); 1114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getDataRegistrationState (Message result) { 1122c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1123c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_DATA_REGISTRATION_STATE, result); 1124c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1125c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1126c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1127c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1128c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1129c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1130c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1131c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getOperator(Message result) { 1132c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1133c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); 1134c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1135c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1136c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1137c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1138c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1139c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1140c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendDtmf(char c, Message result) { 1142c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1143c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_DTMF, result); 1144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1147c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Character.toString(c)); 1148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville startDtmf(char c, Message result) { 1154c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_START, result); 1156c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Character.toString(c)); 1160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1165c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville stopDtmf(Message result) { 1166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_DTMF_STOP, result); 1168c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1169c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1170c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1171c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1172c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1173c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendBurstDtmf(String dtmfString, int on, int off, Message result) { 1176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BURST_DTMF, result); 1177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(3); 1179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(dtmfString); 1180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(on)); 1181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(off)); 1182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1184c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + dtmfString); 1185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1186c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendSMS (String smscPDU, String pdu, Message result) { 1191c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); 1193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 1195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(smscPDU); 1196c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pdu); 1197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1201c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1202c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendCdmaSms(byte[] pdu, Message result) { 1205c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int address_nbr_of_digits; 1206c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int subaddr_nbr_of_digits; 1207c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int bearerDataLength; 1208c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ByteArrayInputStream bais = new ByteArrayInputStream(pdu); 1209c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville DataInputStream dis = new DataInputStream(bais); 1210c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1211c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1212c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); 1213c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1214c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 1215c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.readInt()); //teleServiceId 1216c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte((byte) dis.readInt()); //servicePresent 1217c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.readInt()); //serviceCategory 1218c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.read()); //address_digit_mode 1219c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.read()); //address_nbr_mode 1220c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.read()); //address_ton 1221c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.read()); //address_nbr_plan 1222c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville address_nbr_of_digits = (byte) dis.read(); 1223c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte((byte) address_nbr_of_digits); 1224c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for(int i=0; i < address_nbr_of_digits; i++){ 1225c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte(dis.readByte()); // address_orig_bytes[i] 1226c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1227c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(dis.read()); //subaddressType 1228c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte((byte) dis.read()); //subaddr_odd 1229c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville subaddr_nbr_of_digits = (byte) dis.read(); 1230c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte((byte) subaddr_nbr_of_digits); 1231c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for(int i=0; i < subaddr_nbr_of_digits; i++){ 1232c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte(dis.readByte()); //subaddr_orig_bytes[i] 1233c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1234c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1235c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville bearerDataLength = dis.read(); 1236c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(bearerDataLength); 1237c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for(int i=0; i < bearerDataLength; i++){ 1238c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByte(dis.readByte()); //bearerData[i] 1239c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1240c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }catch (IOException ex){ 1241c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("sendSmsCdma: conversion from input stream to object failed: " 1242c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + ex); 1243c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1244c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1245c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1246c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1247c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1248c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1249c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1250c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void deleteSmsOnSim(int index, Message response) { 1251c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, 1252c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1253c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1254c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1255c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(index); 1256c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1257c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (false) { 1258c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1259c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 1260c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + index); 1261c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1262c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1263c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1264c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1265c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1266c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void deleteSmsOnRuim(int index, Message response) { 1267c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, 1268c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1269c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1270c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1271c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(index); 1272c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1273c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (false) { 1274c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1275c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 1276c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + index); 1277c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1278c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1279c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1280c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1281c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1282c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 1283c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville status = translateStatus(status); 1284c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1285c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, 1286c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1287c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1288c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(status); 1289c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pdu); 1290c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(smsc); 1291c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1292c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (false) { 1293c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1294c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 1295c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + status); 1296c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1297c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1298c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1299c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1300c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1301c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void writeSmsToRuim(int status, String pdu, Message response) { 1302c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville status = translateStatus(status); 1303c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1304c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, 1305c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1306c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1307c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(status); 1308c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pdu); 1309c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1310c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (false) { 1311c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1312c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 1313c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + status); 1314c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1315c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1316c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1317c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1318c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1319c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1320c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Translates EF_SMS status bits to a status value compatible with 1321c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * SMS AT commands. See TS 27.005 3.1. 1322c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1323c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private int translateStatus(int status) { 1324c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch(status & 0x7) { 1325c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case SmsManager.STATUS_ON_ICC_READ: 1326c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return 1; 1327c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case SmsManager.STATUS_ON_ICC_UNREAD: 1328c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return 0; 1329c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case SmsManager.STATUS_ON_ICC_SENT: 1330c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return 3; 1331c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case SmsManager.STATUS_ON_ICC_UNSENT: 1332c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return 2; 1333c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1334c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1335c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Default to READ. 1336c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return 1; 1337c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1338c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1339c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1340c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setupDataCall(String radioTechnology, String profile, String apn, 1341c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String user, String password, String authType, String protocol, 1342c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message result) { 1343c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1344c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); 1345c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1346c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(7); 1347c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1348c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(radioTechnology); 1349c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(profile); 1350c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(apn); 1351c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(user); 1352c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(password); 1353c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(authType); 1354c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(protocol); 1355c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1356c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1357c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) + " " + radioTechnology + " " 1358c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + profile + " " + apn + " " + user + " " 1359c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + password + " " + authType + " " + protocol); 1360c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1361c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1362c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1363c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1364c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1365c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville deactivateDataCall(int cid, int reason, Message result) { 1366c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1367c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); 1368c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1369c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 1370c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(cid)); 1371c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(reason)); 1372c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1373c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + 1374c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville requestToString(rr.mRequest) + " " + cid + " " + reason); 1375c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1376c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1377c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1378c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1379c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1380c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setRadioPower(boolean on, Message result) { 1381c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); 1382c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1383c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1384c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(on ? 1 : 0); 1385c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1386c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) { 1387c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1388c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + (on ? " on" : " off")); 1389c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1390c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1391c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1392c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1393c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1394c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1395c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setSuppServiceNotifications(boolean enable, Message result) { 1396c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1397c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); 1398c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1399c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1400c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(enable ? 1 : 0); 1401c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1402c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1403c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest)); 1404c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1405c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1406c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1407c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1408c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1409c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result) { 1410c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1411c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); 1412c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1413c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 1414c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(success ? 1 : 0); 1415c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cause); 1416c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1417c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1418c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + success + " " + cause); 1419c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1420c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1421c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1422c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1423c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1424c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result) { 1425c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1426c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); 1427c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1428c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass 1429c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // cause code according to X.S004-550E 1430c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cause); 1431c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1432c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1433c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + success + " " + cause); 1434c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1435c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1436c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1437c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1438c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1439c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result) { 1440c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1441c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, result); 1442c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1443c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 1444c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(success ? "1" : "0"); 1445c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(ackPdu); 1446c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1447c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1448c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + ' ' + success + " [" + ackPdu + ']'); 1449c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1450c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1451c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1452c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1453c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1454c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville iccIO (int command, int fileid, String path, int p1, int p2, int p3, 1455c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String data, String pin2, Message result) { 1456c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville iccIOForApp(command, fileid, path, p1, p2, p3, data, pin2, null, result); 1457c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1458c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1459c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville iccIOForApp (int command, int fileid, String path, int p1, int p2, int p3, 1460c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String data, String pin2, String aid, Message result) { 1461c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //Note: This RIL request has not been renamed to ICC, 1462c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // but this request is also valid for SIM and RUIM 1463c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1464c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); 1465c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1466c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(command); 1467c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(fileid); 1468c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(path); 1469c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(p1); 1470c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(p2); 1471c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(p3); 1472c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(data); 1473c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(pin2); 1474c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(aid); 1475c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1476c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: " 1477c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 1478c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " 0x" + Integer.toHexString(command) 1479c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " 0x" + Integer.toHexString(fileid) + " " 1480c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " path: " + path + "," 1481c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + p1 + "," + p2 + "," + p3 1482c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " aid: " + aid); 1483c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1484c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1485c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1486c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1487c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1488c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getCLIR(Message result) { 1489c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1490c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); 1491c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1492c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1493c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1494c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1495c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1496c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1497c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1498c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setCLIR(int clirMode, Message result) { 1499c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1500c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); 1501c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1502c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // count ints 1503c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1504c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1505c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(clirMode); 1506c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1507c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1508c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + clirMode); 1509c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1510c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1511c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1512c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1513c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1514c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryCallWaiting(int serviceClass, Message response) { 1515c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1516c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); 1517c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1518c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1519c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(serviceClass); 1520c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1521c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1522c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + serviceClass); 1523c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1524c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1525c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1526c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1527c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1528c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setCallWaiting(boolean enable, int serviceClass, Message response) { 1529c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1530c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); 1531c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1532c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); 1533c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(enable ? 1 : 0); 1534c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(serviceClass); 1535c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1536c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1537c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + enable + ", " + serviceClass); 1538c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1539c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1540c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1541c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1542c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1543c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setNetworkSelectionModeAutomatic(Message response) { 1544c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1545c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, 1546c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1547c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1548c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1549c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1550c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1551c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1552c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1553c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1554c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setNetworkSelectionModeManual(String operatorNumeric, Message response) { 1555c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1556c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, 1557c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1558c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1559c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1560c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + operatorNumeric); 1561c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1562c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(operatorNumeric); 1563c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1564c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1565c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1566c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1567c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1568c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getNetworkSelectionMode(Message response) { 1569c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1570c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, 1571c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1572c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1573c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1574c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1575c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1576c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1577c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1578c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1579c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getAvailableNetworks(Message response) { 1580c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1581c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, 1582c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1583c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1584c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1585c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1586c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1587c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1588c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1589c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1590c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setCallForward(int action, int cfReason, int serviceClass, 1591c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String number, int timeSeconds, Message response) { 1592c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1593c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); 1594c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1595c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(action); 1596c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cfReason); 1597c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(serviceClass); 1598c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 1599c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(number); 1600c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt (timeSeconds); 1601c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1602c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1603c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + action + " " + cfReason + " " + serviceClass 1604c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + timeSeconds); 1605c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1606c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1607c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1608c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1609c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1610c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryCallForwardStatus(int cfReason, int serviceClass, 1611c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String number, Message response) { 1612c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1613c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); 1614c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1615c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(2); // 2 is for query action, not in used anyway 1616c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cfReason); 1617c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(serviceClass); 1618c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); 1619c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(number); 1620c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt (0); 1621c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1622c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1623c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + cfReason + " " + serviceClass); 1624c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1625c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1626c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1627c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1628c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1629c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryCLIP(Message response) { 1630c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1631c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_CLIP, response); 1632c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1633c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1634c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1635c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1636c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1637c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1638c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1639c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1640c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getBasebandVersion (Message response) { 1641c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1642c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); 1643c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1644c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1645c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1646c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1647c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1648c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1649c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 1650c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1651c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryFacilityLock(String facility, String password, int serviceClass, 1652c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message response) { 1653c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryFacilityLockForApp(facility, password, serviceClass, null, response); 1654c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1655c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1656c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 1657c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1658c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, 1659c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message response) { 1660c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response); 1661c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1662c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1663c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1664c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // count strings 1665c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(4); 1666c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1667c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(facility); 1668c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(password); 1669c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1670c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(serviceClass)); 1671c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(appId); 1672c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1673c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1674c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1675c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1676c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 1677c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1678c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setFacilityLock (String facility, boolean lockState, String password, 1679c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int serviceClass, Message response) { 1680c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setFacilityLockForApp(facility, lockState, password, serviceClass, null, response); 1681c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1682c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1683c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 1684c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1685c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setFacilityLockForApp(String facility, boolean lockState, String password, 1686c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int serviceClass, String appId, Message response) { 1687c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String lockString; 1688c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1689c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response); 1690c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1691c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1692c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1693c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // count strings 1694c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(5); 1695c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1696c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(facility); 1697c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville lockString = (lockState)?"1":"0"; 1698c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(lockString); 1699c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(password); 1700c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(Integer.toString(serviceClass)); 1701c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(appId); 1702c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1703c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1704c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1705c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1706c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1707c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 1708c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendUSSD (String ussdString, Message response) { 1709c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1710c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); 1711c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1712c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1713c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + ussdString); 1714c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1715c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(ussdString); 1716c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1717c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1718c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1719c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1720c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // inherited javadoc suffices 1721c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void cancelPendingUssd (Message response) { 1722c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1723c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_CANCEL_USSD, response); 1724c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1725c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() 1726c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "> " + requestToString(rr.mRequest)); 1727c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1728c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1729c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1730c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1731c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1732c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void resetRadio(Message result) { 1733c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1734c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); 1735c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1736c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1737c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1738c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1739c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1740c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1741c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void invokeOemRilRequestRaw(byte[] data, Message response) { 1742c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1743c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); 1744c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1745c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1746c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "[" + IccUtils.bytesToHexString(data) + "]"); 1747c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1748c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeByteArray(data); 1749c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1750c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1751c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1752c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1753c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1754c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void invokeOemRilRequestStrings(String[] strings, Message response) { 1755c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1756c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); 1757c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1758c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1759c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1760c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeStringArray(strings); 1761c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1762c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1763c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1764c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1765c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1766c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Assign a specified band for RF configuration. 1767c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 1768c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param bandMode one of BM_*_BAND 1769c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param response is callback message 1770c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1771c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setBandMode (int bandMode, Message response) { 1772c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1773c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_SET_BAND_MODE, response); 1774c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1775c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1776c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(bandMode); 1777c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1778c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1779c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + bandMode); 1780c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1781c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1782c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1783c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1784c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1785c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Query the list of band mode supported by RF. 1786c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 1787c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param response is callback message 1788c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)response.obj).result is an int[] with every 1789c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * element representing one avialable BM_*_BAND 1790c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1791c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void queryAvailableBandMode (Message response) { 1792c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr 1793c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE, 1794c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1795c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1796c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1797c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1798c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1799c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1800c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1801c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1802c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1803c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1804c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void sendTerminalResponse(String contents, Message response) { 1805c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1806c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE, response); 1807c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1808c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1809c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1810c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(contents); 1811c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1812c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1813c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1814c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1815c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1816c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1817c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void sendEnvelope(String contents, Message response) { 1818c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1819c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND, response); 1820c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1821c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1822c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1823c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(contents); 1824c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1825c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1826c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1827c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1828c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1829c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1830c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void sendEnvelopeWithStatus(String contents, Message response) { 1831c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1832c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, response); 1833c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1834c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1835c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + '[' + contents + ']'); 1836c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1837c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(contents); 1838c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1839c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1840c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1841c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1842c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1843c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1844c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void handleCallSetupRequestFromSim( 1845c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean accept, Message response) { 1846c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1847c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1848c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM, 1849c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response); 1850c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1851c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1852c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1853c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int[] param = new int[1]; 1854c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville param[0] = accept ? 1 : 0; 1855c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeIntArray(param); 1856c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1857c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1858c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1859c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1860c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1861c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1862c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 1863c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setCurrentPreferredNetworkType() { 1864c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("setCurrentPreferredNetworkType: " + mSetPreferredNetworkType); 1865c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setPreferredNetworkType(mSetPreferredNetworkType, null); 1866c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1867c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private int mSetPreferredNetworkType; 1868c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1869c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1870c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1871c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1872c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setPreferredNetworkType(int networkType , Message response) { 1873c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1874c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response); 1875c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1876c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1877c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(networkType); 1878c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1879c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSetPreferredNetworkType = networkType; 1880c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mPreferredNetworkType = networkType; 1881c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1882c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1883c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + networkType); 1884c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1885c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1886c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1887c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1888c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1889c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1890c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1891c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getPreferredNetworkType(Message response) { 1892c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1893c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, response); 1894c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1895c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1896c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1897c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1898c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1899c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1900c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1901c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1902c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1903c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getNeighboringCids(Message response) { 1904c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 1905c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_GET_NEIGHBORING_CELL_IDS, response); 1906c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1907c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1908c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1909c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1910c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1911c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1912c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1913c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1914c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1915c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setLocationUpdates(boolean enable, Message response) { 1916c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); 1917c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1918c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(enable ? 1 : 0); 1919c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1920c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1921c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) + ": " + enable); 1922c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1923c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1924c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1925c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1926c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1927c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1928c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1929c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getSmscAddress(Message result) { 1930c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SMSC_ADDRESS, result); 1931c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1932c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1933c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1934c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1935c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1936c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1937c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1938c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1939c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1940c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setSmscAddress(String address, Message result) { 1941c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS, result); 1942c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1943c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(address); 1944c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1945c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 1946c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + address); 1947c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1948c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1949c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1950c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1951c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1952c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1953c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1954c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void reportSmsMemoryStatus(boolean available, Message result) { 1955c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, result); 1956c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 1957c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(available ? 1 : 0); 1958c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1959c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " 1960c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) + ": " + available); 1961c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1962c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1963c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1964c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1965c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1966c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1967c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1968c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void reportStkServiceIsRunning(Message result) { 1969c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, result); 1970c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1971c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1972c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1973c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1974c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1975c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1976c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1977c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1978c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1979c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getGsmBroadcastConfig(Message response) { 1980c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_GET_BROADCAST_CONFIG, response); 1981c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1982c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 1983c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1984c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 1985c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 1986c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1987c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 1988c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 1989c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 1990c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 1991c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_SET_BROADCAST_CONFIG, response); 1992c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1993c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numOfConfig = config.length; 1994c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(numOfConfig); 1995c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 1996c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for(int i = 0; i < numOfConfig; i++) { 1997c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(config[i].getFromServiceId()); 1998c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(config[i].getToServiceId()); 1999c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(config[i].getFromCodeScheme()); 2000c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(config[i].getToCodeScheme()); 2001c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(config[i].isSelected() ? 1 : 0); 2002c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2003c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2004c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) { 2005c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 2006c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " with " + numOfConfig + " configs : "); 2007c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < numOfConfig; i++) { 2008c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog(config[i].toString()); 2009c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2010c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2011c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2012c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 2013c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2014c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2015c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 2016c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 2017c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 2018c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setGsmBroadcastActivation(boolean activate, Message response) { 2019c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_GSM_BROADCAST_ACTIVATION, response); 2020c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2021c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 2022c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(activate ? 0 : 1); 2023c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2024c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 2025c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2026c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 2027c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2028c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2029c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //***** Private Methods 2030c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2031c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void sendScreenState(boolean on) { 2032c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); 2033c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 2034c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(on ? 1 : 0); 2035c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2036c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() 2037c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + "> " + requestToString(rr.mRequest) + ": " + on); 2038c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2039c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 2040c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2041c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2042c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville protected void 2043c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville onRadioAvailable() { 2044c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // In case screen state was lost (due to process crash), 2045c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // this ensures that the RIL knows the correct screen state. 2046c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2047c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // TODO: Should query Power Manager and send the actual 2048c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // screen state. Just send true for now. 2049c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendScreenState(true); 2050c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2051c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2052c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private RadioState getRadioStateFromInt(int stateInt) { 2053c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RadioState state; 2054c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2055c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /* RIL_RadioState ril.h */ 2056c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch(stateInt) { 2057c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case 0: state = RadioState.RADIO_OFF; break; 2058c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case 1: state = RadioState.RADIO_UNAVAILABLE; break; 2059c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case 10: state = RadioState.RADIO_ON; break; 2060c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2061c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville default: 2062c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException( 2063c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Unrecognized RIL_RadioState: " + stateInt); 2064c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2065c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return state; 2066c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2067c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2068c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void switchToRadioState(RadioState newState) { 2069c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setRadioState(newState); 2070c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2071c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2072c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 2073c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Holds a PARTIAL_WAKE_LOCK whenever 2074c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * a) There is outstanding RIL request sent to RIL deamon and no replied 2075c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * b) There is a request pending to be sent out. 2076c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 2077c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't 2078c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * happen often. 2079c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 2080c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2081c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2082c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acquireWakeLock() { 2083c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mWakeLock) { 2084c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLock.acquire(); 2085c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesPending++; 2086c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2087c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 2088c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message msg = mSender.obtainMessage(EVENT_WAKE_LOCK_TIMEOUT); 2089c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSender.sendMessageDelayed(msg, mWakeLockTimeout); 2090c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2091c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2092c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2093c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2094c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville releaseWakeLockIfDone() { 2095c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mWakeLock) { 2096c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mWakeLock.isHeld() && 2097c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville (mRequestMessagesPending == 0) && 2098c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville (mRequestMessagesWaiting == 0)) { 2099c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSender.removeMessages(EVENT_WAKE_LOCK_TIMEOUT); 2100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mWakeLock.release(); 2101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2102c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(RILRequest rr) { 2107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message msg; 2108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSocket == null) { 2110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(RADIO_NOT_AVAILABLE, null); 2111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 2112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 2113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville msg = mSender.obtainMessage(EVENT_SEND, rr); 2116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville acquireWakeLock(); 2118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville msg.sendToTarget(); 2120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2122c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2123c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processResponse (Parcel p) { 2124c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int type; 2125c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2126c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville type = p.readInt(); 2127c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2128c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (type == RESPONSE_UNSOLICITED) { 2129c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processUnsolicited (p); 2130c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (type == RESPONSE_SOLICITED) { 2131c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processSolicited (p); 2132c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2133c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2134c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville releaseWakeLockIfDone(); 2135c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2136c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2137c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 2138c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Release each request in mReqeustsList then clear the list 2139c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param error is the RIL_Errno sent back 2140c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param loggable true means to print all requests in mRequestslist 2141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 2142c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void clearRequestsList(int error, boolean loggable) { 2143c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr; 2144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mRequestsList) { 2145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int count = mRequestsList.size(); 2146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD && loggable) { 2147c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + 2148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " mReqPending=" + mRequestMessagesPending + 2149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " mRequestList=" + count); 2150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < count ; i++) { 2153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr = mRequestsList.get(i); 2154c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD && loggable) { 2155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " + 2156c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville requestToString(rr.mRequest)); 2157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(error, null); 2159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 2160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestsList.clear(); 2162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesWaiting = 0; 2163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2165c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private RILRequest findAndRemoveRequestFromList(int serial) { 2167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mRequestsList) { 2168c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0, s = mRequestsList.size() ; i < s ; i++) { 2169c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = mRequestsList.get(i); 2170c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2171c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (rr.mSerial == serial) { 2172c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestsList.remove(i); 2173c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRequestMessagesWaiting > 0) 2174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRequestMessagesWaiting--; 2175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return rr; 2176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return null; 2181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2184c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processSolicited (Parcel p) { 2185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int serial, error; 2186c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean found = false; 2187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville serial = p.readInt(); 2189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville error = p.readInt(); 2190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2191c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr; 2192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr = findAndRemoveRequestFromList(serial); 2194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (rr == null) { 2196c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, "Unexpected solicited response! sn: " 2197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + serial + " error: " + error); 2198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 2199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2201c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Object ret = null; 2202c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (error == 0 || p.dataAvail() > 0) { 2204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // either command succeeds or command fails but with data payload 2205c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try {switch (rr.mRequest) { 2206c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /* 2207c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cat libs/telephony/ril_commands.h \ 2208c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | egrep "^ *{RIL_" \ 2209c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' 2210c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 2211c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; 2212c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PIN: ret = responseInts(p); break; 2213c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PUK: ret = responseInts(p); break; 2214c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PIN2: ret = responseInts(p); break; 2215c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseInts(p); break; 2216c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseInts(p); break; 2217c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseInts(p); break; 2218c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 2219c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; 2220c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DIAL: ret = responseVoid(p); break; 2221c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMSI: ret = responseString(p); break; 2222c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP: ret = responseVoid(p); break; 2223c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: ret = responseVoid(p); break; 2224c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: { 2225c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mTestingEmergencyCall.getAndSet(false)) { 2226c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mEmergencyCallbackModeRegistrant != null) { 2227c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("testing emergency call, notify ECM Registrants"); 2228c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 2229c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2230c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2231c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = responseVoid(p); 2232c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2233c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2234c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: ret = responseVoid(p); break; 2235c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CONFERENCE: ret = responseVoid(p); break; 2236c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_UDUB: ret = responseVoid(p); break; 2237c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2238c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 2239c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: ret = responseStrings(p); break; 2240c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: ret = responseStrings(p); break; 2241c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OPERATOR: ret = responseStrings(p); break; 2242c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_RADIO_POWER: ret = responseVoid(p); break; 2243c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF: ret = responseVoid(p); break; 2244c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; 2245c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; 2246c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SETUP_DATA_CALL: ret = responseSetupDataCall(p); break; 2247c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; 2248c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; 2249c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; 2250c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_CLIR: ret = responseInts(p); break; 2251c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CLIR: ret = responseVoid(p); break; 2252c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: ret = responseCallForward(p); break; 2253c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CALL_FORWARD: ret = responseVoid(p); break; 2254c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CALL_WAITING: ret = responseInts(p); break; 2255c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CALL_WAITING: ret = responseVoid(p); break; 2256c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 2257c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; 2258c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; 2259c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; 2260c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; 2261c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; 2262c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseInts(p); break; 2263c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; 2264c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: ret = responseInts(p); break; 2265c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: ret = responseVoid(p); break; 2266c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: ret = responseVoid(p); break; 2267c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : ret = responseOperatorInfos(p); break; 2268c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF_START: ret = responseVoid(p); break; 2269c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; 2270c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; 2271c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; 2272c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; 2273c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; 2274c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; 2275c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; 2276c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; 2277c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; 2278c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; 2279c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; 2280c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; 2281c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; 2282c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; 2283c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; 2284c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; 2285c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; 2286c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; 2287c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; 2288c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; 2289c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; 2290c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; 2291c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; 2292c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; 2293c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseGetPreferredNetworkType(p); break; 2294c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseCellList(p); break; 2295c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; 2296c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: ret = responseVoid(p); break; 2297c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; 2298c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; 2299c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_TTY_MODE: ret = responseVoid(p); break; 2300c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_TTY_MODE: ret = responseInts(p); break; 2301c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: ret = responseVoid(p); break; 2302c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: ret = responseInts(p); break; 2303c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_FLASH: ret = responseVoid(p); break; 2304c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_BURST_DTMF: ret = responseVoid(p); break; 2305c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SEND_SMS: ret = responseSMS(p); break; 2306c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: ret = responseVoid(p); break; 2307c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: ret = responseGmsBroadcastConfig(p); break; 2308c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2309c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 2310c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCdmaBroadcastConfig(p); break; 2311c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; 2312c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; 2313c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: ret = responseVoid(p); break; 2314c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; 2315c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; 2316c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; 2317c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; 2318c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: ret = responseString(p); break; 2319c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: ret = responseVoid(p); break; 2320c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2321c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break; 2322c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break; 2323c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: ret = responseInts(p); break; 2324c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: ret = responseString(p); break; 2325c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: ret = responseVoid(p); break; 2326c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: ret = responseICC_IO(p); break; 2327c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_VOICE_RADIO_TECH: ret = responseInts(p); break; 2328c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville default: 2329c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); 2330c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //break; 2331c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }} catch (Throwable tr) { 2332c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Exceptions here usually mean invalid RIL responses 2333c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2334c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, rr.serialString() + "< " 2335c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + requestToString(rr.mRequest) 2336c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " exception, possible invalid RIL response", tr); 2337c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2338c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (rr.mResult != null) { 2339c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville AsyncResult.forMessage(rr.mResult, null, tr); 2340c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mResult.sendToTarget(); 2341c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2342c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 2343c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 2344c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2345c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2346c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2347c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (error != 0) { 2348c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.onError(error, ret); 2349c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 2350c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 2351c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2352c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2353c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) 2354c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " " + retToString(rr.mRequest, ret)); 2355c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2356c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (rr.mResult != null) { 2357c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville AsyncResult.forMessage(rr.mResult, ret, null); 2358c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mResult.sendToTarget(); 2359c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2360c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2361c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.release(); 2362c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2363c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2364c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private String 2365c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville retToString(int req, Object ret) { 2366c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (ret == null) return ""; 2367c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch (req) { 2368c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Don't log these return values, for privacy's sake. 2369c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMSI: 2370c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEI: 2371c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEISV: 2372c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!RILJ_LOGV) { 2373c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // If not versbose logging just return and don't display IMSI and IMEI, IMEISV 2374c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return ""; 2375c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2376c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2377c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2378c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville StringBuilder sb; 2379c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String s; 2380c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int length; 2381c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (ret instanceof int[]){ 2382c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int[] intArray = (int[]) ret; 2383c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville length = intArray.length; 2384c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb = new StringBuilder("{"); 2385c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (length > 0) { 2386c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int i = 0; 2387c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(intArray[i++]); 2388c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville while ( i < length) { 2389c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(", ").append(intArray[i++]); 2390c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2391c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2392c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append("}"); 2393c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = sb.toString(); 2394c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (ret instanceof String[]) { 2395c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] strings = (String[]) ret; 2396c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville length = strings.length; 2397c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb = new StringBuilder("{"); 2398c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (length > 0) { 2399c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int i = 0; 2400c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(strings[i++]); 2401c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville while ( i < length) { 2402c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(", ").append(strings[i++]); 2403c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2404c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2405c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append("}"); 2406c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = sb.toString(); 2407c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }else if (req == RIL_REQUEST_GET_CURRENT_CALLS) { 2408c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<DriverCall> calls = (ArrayList<DriverCall>) ret; 2409c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb = new StringBuilder(" "); 2410c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (DriverCall dc : calls) { 2411c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append("[").append(dc).append("] "); 2412c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2413c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = sb.toString(); 2414c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (req == RIL_REQUEST_GET_NEIGHBORING_CELL_IDS) { 2415c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<NeighboringCellInfo> cells; 2416c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cells = (ArrayList<NeighboringCellInfo>) ret; 2417c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb = new StringBuilder(" "); 2418c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (NeighboringCellInfo cell : cells) { 2419c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sb.append(cell).append(" "); 2420c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2421c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = sb.toString(); 2422c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 2423c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville s = ret.toString(); 2424c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2425c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return s; 2426c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2427c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2428c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 2429c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville processUnsolicited (Parcel p) { 2430c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int response; 2431c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Object ret; 2432c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2433c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = p.readInt(); 2434c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2435c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try {switch(response) { 2436c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 2437c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cat libs/telephony/ril_unsol_commands.h \ 2438c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | egrep "^ *{RIL_" \ 2439c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: \2(rr, p); break;/' 2440c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville*/ 2441c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2442c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret = responseVoid(p); break; 2443c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: ret = responseVoid(p); break; 2444c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: ret = responseVoid(p); break; 2445c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: ret = responseString(p); break; 2446c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: ret = responseString(p); break; 2447c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: ret = responseInts(p); break; 2448c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; 2449c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; 2450c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseSignalStrength(p); break; 2451c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; 2452c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; 2453c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; 2454c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; 2455c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; 2456c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; 2457c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 2458c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_REFRESH: ret = responseSimRefresh(p); break; 2459c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CALL_RING: ret = responseCallRing(p); break; 2460c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: ret = responseInts(p); break; 2461c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; 2462c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; 2463c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseRaw(p); break; 2464c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; 2465c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2466c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_CALL_WAITING: ret = responseCdmaCallWaiting(p); break; 2467c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: ret = responseInts(p); break; 2468c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_INFO_REC: ret = responseCdmaInformationRecord(p); break; 2469c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_OEM_HOOK_RAW: ret = responseRaw(p); break; 2470c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RINGBACK_TONE: ret = responseInts(p); break; 2471c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: ret = responseVoid(p); break; 2472c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: ret = responseInts(p); break; 2473c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: ret = responseInts(p); break; 2474c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break; 2475c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RIL_CONNECTED: ret = responseInts(p); break; 2476c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: ret = responseInts(p); break; 2477c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2478c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville default: 2479c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException("Unrecognized unsol response: " + response); 2480c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville //break; (implied) 2481c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville }} catch (Throwable tr) { 2482c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Exception processing unsol response: " + response + 2483c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "Exception:" + tr.toString()); 2484c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 2485c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2486c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2487c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch(response) { 2488c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: 2489c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /* has bonus radio state int */ 2490c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RadioState newState = getRadioStateFromInt(p.readInt()); 2491c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogMore(response, newState.toString()); 2492c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2493c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switchToRadioState(newState); 2494c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2495c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: 2496c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2497c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2498c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCallStateRegistrants 2499c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 2500c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2501c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: 2502c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2503c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2504c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mVoiceNetworkStateRegistrants 2505c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrants(new AsyncResult(null, null, null)); 2506c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2507c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: { 2508c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2509c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2510c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // FIXME this should move up a layer 2511c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String a[] = new String[2]; 2512c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2513c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville a[1] = (String)ret; 2514c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2515c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SmsMessage sms; 2516c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2517c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sms = SmsMessage.newFromCMT(a); 2518c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mGsmSmsRegistrant != null) { 2519c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mGsmSmsRegistrant 2520c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 2521c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2522c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2523c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2524c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: 2525c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2526c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2527c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSmsStatusRegistrant != null) { 2528c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSmsStatusRegistrant.notifyRegistrant( 2529c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult(null, ret, null)); 2530c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2531c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2532c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: 2533c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2534c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2535c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int[] smsIndex = (int[])ret; 2536c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2537c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if(smsIndex.length == 1) { 2538c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSmsOnSimRegistrant != null) { 2539c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSmsOnSimRegistrant. 2540c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notifyRegistrant(new AsyncResult(null, smsIndex, null)); 2541c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2542c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 2543c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(" NEW_SMS_ON_SIM ERROR with wrong length " 2544c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + smsIndex.length); 2545c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2546c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2547c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ON_USSD: 2548c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] resp = (String[])ret; 2549c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2550c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (resp.length < 2) { 2551c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville resp = new String[2]; 2552c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville resp[0] = ((String[])ret)[0]; 2553c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville resp[1] = null; 2554c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2555c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogMore(response, resp[0]); 2556c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mUSSDRegistrant != null) { 2557c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mUSSDRegistrant.notifyRegistrant( 2558c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, resp, null)); 2559c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2560c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2561c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: 2562c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2563c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2564c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // has bonus long containing milliseconds since boot that the NITZ 2565c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // time was received 2566c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville long nitzReceiveTime = p.readLong(); 2567c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2568c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Object[] result = new Object[2]; 2569c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2570c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result[0] = ret; 2571c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville result[1] = Long.valueOf(nitzReceiveTime); 2572c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2573c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean ignoreNitz = SystemProperties.getBoolean( 2574c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville TelephonyProperties.PROPERTY_IGNORE_NITZ, false); 2575c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2576c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (ignoreNitz) { 2577c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("ignoring UNSOL_NITZ_TIME_RECEIVED"); 2578c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 2579c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mNITZTimeRegistrant != null) { 2580c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2581c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mNITZTimeRegistrant 2582c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrant(new AsyncResult (null, result, null)); 2583c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 2584c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // in case NITZ time registrant isnt registered yet 2585c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mLastNITZTimeInfo = result; 2586c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2587c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2588c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2589c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2590c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIGNAL_STRENGTH: 2591c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Note this is set to "verbose" because it happens 2592c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // frequently 2593c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGV) unsljLogvRet(response, ret); 2594c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2595c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSignalStrengthRegistrant != null) { 2596c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSignalStrengthRegistrant.notifyRegistrant( 2597c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2598c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2599c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2600c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: 2601c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2602c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2603c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mDataNetworkStateRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); 2604c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2605c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2606c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: 2607c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2608c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2609c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSsnRegistrant != null) { 2610c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSsnRegistrant.notifyRegistrant( 2611c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2612c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2613c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2614c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2615c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_SESSION_END: 2616c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2617c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2618c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCatSessionEndRegistrant != null) { 2619c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCatSessionEndRegistrant.notifyRegistrant( 2620c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2621c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2622c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2623c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2624c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: 2625c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2626c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2627c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCatProCmdRegistrant != null) { 2628c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCatProCmdRegistrant.notifyRegistrant( 2629c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2630c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2631c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2632c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2633c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: 2634c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2635c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2636c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCatEventRegistrant != null) { 2637c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCatEventRegistrant.notifyRegistrant( 2638c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2639c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2640c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2641c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2642c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_CALL_SETUP: 2643c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2644c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2645c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCatCallSetUpRegistrant != null) { 2646c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCatCallSetUpRegistrant.notifyRegistrant( 2647c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2648c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2649c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2650c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2651c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: 2652c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2653c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2654c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mIccSmsFullRegistrant != null) { 2655c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mIccSmsFullRegistrant.notifyRegistrant(); 2656c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2657c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2658c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2659c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_REFRESH: 2660c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2661c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2662c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mIccRefreshRegistrants != null) { 2663c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mIccRefreshRegistrants.notifyRegistrants( 2664c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2665c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2666c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2667c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2668c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CALL_RING: 2669c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2670c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2671c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRingRegistrant != null) { 2672c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRingRegistrant.notifyRegistrant( 2673c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2674c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2675c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2676c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2677c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: 2678c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 2679c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRestrictedStateRegistrant != null) { 2680c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRestrictedStateRegistrant.notifyRegistrant( 2681c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2682c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2683c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2684c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2685c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: 2686c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2687c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2688c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mIccStatusChangedRegistrants != null) { 2689c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mIccStatusChangedRegistrants.notifyRegistrants(); 2690c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2691c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2692c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2693c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: 2694c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2695c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2696c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SmsMessage sms = (SmsMessage) ret; 2697c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2698c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCdmaSmsRegistrant != null) { 2699c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCdmaSmsRegistrant 2700c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrant(new AsyncResult(null, sms, null)); 2701c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2702c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2703c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2704c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: 2705c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2706c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2707c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mGsmBroadcastSmsRegistrant != null) { 2708c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mGsmBroadcastSmsRegistrant 2709c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville .notifyRegistrant(new AsyncResult(null, ret, null)); 2710c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2711c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2712c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2713c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: 2714c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2715c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2716c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mIccSmsFullRegistrant != null) { 2717c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mIccSmsFullRegistrant.notifyRegistrant(); 2718c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2719c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2720c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2721c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: 2722c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLog(response); 2723c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2724c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mEmergencyCallbackModeRegistrant != null) { 2725c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 2726c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2727c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2728c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2729c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_CALL_WAITING: 2730c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2731c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2732c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCallWaitingInfoRegistrants != null) { 2733c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCallWaitingInfoRegistrants.notifyRegistrants( 2734c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2735c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2736c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2737c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2738c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: 2739c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2740c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2741c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mOtaProvisionRegistrants != null) { 2742c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mOtaProvisionRegistrants.notifyRegistrants( 2743c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2744c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2745c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2746c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2747c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_INFO_REC: 2748c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<CdmaInformationRecords> listInfoRecs; 2749c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2750c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 2751c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville listInfoRecs = (ArrayList<CdmaInformationRecords>)ret; 2752c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (ClassCastException e) { 2753c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.e(LOG_TAG, "Unexpected exception casting to listInfoRecs", e); 2754c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2755c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2756c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2757c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (CdmaInformationRecords rec : listInfoRecs) { 2758c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, rec); 2759c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notifyRegistrantsCdmaInfoRec(rec); 2760c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2761c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2762c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2763c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_OEM_HOOK_RAW: 2764c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogvRet(response, IccUtils.bytesToHexString((byte[])ret)); 2765c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mUnsolOemHookRawRegistrant != null) { 2766c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mUnsolOemHookRawRegistrant.notifyRegistrant(new AsyncResult(null, ret, null)); 2767c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2768c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2769c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2770c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RINGBACK_TONE: 2771c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogvRet(response, ret); 2772c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRingbackToneRegistrants != null) { 2773c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean playtone = (((int[])ret)[0] == 1); 2774c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRingbackToneRegistrants.notifyRegistrants( 2775c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, playtone, null)); 2776c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2777c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2778c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2779c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: 2780c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2781c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2782c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mResendIncallMuteRegistrants != null) { 2783c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mResendIncallMuteRegistrants.notifyRegistrants( 2784c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2785c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2786c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2787c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2788c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: 2789c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2790c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2791c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mVoiceRadioTechChangedRegistrants != null) { 2792c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mVoiceRadioTechChangedRegistrants.notifyRegistrants( 2793c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult(null, ret, null)); 2794c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2795c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2796c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2797c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: 2798c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2799c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2800c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCdmaSubscriptionChangedRegistrants != null) { 2801c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCdmaSubscriptionChangedRegistrants.notifyRegistrants( 2802c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2803c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2804c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2805c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2806c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: 2807c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2808c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2809c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mCdmaPrlChangedRegistrants != null) { 2810c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mCdmaPrlChangedRegistrants.notifyRegistrants( 2811c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, ret, null)); 2812c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2813c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2814c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2815c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: 2816c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2817c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2818c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mExitEmergencyCallbackModeRegistrants != null) { 2819c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mExitEmergencyCallbackModeRegistrants.notifyRegistrants( 2820c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, null, null)); 2821c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2822c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2823c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2824c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RIL_CONNECTED: { 2825c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, ret); 2826c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2827c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Initial conditions 2828c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setRadioPower(false, null); 2829c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setPreferredNetworkType(mPreferredNetworkType, null); 2830c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville setCdmaSubscriptionSource(mCdmaSubscription, null); 2831c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notifyRegistrantsRilConnectionChanged(((int[])ret)[0]); 2832c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 2833c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2834c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2835c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2836c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2837c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 2838c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Notifiy all registrants that the ril has connected or disconnected. 2839c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 2840c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param rilVer is the version of the ril or -1 if disconnected. 2841c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 2842c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void notifyRegistrantsRilConnectionChanged(int rilVer) { 2843c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRilVersion = rilVer; 2844c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRilConnectedRegistrants != null) { 2845c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRilConnectedRegistrants.notifyRegistrants( 2846c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, new Integer(rilVer), null)); 2847c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2848c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2849c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2850c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2851c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseInts(Parcel p) { 2852c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numInts; 2853c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int response[]; 2854c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2855c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numInts = p.readInt(); 2856c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2857c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new int[numInts]; 2858c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2859c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < numInts ; i++) { 2860c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i] = p.readInt(); 2861c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2862c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2863c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 2864c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2865c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2866c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2867c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2868c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseVoid(Parcel p) { 2869c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return null; 2870c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2871c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2872c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2873c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCallForward(Parcel p) { 2874c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numInfos; 2875c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CallForwardInfo infos[]; 2876c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2877c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numInfos = p.readInt(); 2878c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2879c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos = new CallForwardInfo[numInfos]; 2880c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2881c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < numInfos ; i++) { 2882c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i] = new CallForwardInfo(); 2883c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2884c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].status = p.readInt(); 2885c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].reason = p.readInt(); 2886c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].serviceClass = p.readInt(); 2887c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].toa = p.readInt(); 2888c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].number = p.readString(); 2889c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville infos[i].timeSeconds = p.readInt(); 2890c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2891c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2892c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return infos; 2893c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2894c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2895c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2896c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseSuppServiceNotification(Parcel p) { 2897c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SuppServiceNotification notification = new SuppServiceNotification(); 2898c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2899c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.notificationType = p.readInt(); 2900c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.code = p.readInt(); 2901c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.index = p.readInt(); 2902c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.type = p.readInt(); 2903c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.number = p.readString(); 2904c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2905c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return notification; 2906c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2907c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2908c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2909c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCdmaSms(Parcel p) { 2910c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SmsMessage sms; 2911c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sms = SmsMessage.newFromParcel(p); 2912c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2913c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return sms; 2914c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2915c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2916c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2917c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseString(Parcel p) { 2918c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String response; 2919c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2920c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = p.readString(); 2921c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2922c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 2923c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2924c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2925c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2926c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseStrings(Parcel p) { 2927c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num; 2928c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String response[]; 2929c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2930c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = p.readStringArray(); 2931c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2932c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (false) { 2933c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville num = p.readInt(); 2934c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2935c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new String[num]; 2936c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < num; i++) { 2937c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i] = p.readString(); 2938c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2939c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2940c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2941c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 2942c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2943c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2944c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2945c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseRaw(Parcel p) { 2946c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num; 2947c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte response[]; 2948c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2949c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = p.createByteArray(); 2950c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2951c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 2952c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2953c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2954c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2955c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseSMS(Parcel p) { 2956c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int messageRef, errorCode; 2957c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String ackPDU; 2958c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2959c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville messageRef = p.readInt(); 2960c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ackPDU = p.readString(); 2961c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville errorCode = p.readInt(); 2962c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2963c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SmsResponse response = new SmsResponse(messageRef, ackPDU, errorCode); 2964c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2965c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 2966c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2967c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2968c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2969c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2970c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseICC_IO(Parcel p) { 2971c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int sw1, sw2; 2972c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte data[] = null; 2973c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Message ret; 2974c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2975c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sw1 = p.readInt(); 2976c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sw2 = p.readInt(); 2977c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2978c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String s = p.readString(); 2979c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2980c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGV) riljLog("< iccIO: " 2981c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " 0x" + Integer.toHexString(sw1) 2982c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " 0x" + Integer.toHexString(sw2) + " " 2983c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + s); 2984c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2985c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return new IccIoResult(sw1, sw2, s); 2986c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 2987c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 2988c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 2989c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseIccCardStatus(Parcel p) { 2990e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardApplicationStatus appStatus; 2991e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 2992e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka IccCardStatus cardStatus = new IccCardStatus(); 2993e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setCardState(p.readInt()); 2994e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.setUniversalPinState(p.readInt()); 2995e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mGsmUmtsSubscriptionAppIndex = p.readInt(); 2996e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mCdmaSubscriptionAppIndex = p.readInt(); 2997e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mImsSubscriptionAppIndex = p.readInt(); 2998c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numApplications = p.readInt(); 2999c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3000c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // limit to maximum allowed applications 3001c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (numApplications > IccCardStatus.CARD_MAX_APPS) { 3002c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numApplications = IccCardStatus.CARD_MAX_APPS; 3003c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3004e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications = new IccCardApplicationStatus[numApplications]; 3005c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < numApplications ; i++) { 3006e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus = new IccCardApplicationStatus(); 3007e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_type = appStatus.AppTypeFromRILInt(p.readInt()); 3008e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_state = appStatus.AppStateFromRILInt(p.readInt()); 3009e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.perso_substate = appStatus.PersoSubstateFromRILInt(p.readInt()); 3010e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.aid = p.readString(); 3011e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.app_label = p.readString(); 3012e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1_replaced = p.readInt(); 3013e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin1 = appStatus.PinStateFromRILInt(p.readInt()); 3014e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka appStatus.pin2 = appStatus.PinStateFromRILInt(p.readInt()); 3015e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka cardStatus.mApplications[i] = appStatus; 3016c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3017e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return cardStatus; 3018c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3019c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3020c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3021c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseSimRefresh(Parcel p) { 3022c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville IccRefreshResponse response = new IccRefreshResponse(); 3023c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3024c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.refreshResult = p.readInt(); 3025c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.efId = p.readInt(); 3026c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.aid = p.readString(); 3027c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3028c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3029c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3030c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3031c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCallList(Parcel p) { 3032c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num; 3033c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int voiceSettings; 3034c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<DriverCall> response; 3035c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville DriverCall dc; 3036c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3037c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville num = p.readInt(); 3038c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new ArrayList<DriverCall>(num); 3039c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3040c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGV) { 3041c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("responseCallList: num=" + num + 3042c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant + 3043c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 3044c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3045c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < num ; i++) { 3046c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc = new DriverCall(); 3047c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3048c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.state = DriverCall.stateFromCLCC(p.readInt()); 3049c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.index = p.readInt(); 3050c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.TOA = p.readInt(); 3051c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.isMpty = (0 != p.readInt()); 3052c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.isMT = (0 != p.readInt()); 3053c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.als = p.readInt(); 3054c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville voiceSettings = p.readInt(); 3055c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.isVoice = (0 == voiceSettings) ? false : true; 3056c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.isVoicePrivacy = (0 != p.readInt()); 3057c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.number = p.readString(); 3058c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int np = p.readInt(); 3059c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.numberPresentation = DriverCall.presentationFromCLIP(np); 3060c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.name = p.readString(); 3061c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.namePresentation = p.readInt(); 3062c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int uusInfoPresent = p.readInt(); 3063c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (uusInfoPresent == 1) { 3064c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo = new UUSInfo(); 3065c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo.setType(p.readInt()); 3066c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo.setDcs(p.readInt()); 3067c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville byte[] userData = p.createByteArray(); 3068c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo.setUserData(userData); 3069c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", 3070c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo.getType(), dc.uusInfo.getDcs(), 3071c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.uusInfo.getUserData().length)); 3072c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLogv("Incoming UUS : data (string)=" 3073c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + new String(dc.uusInfo.getUserData())); 3074c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLogv("Incoming UUS : data (hex): " 3075c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); 3076c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3077c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLogv("Incoming UUS : NOT present!"); 3078c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3079c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3080c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Make sure there's a leading + on addresses with a TOA of 145 3081c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); 3082c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3083c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.add(dc); 3084c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3085c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (dc.isVoicePrivacy) { 3086c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mVoicePrivacyOnRegistrants.notifyRegistrants(); 3087c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("InCall VoicePrivacy is enabled"); 3088c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3089c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mVoicePrivacyOffRegistrants.notifyRegistrants(); 3090c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("InCall VoicePrivacy is disabled"); 3091c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3092c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3093c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3094c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Collections.sort(response); 3095c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3096c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) { 3097c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mEmergencyCallbackModeRegistrant != null) { 3098c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("responseCallList: call ended, testing emergency call," + 3099c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville " notify ECM Registrants"); 3100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mEmergencyCallbackModeRegistrant.notifyRegistrant(); 3101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3102c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private DataCallState getDataCallState(Parcel p, int version) { 3108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville DataCallState dataCall = new DataCallState(); 3109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.version = version; 3111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (version < 5) { 3112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.cid = p.readInt(); 3113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.active = p.readInt(); 3114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.type = p.readString(); 3115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String addresses = p.readString(); 3116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(addresses)) { 3117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.addresses = addresses.split(" "); 3118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.status = p.readInt(); 3121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.suggestedRetryTime = p.readInt(); 3122c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.cid = p.readInt(); 3123c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.active = p.readInt(); 3124c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.type = p.readString(); 3125c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.ifname = p.readString(); 3126c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if ((dataCall.status == DataConnection.FailCause.NONE.getErrorCode()) && 3127c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville TextUtils.isEmpty(dataCall.ifname)) { 3128c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException("getDataCallState, no ifname"); 3129c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3130c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String addresses = p.readString(); 3131c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(addresses)) { 3132c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.addresses = addresses.split(" "); 3133c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3134c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String dnses = p.readString(); 3135c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(dnses)) { 3136c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.dnses = dnses.split(" "); 3137c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3138c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String gateways = p.readString(); 3139c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(gateways)) { 3140c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.gateways = gateways.split(" "); 3141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3142c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3143c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return dataCall; 3144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3147c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseDataCallList(Parcel p) { 3148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<DataCallState> response; 3149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int ver = p.readInt(); 3151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num = p.readInt(); 3152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("responseDataCallList ver=" + ver + " num=" + num); 3153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3154c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new ArrayList<DataCallState>(num); 3155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < num; i++) { 3156c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.add(getDataCallState(p, ver)); 3157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseSetupDataCall(Parcel p) { 3164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int ver = p.readInt(); 3165c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num = p.readInt(); 3166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGV) riljLog("responseSetupDataCall ver=" + ver + " num=" + num); 3167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3168c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville DataCallState dataCall; 3169c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3170c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (ver < 5) { 3171c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall = new DataCallState(); 3172c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.version = ver; 3173c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.cid = Integer.parseInt(p.readString()); 3174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.ifname = p.readString(); 3175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (TextUtils.isEmpty(dataCall.ifname)) { 3176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException( 3177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "RIL_REQUEST_SETUP_DATA_CALL response, no ifname"); 3178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String addresses = p.readString(); 3180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(addresses)) { 3181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.addresses = addresses.split(" "); 3182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (num >= 4) { 3184c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String dnses = p.readString(); 3185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got dnses=" + dnses); 3186c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(dnses)) { 3187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.dnses = dnses.split(" "); 3188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (num >= 5) { 3191c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String gateways = p.readString(); 3192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("responseSetupDataCall got gateways=" + gateways); 3193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!TextUtils.isEmpty(gateways)) { 3194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall.gateways = gateways.split(" "); 3195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3196c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (num != 1) { 3199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException( 3200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "RIL_REQUEST_SETUP_DATA_CALL response expecting 1 RIL_Data_Call_response_v5" 3201c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " got " + num); 3202c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville dataCall = getDataCallState(p, ver); 3204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3205c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3206c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return dataCall; 3207c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3208c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3209c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3210c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseOperatorInfos(Parcel p) { 3211c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String strings[] = (String [])responseStrings(p); 3212c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<OperatorInfo> ret; 3213c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3214c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (strings.length % 4 != 0) { 3215c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville throw new RuntimeException( 3216c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " 3217c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + strings.length + " strings, expected multible of 4"); 3218c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3219c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3220c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret = new ArrayList<OperatorInfo>(strings.length / 4); 3221c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3222c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < strings.length ; i += 4) { 3223c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ret.add ( 3224c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new OperatorInfo( 3225c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville strings[i+0], 3226c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville strings[i+1], 3227c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville strings[i+2], 3228c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville strings[i+3])); 3229c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3230c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3231c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return ret; 3232c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3233c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3234c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3235c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCellList(Parcel p) { 3236c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num, rssi; 3237c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String location; 3238c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<NeighboringCellInfo> response; 3239c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville NeighboringCellInfo cell; 3240c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3241c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville num = p.readInt(); 3242c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new ArrayList<NeighboringCellInfo>(); 3243c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3244c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Determine the radio access type 3245c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String radioString = SystemProperties.get( 3246c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, "unknown"); 3247c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int radioType; 3248c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (radioString.equals("GPRS")) { 3249c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_GPRS; 3250c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (radioString.equals("EDGE")) { 3251c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_EDGE; 3252c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (radioString.equals("UMTS")) { 3253c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_UMTS; 3254c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (radioString.equals("HSDPA")) { 3255c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_HSDPA; 3256c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (radioString.equals("HSUPA")) { 3257c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_HSUPA; 3258c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (radioString.equals("HSPA")) { 3259c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_HSPA; 3260c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3261c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville radioType = NETWORK_TYPE_UNKNOWN; 3262c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3263c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3264c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Interpret the location based on radio access type 3265c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (radioType != NETWORK_TYPE_UNKNOWN) { 3266c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0 ; i < num ; i++) { 3267c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rssi = p.readInt(); 3268c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville location = p.readString(); 3269c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cell = new NeighboringCellInfo(rssi, location, radioType); 3270c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.add(cell); 3271c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3272c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3273c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3274c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3275c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3276c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object responseGetPreferredNetworkType(Parcel p) { 3277c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int [] response = (int[]) responseInts(p); 3278c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3279c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (response.length >= 1) { 3280c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Since this is the response for getPreferredNetworkType 3281c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // we'll assume that it should be the value we want the 3282c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // vendor ril to take if we reestablish a connection to it. 3283c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mPreferredNetworkType = response[0]; 3284c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3285c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3286c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3287c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3288c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object responseGmsBroadcastConfig(Parcel p) { 3289c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int num; 3290c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<SmsBroadcastConfigInfo> response; 3291c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville SmsBroadcastConfigInfo info; 3292c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3293c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville num = p.readInt(); 3294c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new ArrayList<SmsBroadcastConfigInfo>(num); 3295c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3296c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < num; i++) { 3297c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int fromId = p.readInt(); 3298c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int toId = p.readInt(); 3299c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int fromScheme = p.readInt(); 3300c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int toScheme = p.readInt(); 3301c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean selected = (p.readInt() == 1); 3302c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3303c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville info = new SmsBroadcastConfigInfo(fromId, toId, fromScheme, 3304c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville toScheme, selected); 3305c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.add(info); 3306c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3307c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3308c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3309c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3310c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3311c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCdmaBroadcastConfig(Parcel p) { 3312c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numServiceCategories; 3313c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int response[]; 3314c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3315c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numServiceCategories = p.readInt(); 3316c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3317c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (numServiceCategories == 0) { 3318c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // TODO: The logic of providing default values should 3319c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // not be done by this transport layer. And needs to 3320c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // be done by the vendor ril or application logic. 3321c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numInts; 3322c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numInts = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES * CDMA_BSI_NO_OF_INTS_STRUCT + 1; 3323c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new int[numInts]; 3324c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3325c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Faking a default record for all possible records. 3326c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[0] = CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES; 3327c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3328c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as 3329c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // default language and selection status to false for all. 3330c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 1; i < numInts; i += CDMA_BSI_NO_OF_INTS_STRUCT ) { 3331c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i + 0] = i / CDMA_BSI_NO_OF_INTS_STRUCT; 3332c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i + 1] = 1; 3333c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i + 2] = 0; 3334c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3335c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else { 3336c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numInts; 3337c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numInts = (numServiceCategories * CDMA_BSI_NO_OF_INTS_STRUCT) + 1; 3338c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new int[numInts]; 3339c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3340c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[0] = numServiceCategories; 3341c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 1 ; i < numInts; i++) { 3342c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[i] = p.readInt(); 3343c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3344c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3345c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3346c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3347c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3348c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3349c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3350c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseSignalStrength(Parcel p) { 33515b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam SignalStrength signalStrength = new SignalStrength(p); 33525b81adc82a53b3064f4baa3acfeabef31586588aUma Maheswari Ramalingam return signalStrength; 3353c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3354c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3355c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private ArrayList<CdmaInformationRecords> 3356c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCdmaInformationRecord(Parcel p) { 3357c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int numberOfInfoRecs; 3358c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville ArrayList<CdmaInformationRecords> response; 3359c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3360c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3361c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Loop through all of the information records unmarshalling them 3362c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * and converting them to Java Objects. 3363c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3364c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville numberOfInfoRecs = p.readInt(); 3365c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response = new ArrayList<CdmaInformationRecords>(numberOfInfoRecs); 3366c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3367c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < numberOfInfoRecs; i++) { 3368c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CdmaInformationRecords InfoRec = new CdmaInformationRecords(p); 3369c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response.add(InfoRec); 3370c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3371c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3372c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3373c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3374c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3375c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3376c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCdmaCallWaiting(Parcel p) { 3377c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CdmaCallWaitingNotification notification = new CdmaCallWaitingNotification(); 3378c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3379c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.number = p.readString(); 3380c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.numberPresentation = notification.presentationFromCLIP(p.readInt()); 3381c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.name = p.readString(); 3382c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.namePresentation = notification.numberPresentation; 3383c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.isPresent = p.readInt(); 3384c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.signalType = p.readInt(); 3385c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.alertPitch = p.readInt(); 3386c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.signal = p.readInt(); 3387c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.numberType = p.readInt(); 3388c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notification.numberPlan = p.readInt(); 3389c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3390c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return notification; 3391c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3392c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3393c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private Object 3394c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseCallRing(Parcel p){ 3395c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville char response[] = new char[4]; 3396c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3397c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[0] = (char) p.readInt(); // isPresent 3398c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[1] = (char) p.readInt(); // signalType 3399c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[2] = (char) p.readInt(); // alertPitch 3400c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville response[3] = (char) p.readInt(); // signal 3401c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3402c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return response; 3403c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3404c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3405c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void 3406c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville notifyRegistrantsCdmaInfoRec(CdmaInformationRecords infoRec) { 3407c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int response = RIL_UNSOL_CDMA_INFO_REC; 3408c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (infoRec.record instanceof CdmaInformationRecords.CdmaDisplayInfoRec) { 3409c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mDisplayInfoRegistrants != null) { 3410c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3411c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mDisplayInfoRegistrants.notifyRegistrants( 3412c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3413c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3414c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaSignalInfoRec) { 3415c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mSignalInfoRegistrants != null) { 3416c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3417c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mSignalInfoRegistrants.notifyRegistrants( 3418c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3419c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3420c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaNumberInfoRec) { 3421c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mNumberInfoRegistrants != null) { 3422c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3423c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mNumberInfoRegistrants.notifyRegistrants( 3424c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3425c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3426c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaRedirectingNumberInfoRec) { 3427c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mRedirNumInfoRegistrants != null) { 3428c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3429c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mRedirNumInfoRegistrants.notifyRegistrants( 3430c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3431c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3432c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaLineControlInfoRec) { 3433c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mLineControlInfoRegistrants != null) { 3434c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3435c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mLineControlInfoRegistrants.notifyRegistrants( 3436c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3437c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3438c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53ClirInfoRec) { 3439c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mT53ClirInfoRegistrants != null) { 3440c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3441c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mT53ClirInfoRegistrants.notifyRegistrants( 3442c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3443c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3444c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } else if (infoRec.record instanceof CdmaInformationRecords.CdmaT53AudioControlInfoRec) { 3445c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (mT53AudCntrlInfoRegistrants != null) { 3446c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) unsljLogRet(response, infoRec.record); 3447c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mT53AudCntrlInfoRegistrants.notifyRegistrants( 3448c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville new AsyncResult (null, infoRec.record, null)); 3449c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3450c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3451c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3452c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3453c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static String 3454c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville requestToString(int request) { 3455c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 3456c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cat libs/telephony/ril_commands.h \ 3457c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | egrep "^ *{RIL_" \ 3458c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 3459c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville*/ 3460c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch(request) { 3461c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; 3462c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; 3463c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; 3464c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PIN2: return "ENTER_SIM_PIN2"; 3465c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; 3466c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; 3467c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; 3468c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; 3469c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; 3470c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DIAL: return "DIAL"; 3471c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMSI: return "GET_IMSI"; 3472c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP: return "HANGUP"; 3473c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND: return "HANGUP_WAITING_OR_BACKGROUND"; 3474c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND: return "HANGUP_FOREGROUND_RESUME_BACKGROUND"; 3475c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE: return "REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE"; 3476c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CONFERENCE: return "CONFERENCE"; 3477c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_UDUB: return "UDUB"; 3478c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_LAST_CALL_FAIL_CAUSE: return "LAST_CALL_FAIL_CAUSE"; 3479c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SIGNAL_STRENGTH: return "SIGNAL_STRENGTH"; 3480c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_VOICE_REGISTRATION_STATE: return "VOICE_REGISTRATION_STATE"; 3481c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DATA_REGISTRATION_STATE: return "DATA_REGISTRATION_STATE"; 3482c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OPERATOR: return "OPERATOR"; 3483c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_RADIO_POWER: return "RADIO_POWER"; 3484c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF: return "DTMF"; 3485c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; 3486c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; 3487c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; 3488c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SIM_IO: return "SIM_IO"; 3489c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; 3490c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; 3491c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_CLIR: return "GET_CLIR"; 3492c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CLIR: return "SET_CLIR"; 3493c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CALL_FORWARD_STATUS: return "QUERY_CALL_FORWARD_STATUS"; 3494c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CALL_FORWARD: return "SET_CALL_FORWARD"; 3495c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CALL_WAITING: return "QUERY_CALL_WAITING"; 3496c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_CALL_WAITING: return "SET_CALL_WAITING"; 3497c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SMS_ACKNOWLEDGE: return "SMS_ACKNOWLEDGE"; 3498c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; 3499c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; 3500c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ANSWER: return "ANSWER"; 3501c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; 3502c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; 3503c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; 3504c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; 3505c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE"; 3506c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC"; 3507c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL"; 3508c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS : return "QUERY_AVAILABLE_NETWORKS "; 3509c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF_START: return "DTMF_START"; 3510c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DTMF_STOP: return "DTMF_STOP"; 3511c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_BASEBAND_VERSION: return "BASEBAND_VERSION"; 3512c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SEPARATE_CONNECTION: return "SEPARATE_CONNECTION"; 3513c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; 3514c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; 3515c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; 3516c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; 3517c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; 3518c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; 3519c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; 3520c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; 3521c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SCREEN_STATE: return "SCREEN_STATE"; 3522c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: return "SET_SUPP_SVC_NOTIFICATION"; 3523c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_WRITE_SMS_TO_SIM: return "WRITE_SMS_TO_SIM"; 3524c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DELETE_SMS_ON_SIM: return "DELETE_SMS_ON_SIM"; 3525c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_BAND_MODE: return "SET_BAND_MODE"; 3526c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: return "QUERY_AVAILABLE_BAND_MODE"; 3527c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_GET_PROFILE: return "REQUEST_STK_GET_PROFILE"; 3528c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SET_PROFILE: return "REQUEST_STK_SET_PROFILE"; 3529c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: return "REQUEST_STK_SEND_ENVELOPE_COMMAND"; 3530c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: return "REQUEST_STK_SEND_TERMINAL_RESPONSE"; 3531c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: return "REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM"; 3532c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: return "REQUEST_EXPLICIT_CALL_TRANSFER"; 3533c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: return "REQUEST_SET_PREFERRED_NETWORK_TYPE"; 3534c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: return "REQUEST_GET_PREFERRED_NETWORK_TYPE"; 3535c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: return "REQUEST_GET_NEIGHBORING_CELL_IDS"; 3536c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_LOCATION_UPDATES: return "REQUEST_SET_LOCATION_UPDATES"; 3537c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE"; 3538c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE"; 3539c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: return "RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE"; 3540c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_TTY_MODE: return "RIL_REQUEST_SET_TTY_MODE"; 3541c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_QUERY_TTY_MODE: return "RIL_REQUEST_QUERY_TTY_MODE"; 3542c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE"; 3543c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE: return "RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE"; 3544c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_FLASH: return "RIL_REQUEST_CDMA_FLASH"; 3545c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_BURST_DTMF: return "RIL_REQUEST_CDMA_BURST_DTMF"; 3546c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SEND_SMS: return "RIL_REQUEST_CDMA_SEND_SMS"; 3547c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE: return "RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE"; 3548c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_GET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_GET_BROADCAST_CONFIG"; 3549c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_SET_BROADCAST_CONFIG: return "RIL_REQUEST_GSM_SET_BROADCAST_CONFIG"; 3550c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; 3551c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; 3552c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GSM_BROADCAST_ACTIVATION: return "RIL_REQUEST_GSM_BROADCAST_ACTIVATION"; 3553c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY"; 3554c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; 3555c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; 3556c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; 3557c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; 3558c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_DEVICE_IDENTITY: return "RIL_REQUEST_DEVICE_IDENTITY"; 3559c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_GET_SMSC_ADDRESS: return "RIL_REQUEST_GET_SMSC_ADDRESS"; 3560c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_SET_SMSC_ADDRESS: return "RIL_REQUEST_SET_SMSC_ADDRESS"; 3561c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: return "REQUEST_EXIT_EMERGENCY_CALLBACK_MODE"; 3562c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: return "RIL_REQUEST_REPORT_SMS_MEMORY_STATUS"; 3563c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING"; 3564c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE"; 3565c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION"; 3566c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU"; 3567c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS"; 3568c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_REQUEST_VOICE_RADIO_TECH: return "RIL_REQUEST_VOICE_RADIO_TECH"; 3569c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville default: return "<unknown request>"; 3570c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3571c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3572c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3573c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static String 3574c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville responseToString(int request) 3575c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville { 3576c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 3577c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville cat libs/telephony/ril_unsol_commands.h \ 3578c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | egrep "^ *{RIL_" \ 3579c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' 3580c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville*/ 3581c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville switch(request) { 3582c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED"; 3583c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED"; 3584c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED"; 3585c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS: return "UNSOL_RESPONSE_NEW_SMS"; 3586c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT: return "UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT"; 3587c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM: return "UNSOL_RESPONSE_NEW_SMS_ON_SIM"; 3588c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ON_USSD: return "UNSOL_ON_USSD"; 3589c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST"; 3590c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED"; 3591c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH"; 3592c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED"; 3593c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION"; 3594c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END"; 3595c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND"; 3596c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY"; 3597c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP"; 3598c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FULL"; 3599c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH"; 3600c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING"; 3601c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED"; 3602c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_RESPONSE_CDMA_NEW_SMS"; 3603c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: return "UNSOL_RESPONSE_NEW_BROADCAST_SMS"; 3604c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: return "UNSOL_CDMA_RUIM_SMS_STORAGE_FULL"; 3605c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESTRICTED_STATE_CHANGED: return "UNSOL_RESTRICTED_STATE_CHANGED"; 3606c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_ENTER_EMERGENCY_CALLBACK_MODE: return "UNSOL_ENTER_EMERGENCY_CALLBACK_MODE"; 3607c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_CALL_WAITING: return "UNSOL_CDMA_CALL_WAITING"; 3608c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_OTA_PROVISION_STATUS: return "UNSOL_CDMA_OTA_PROVISION_STATUS"; 3609c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_INFO_REC: return "UNSOL_CDMA_INFO_REC"; 3610c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_OEM_HOOK_RAW: return "UNSOL_OEM_HOOK_RAW"; 3611c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RINGBACK_TONE: return "UNSOL_RINGBACK_TONG"; 3612c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RESEND_INCALL_MUTE: return "UNSOL_RESEND_INCALL_MUTE"; 3613c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED: return "CDMA_SUBSCRIPTION_SOURCE_CHANGED"; 3614c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED"; 3615c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE"; 3616c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED"; 3617c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville case RIL_UNSOL_VOICE_RADIO_TECH_CHANGED: return "UNSOL_VOICE_RADIO_TECH_CHANGED"; 3618c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville default: return "<unknown reponse>"; 3619c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3620c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3621c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3622c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void riljLog(String msg) { 3623c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.d(LOG_TAG, msg); 3624c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3625c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3626c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void riljLogv(String msg) { 3627c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.v(LOG_TAG, msg); 3628c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3629c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3630c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void unsljLog(int response) { 3631c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("[UNSL]< " + responseToString(response)); 3632c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3633c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3634c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void unsljLogMore(int response, String more) { 3635c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("[UNSL]< " + responseToString(response) + " " + more); 3636c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3637c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3638c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void unsljLogRet(int response, Object ret) { 3639c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLog("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 3640c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3641c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3642c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void unsljLogvRet(int response, Object ret) { 3643c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville riljLogv("[UNSL]< " + responseToString(response) + " " + retToString(response, ret)); 3644c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3645c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3646c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3647c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // ***** Methods for CDMA support 3648c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 3649c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getDeviceIdentity(Message response) { 3650c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_DEVICE_IDENTITY, response); 3651c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3652c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3653c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3654c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3655c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3656c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3657c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 3658c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville getCDMASubscription(Message response) { 3659c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SUBSCRIPTION, response); 3660c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3661c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3662c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3663c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3664c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3665c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3666c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 3667c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setPhoneType(int phoneType) { // Called by CDMAPhone and GSMPhone constructor 3668c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("setPhoneType=" + phoneType + " old value=" + mPhoneType); 3669c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mPhoneType = phoneType; 3670c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3671c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3672c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3673c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3674c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3675c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void queryCdmaRoamingPreference(Message response) { 3676c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3677c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE, response); 3678c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3679c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3680c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3681c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3682c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3683c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3684c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3685c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3686c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3687c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 3688c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3689c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE, response); 3690c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3691c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 3692c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cdmaRoamingType); 3693c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3694c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3695c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + cdmaRoamingType); 3696c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3697c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3698c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3699c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3700c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3701c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3702c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3703c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 3704c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3705c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE, response); 3706c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3707c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 3708c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(cdmaSubscription); 3709c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3710c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3711c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + cdmaSubscription); 3712c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3713c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3714c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3715c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3716c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3717c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3718c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3719c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 3720c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getCdmaSubscriptionSource(Message response) { 3721c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3722c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response); 3723c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3724c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3725c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3726c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3727c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3728c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3729c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3730c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3731c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3732c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void queryTTYMode(Message response) { 3733c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3734c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); 3735c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3736c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3737c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3738c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3739c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3740c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3741c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3742c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3743c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3744c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setTTYMode(int ttyMode, Message response) { 3745c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain( 3746c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILConstants.RIL_REQUEST_SET_TTY_MODE, response); 3747c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3748c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 3749c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(ttyMode); 3750c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3751c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3752c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + ttyMode); 3753c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3754c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3755c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3756c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3757c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3758c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3759c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3760c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void 3761c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville sendCDMAFeatureCode(String FeatureCode, Message response) { 3762c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); 3763c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3764c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(FeatureCode); 3765c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3766c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) 3767c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville + " : " + FeatureCode); 3768c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3769c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3770c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3771c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3772c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void getCdmaBroadcastConfig(Message response) { 3773c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); 3774c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3775c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3776c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3777c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3778c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig 3779c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { 3780c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); 3781c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3782c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for(int i = 0; i < configValuesArray.length; i++) { 3783c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(configValuesArray[i]); 3784c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3785c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3786c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3787c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3788c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3789c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3790c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3791c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setCdmaBroadcastActivation(boolean activate, Message response) { 3792c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); 3793c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3794c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(1); 3795c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeInt(activate ? 0 :1); 3796c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3797c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3798c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3799c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3800c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3801c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3802c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 3803c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@inheritDoc} 3804c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3805c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void exitEmergencyCallbackMode(Message response) { 3806c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE, response); 3807c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3808c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3809c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3810c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3811c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3812c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3813c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void requestIsimAuthentication(String nonce, Message response) { 3814c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = RILRequest.obtain(RIL_REQUEST_ISIM_AUTHENTICATION, response); 3815c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3816c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville rr.mp.writeString(nonce); 3817c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3818c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); 3819c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3820c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville send(rr); 3821c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3822c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3823c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /* (non-Javadoc) 3824c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @see com.android.internal.telephony.BaseCommands#testingEmergencyCall() 3825c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 3826c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville @Override 3827c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void testingEmergencyCall() { 3828c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (RILJ_LOGD) riljLog("testingEmergencyCall"); 3829c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville mTestingEmergencyCall.set(true); 3830c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3831c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 3832c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 3833c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println("RIL:"); 3834c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mSocket=" + mSocket); 3835c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mSenderThread=" + mSenderThread); 3836c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mSender=" + mSender); 3837c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mReceiverThread=" + mReceiverThread); 3838c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mReceiver=" + mReceiver); 3839c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mWakeLock=" + mWakeLock); 3840c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mWakeLockTimeout=" + mWakeLockTimeout); 3841c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville synchronized (mRequestsList) { 3842c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mRequestMessagesPending=" + mRequestMessagesPending); 3843c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting); 3844c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville int count = mRequestsList.size(); 3845c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mRequestList count=" + count); 3846c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville for (int i = 0; i < count; i++) { 3847c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville RILRequest rr = mRequestsList.get(i); 3848c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest)); 3849c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3850c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3851c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo); 3852c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get()); 3853c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 3854c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville} 3855