diff options
Diffstat (limited to 'telephony/java/com/android/internal/telephony/RIL.java')
-rw-r--r-- | telephony/java/com/android/internal/telephony/RIL.java | 930 |
1 files changed, 558 insertions, 372 deletions
diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index 568c86c5fc56..d995075d555e 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -16,43 +16,45 @@ package com.android.internal.telephony; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.BroadcastReceiver; -import com.android.internal.telephony.CallForwardInfo; -import com.android.internal.telephony.RILConstants; -import com.android.internal.telephony.gsm.CommandException; -import com.android.internal.telephony.gsm.NetworkInfo; -import com.android.internal.telephony.gsm.PDPContextState; -import com.android.internal.telephony.IccUtils; -import com.android.internal.telephony.gsm.SmsResponse; -import com.android.internal.telephony.gsm.SuppServiceNotification; - -import android.os.Parcel; -import java.io.IOException; -import android.os.Message; -import android.os.Handler; -import android.net.LocalSocketAddress; import android.net.LocalSocket; -import com.android.internal.os.HandlerThread; +import android.net.LocalSocketAddress; +import android.os.AsyncResult; +import android.os.Handler; import android.os.HandlerInterface; -import java.util.ArrayList; -import java.util.Collections; -import java.io.InputStream; +import android.os.Message; +import android.os.Parcel; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; import android.telephony.PhoneNumberUtils; -import android.telephony.gsm.SmsManager; -import android.telephony.gsm.SmsMessage; +import android.telephony.SmsManager; +import android.telephony.SmsMessage; import android.util.Log; import android.util.Config; -import android.os.AsyncResult; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import com.android.internal.telephony.IccCardStatus; +import static com.android.internal.telephony.RILConstants.*; + +import com.android.internal.os.HandlerThread; +import com.android.internal.telephony.CallForwardInfo; +import com.android.internal.telephony.CommandException; +import com.android.internal.telephony.gsm.NetworkInfo; +import com.android.internal.telephony.gsm.PDPContextState; +import com.android.internal.telephony.gsm.SuppServiceNotification; import com.android.internal.telephony.IccCardApplication; +import com.android.internal.telephony.IccCardStatus; +import com.android.internal.telephony.IccUtils; +import com.android.internal.telephony.RILConstants; +import com.android.internal.telephony.SmsResponse; -import static com.android.internal.telephony.RILConstants.*; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.InputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; /** * {@hide} @@ -77,14 +79,14 @@ class RILRequest { /** * Retrieves a new RILRequest instance from the pool. - * + * * @param request RIL_REQUEST_* * @param result sent when operation completes * @return a RILRequest instance from the pool. */ static RILRequest obtain(int request, Message result) { RILRequest rr = null; - + synchronized(sPoolSync) { if (sPool != null) { rr = sPool; @@ -93,7 +95,7 @@ class RILRequest { sPoolSize--; } } - + if (rr == null) { rr = new RILRequest(); } @@ -118,7 +120,7 @@ class RILRequest { /** * Returns a RILRequest instance to the pool. - * + * * Note: This should only be called once per use. */ void release() { @@ -167,7 +169,7 @@ class RILRequest { ex = CommandException.fromRilErrno(error); if (RIL.RILJ_LOG) Log.d(LOG_TAG, serialString() + "< " - + RIL.requestToString(mRequest) + + RIL.requestToString(mRequest) + " error: " + ex); if (mResult != null) { @@ -186,7 +188,7 @@ class RILRequest { /** * RIL implementation of the CommandsInterface. * FIXME public only for testing - * + * * {@hide} */ public final class RIL extends BaseCommands implements CommandsInterface { @@ -212,7 +214,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { //I'd rather this be LinkedList or something ArrayList<RILRequest> mRequestsList = new ArrayList<RILRequest>(); - + Object mLastNITZTimeInfo; //***** Events @@ -243,7 +245,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } }; - + class RILSender implements HandlerInterface,Runnable { // Only allocated once byte[] dataLength = new byte[4]; @@ -261,7 +263,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { handleMessage(Message msg) { RILRequest rr = (RILRequest)(msg.obj); RILRequest req = null; - + switch (msg.what) { case EVENT_SEND: /** @@ -298,7 +300,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (data.length > RIL_MAX_COMMAND_BYTES) { throw new RuntimeException( - "Parcel larger than max bytes allowed! " + "Parcel larger than max bytes allowed! " + data.length); } @@ -309,7 +311,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { //Log.v(LOG_TAG, "writing packet: " + data.length + " bytes"); - s.getOutputStream().write(dataLength); + s.getOutputStream().write(dataLength); s.getOutputStream().write(data); } catch (IOException ex) { Log.e(LOG_TAG, "IOException", ex); @@ -349,12 +351,12 @@ public final class RIL extends BaseCommands implements CommandsInterface { Log.d(LOG_TAG, "WAKE_LOCK_TIMEOUT " + " mReqPending=" + mRequestMessagesPending + " mRequestList=" + count); - + for (int i = 0; i < count; i++) { rr = mRequestsList.get(i); Log.d(LOG_TAG, i + ": [" + rr.mSerial + "] " + requestToString(rr.mRequest)); - + } } } @@ -436,7 +438,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void run() { int retryCount = 0; - + try {for (;;) { LocalSocket s = null; LocalSocketAddress l; @@ -454,23 +456,23 @@ public final class RIL extends BaseCommands implements CommandsInterface { } catch (IOException ex2) { //ignore failure to close after failure to connect } - + // don't print an error message after the the first time // or after the 8th time if (retryCount == 8) { - Log.e (LOG_TAG, + Log.e (LOG_TAG, "Couldn't find '" + SOCKET_NAME_RIL + "' socket after " + retryCount + " times, continuing to retry silently"); } else if (retryCount > 0 && retryCount < 8) { - Log.i (LOG_TAG, + Log.i (LOG_TAG, "Couldn't find '" + SOCKET_NAME_RIL + "' socket; retrying after timeout"); } try { - Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); + Thread.sleep(SOCKET_OPEN_RETRY_MILLIS); } catch (InterruptedException er) { } @@ -486,7 +488,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { int length = 0; try { InputStream is = mSocket.getInputStream(); - + for (;;) { Parcel p; @@ -517,9 +519,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { + "' socket"); setRadioState (RadioState.RADIO_UNAVAILABLE); - + try { - mSocket.close(); + mSocket.close(); } catch (IOException ex) { } @@ -545,8 +547,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { //***** Constructors - public RIL(Context context) { - this(context, RILConstants.NETWORK_MODE_GLOBAL, RILConstants.SUBSCRIPTION_FROM_RUIM); + public + RIL(Context context) { + this(context, RILConstants.PREFERRED_NETWORK_MODE, + RILConstants.PREFERRED_CDMA_SUBSCRIPTION); } public RIL(Context context, int networkMode, int cdmaSubscription) { @@ -554,14 +558,27 @@ public final class RIL extends BaseCommands implements CommandsInterface { mCdmaSubscription = cdmaSubscription; mNetworkMode = networkMode; //At startup mPhoneType is first set from networkMode - if(networkMode == RILConstants.NETWORK_MODE_GSM_UMTS) { - mPhoneType = RILConstants.GSM_PHONE; - } else { - mPhoneType = RILConstants.CDMA_PHONE; + switch(networkMode) { + case RILConstants.NETWORK_MODE_WCDMA_PREF: + case RILConstants.NETWORK_MODE_GSM_ONLY: + case RILConstants.NETWORK_MODE_WCDMA_ONLY: + case RILConstants.NETWORK_MODE_GSM_UMTS: + mPhoneType = RILConstants.GSM_PHONE; + break; + case RILConstants.NETWORK_MODE_CDMA: + case RILConstants.NETWORK_MODE_CDMA_NO_EVDO: + case RILConstants.NETWORK_MODE_EVDO_NO_CDMA: + mPhoneType = RILConstants.CDMA_PHONE; + break; + case RILConstants.NETWORK_MODE_GLOBAL: + mPhoneType = RILConstants.CDMA_PHONE; + break; + default: + mPhoneType = RILConstants.CDMA_PHONE; } PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); - mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); + mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); mWakeLock.setReferenceCounted(false); mRequestMessagesPending = 0; @@ -581,7 +598,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { //***** CommandsInterface implementation - @Override public void + @Override public void setOnNITZTime(Handler h, int what, Object obj) { super.setOnNITZTime(h, what, obj); @@ -594,10 +611,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } - public void + public void getIccStatus(Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_SIM_STATUS, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -605,10 +622,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void supplyIccPin(String pin, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -619,10 +636,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void supplyIccPuk(String puk, String newPin, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -634,10 +651,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void supplyIccPin2(String pin, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PIN2, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -648,10 +665,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void supplyIccPuk2(String puk, String newPin2, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_SIM_PUK2, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -665,8 +682,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void changeIccPin(String oldPin, String newPin, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -680,8 +697,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void changeIccPin2(String oldPin2, String newPin2, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM RILRequest rr = RILRequest.obtain(RIL_REQUEST_CHANGE_SIM_PIN2, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -707,7 +724,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void supplyNetworkDepersonalization(String netpin, Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result); @@ -718,8 +735,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - - public void + + public void getCurrentCalls (Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result); @@ -728,16 +745,21 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void getPDPContextList(Message result) { - RILRequest rr = RILRequest.obtain(RIL_REQUEST_PDP_CONTEXT_LIST, result); + getDataCallList(result); + } + + public void + getDataCallList(Message result) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_DATA_CALL_LIST, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); } - public void + public void dial (String address, int clirMode, Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result); @@ -749,7 +771,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void getIMSI(Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); @@ -780,13 +802,14 @@ public final class RIL extends BaseCommands implements CommandsInterface { } - public void + public void hangupConnection (int gsmIndex, Message result) { if (RILJ_LOG) riljLog("hangupConnection: gsmIndex=" + gsmIndex); RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP, result); - if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + gsmIndex); + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + + gsmIndex); rr.mp.writeInt(1); rr.mp.writeInt(gsmIndex); @@ -794,9 +817,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void hangupWaitingOrBackground (Message result) { - RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, + RILRequest rr = RILRequest.obtain(RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -806,9 +829,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void hangupForegroundResumeBackground (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain( - RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, + RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -817,9 +840,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void switchWaitingOrHoldingAndActive (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain( - RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, + RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -828,7 +851,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void conference (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CONFERENCE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -840,13 +863,13 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void setPreferredVoicePrivacy(boolean enable, Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE, result); - + rr.mp.writeInt(1); rr.mp.writeInt(enable ? 1:0); - + send(rr); } - + public void getPreferredVoicePrivacy(Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, result); @@ -855,7 +878,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void separateConnection (int gsmIndex, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SEPARATE_CONNECTION, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) @@ -869,7 +892,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void acceptCall (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_ANSWER, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -877,9 +900,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void rejectCall (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_UDUB, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -899,7 +922,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void getLastCallFailCause (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_LAST_CALL_FAIL_CAUSE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -907,10 +930,21 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + /** + * @deprecated + */ + public void getLastPdpFailCause (Message result) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_LAST_PDP_FAIL_CAUSE, result); + getLastDataCallFailCause (result); + } + + /** + * The preferred new alternative to getLastPdpFailCause + */ + public void + getLastDataCallFailCause (Message result) { + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -919,7 +953,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void setMute (boolean enableMute, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_MUTE, response); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) @@ -933,7 +967,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void getMute (Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_MUTE, response); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -943,7 +977,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void getSignalStrength (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIGNAL_STRENGTH, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -951,9 +985,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void getRegistrationState (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_REGISTRATION_STATE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -961,9 +995,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void getGPRSRegistrationState (Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_GPRS_REGISTRATION_STATE, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -971,9 +1005,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void getOperator(Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_OPERATOR, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -981,13 +1015,13 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void sendDtmf(char c, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_DTMF, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + rr.mp.writeString(Character.toString(c)); send(rr); @@ -1018,7 +1052,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void sendSMS (String smscPDU, String pdu, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SEND_SMS, result); rr.mp.writeInt(2); @@ -1026,20 +1060,83 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeString(pdu); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + + send(rr); + } + + public void + sendCdmaSms(byte[] pdu, Message result) { + int address_nbr_of_digits; + int subaddr_nbr_of_digits; + int bearerDataLength; + ByteArrayInputStream bais = new ByteArrayInputStream(pdu); + DataInputStream dis = new DataInputStream(bais); + + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_CDMA_SEND_SMS, result); + + try { + rr.mp.writeInt(dis.readInt()); //teleServiceId + rr.mp.writeInt(dis.readInt()); //servicePresent + rr.mp.writeInt(dis.readInt()); //serviceCategory + rr.mp.writeInt(dis.read()); //address_digit_mode + rr.mp.writeInt(dis.read()); //address_nbr_mode + rr.mp.writeInt(dis.read()); //address_ton + rr.mp.writeInt(dis.read()); //address_nbr_plan + address_nbr_of_digits = (byte) dis.read(); + rr.mp.writeInt(address_nbr_of_digits); + for(int i=0; i < address_nbr_of_digits; i++){ + rr.mp.writeInt(dis.readByte()); // address_orig_bytes[i] + } + rr.mp.writeInt(dis.read()); //subaddressType + rr.mp.writeInt(dis.read()); //subaddr_odd + subaddr_nbr_of_digits = (byte) dis.read(); + rr.mp.writeInt(subaddr_nbr_of_digits); + for(int i=0; i < subaddr_nbr_of_digits; i++){ + rr.mp.writeInt(dis.readByte()); //subaddr_orig_bytes[i] + } + + bearerDataLength = dis.read(); + rr.mp.writeInt(bearerDataLength); + for(int i=0; i < bearerDataLength; i++){ + rr.mp.writeInt(dis.readByte()); //bearerData[i] + } + }catch (IOException ex){ + if (RILJ_LOG) riljLog("sendSmsCdma: conversion from input stream to object failed: " + + ex); + } + + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); + send(rr); } public void deleteSmsOnSim(int index, Message response) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_DELETE_SMS_ON_SIM, response); - + rr.mp.writeInt(1); rr.mp.writeInt(index); - if (Config.LOGD) { + if (Config.LOGD) { if (RILJ_LOG) riljLog(rr.serialString() + "> " - + requestToString(rr.mRequest) + + requestToString(rr.mRequest) + + " " + index); + } + + send(rr); + } + + public void deleteSmsOnRuim(int index, Message response) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM, + response); + + rr.mp.writeInt(1); + rr.mp.writeInt(index); + + if (Config.LOGD) { + if (RILJ_LOG) riljLog(rr.serialString() + "> " + + requestToString(rr.mRequest) + " " + index); } @@ -1048,17 +1145,35 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void writeSmsToSim(int status, String smsc, String pdu, Message response) { status = translateStatus(status); - + RILRequest rr = RILRequest.obtain(RIL_REQUEST_WRITE_SMS_TO_SIM, response); - + rr.mp.writeInt(status); rr.mp.writeString(pdu); rr.mp.writeString(smsc); - - if (Config.LOGD) { + + if (Config.LOGD) { if (RILJ_LOG) riljLog(rr.serialString() + "> " - + requestToString(rr.mRequest) + + requestToString(rr.mRequest) + + " " + status); + } + + send(rr); + } + + public void writeSmsToRuim(int status, String pdu, Message response) { + status = translateStatus(status); + + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, + response); + + rr.mp.writeInt(status); + rr.mp.writeString(pdu); + + if (Config.LOGD) { + if (RILJ_LOG) riljLog(rr.serialString() + "> " + + requestToString(rr.mRequest) + " " + status); } @@ -1071,46 +1186,76 @@ public final class RIL extends BaseCommands implements CommandsInterface { */ private int translateStatus(int status) { switch(status & 0x7) { - case SmsManager.STATUS_ON_SIM_READ: + case SmsManager.STATUS_ON_ICC_READ: return 1; - case SmsManager.STATUS_ON_SIM_UNREAD: + case SmsManager.STATUS_ON_ICC_UNREAD: return 0; - case SmsManager.STATUS_ON_SIM_SENT: + case SmsManager.STATUS_ON_ICC_SENT: return 3; - case SmsManager.STATUS_ON_SIM_UNSENT: + case SmsManager.STATUS_ON_ICC_UNSENT: return 2; } - + // Default to READ. return 1; } - public void + /** + * @deprecated + */ + public void setupDefaultPDP(String apn, String user, String password, Message result) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_SETUP_DEFAULT_PDP, result); + String radioTechnology = "1"; //0 for CDMA, 1 for GSM/UMTS + String profile = ""; //profile number, NULL for GSM/UMTS + setupDataCall(radioTechnology, profile, apn, user, + password, result); - rr.mp.writeInt(3); + } + + /** + * @deprecated + */ + public void + deactivateDefaultPDP(int cid, Message result) { + deactivateDataCall(cid, result); + } + + /** + * The preferred new alternative to setupDefaultPDP that is + * CDMA-compatible. + * + */ + public void + setupDataCall(String radioTechnology, String profile, String apn, + String user, String password, Message result) { + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); + + rr.mp.writeInt(5); + + rr.mp.writeString(radioTechnology); + rr.mp.writeString(profile); rr.mp.writeString(apn); rr.mp.writeString(user); rr.mp.writeString(password); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + apn); - + send(rr); } public void - deactivateDefaultPDP(int cid, Message result) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DEFAULT_PDP, result); + deactivateDataCall(int cid, Message result) { + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result); rr.mp.writeInt(1); rr.mp.writeString(Integer.toString(cid)); - if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + cid); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + + requestToString(rr.mRequest) + " " + cid); + send(rr); } @@ -1120,25 +1265,13 @@ public final class RIL extends BaseCommands implements CommandsInterface { if(mInitialRadioStateChange) { synchronized (mStateMonitor) { if (!mState.isOn()) { - int modemNetworkMode; - switch(mNetworkMode) { - case RILConstants.NETWORK_MODE_GSM_UMTS: - modemNetworkMode = Phone.NT_GSM_UMTS_AUTO_TYPE; - break; - case RILConstants.NETWORK_MODE_CDMA: - modemNetworkMode = Phone.NT_CDMA_EVDO_AUTO_TYPE; - break; - case RILConstants.NETWORK_MODE_GLOBAL: - default: - modemNetworkMode = Phone.NT_GLOBAL_AUTO_TYPE; - } RILRequest rrPnt = RILRequest.obtain( RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, null); rrPnt.mp.writeInt(1); - rrPnt.mp.writeInt(modemNetworkMode); - if (RILJ_LOG) riljLog(rrPnt.serialString() + "> " - + requestToString(rrPnt.mRequest) + " : " + modemNetworkMode); + rrPnt.mp.writeInt(mNetworkMode); + if (RILJ_LOG) riljLog(rrPnt.serialString() + "> " + + requestToString(rrPnt.mRequest) + " : " + mNetworkMode); send(rrPnt); @@ -1146,31 +1279,31 @@ public final class RIL extends BaseCommands implements CommandsInterface { RIL_REQUEST_CDMA_SET_SUBSCRIPTION, null); rrCs.mp.writeInt(1); rrCs.mp.writeInt(mCdmaSubscription); - if (RILJ_LOG) riljLog(rrCs.serialString() + "> " - + requestToString(rrCs.mRequest) + " : " + mCdmaSubscription); - send(rrCs); + if (RILJ_LOG) riljLog(rrCs.serialString() + "> " + + requestToString(rrCs.mRequest) + " : " + mCdmaSubscription); + send(rrCs); } } } - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result); rr.mp.writeInt(1); rr.mp.writeInt(on ? 1 : 0); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } public void setSuppServiceNotifications(boolean enable, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, result); rr.mp.writeInt(1); rr.mp.writeInt(enable ? 1 : 0); - + if (Config.LOGD) { if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -1179,27 +1312,42 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - public void + public void acknowledgeLastIncomingSMS(boolean success, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SMS_ACKNOWLEDGE, result); rr.mp.writeInt(1); rr.mp.writeInt(success ? 1 : 0); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } - + public void - iccIO (int command, int fileid, String path, int p1, int p2, int p3, + acknowledgeLastIncomingCdmaSms(boolean success, Message result) { + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, result); + + rr.mp.writeInt(success ? 0 : 1); //RIL_CDMA_SMS_ErrorClass + // cause code according to X.S004-550E + rr.mp.writeInt(39); //39 means other terminal problem; is not interpreted for success. + + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); + + send(rr); + } + + + public void + iccIO (int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, Message result) { - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM - RILRequest rr + //Note: This RIL request has not been renamed to ICC, + // but this request is also valid for SIM and RUIM + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SIM_IO, result); - + rr.mp.writeInt(command); rr.mp.writeInt(fileid); rr.mp.writeString(path); @@ -1210,47 +1358,47 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeString(pin2); if (RILJ_LOG) riljLog(rr.serialString() + "> iccIO: " + requestToString(rr.mRequest) - + " 0x" + Integer.toHexString(command) - + " 0x" + Integer.toHexString(fileid) + " " + + " 0x" + Integer.toHexString(command) + + " 0x" + Integer.toHexString(fileid) + " " + p1 + "," + p2 + "," + p3); - + send(rr); } - + public void getCLIR(Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CLIR, result); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } public void setCLIR(int clirMode, Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_CLIR, result); // count ints rr.mp.writeInt(1); rr.mp.writeInt(clirMode); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + clirMode); - + send(rr); } public void queryCallWaiting(int serviceClass, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_WAITING, response); rr.mp.writeInt(1); rr.mp.writeInt(serviceClass); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + serviceClass); @@ -1259,70 +1407,70 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void setCallWaiting(boolean enable, int serviceClass, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_CALL_WAITING, response); - + rr.mp.writeInt(2); rr.mp.writeInt(enable ? 1 : 0); rr.mp.writeInt(serviceClass); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + enable + ", " + serviceClass); - + send(rr); } public void setNetworkSelectionModeAutomatic(Message response) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, response); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } - public void + public void setNetworkSelectionModeManual(String operatorNumeric, Message response) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, response); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + operatorNumeric); rr.mp.writeString(operatorNumeric); - + send(rr); } - public void + public void getNetworkSelectionMode(Message response) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, response); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } - public void + public void getAvailableNetworks(Message response) { - RILRequest rr - = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS, response); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); - + send(rr); } public void - setCallForward(int action, int cfReason, int serviceClass, + setCallForward(int action, int cfReason, int serviceClass, String number, int timeSeconds, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_CALL_FORWARD, response); rr.mp.writeInt(action); @@ -1331,18 +1479,18 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); rr.mp.writeString(number); rr.mp.writeInt (timeSeconds); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) - + " " + action + " " + cfReason + " " + serviceClass + + " " + action + " " + cfReason + " " + serviceClass + timeSeconds); - + send(rr); } public void queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_CALL_FORWARD_STATUS, response); rr.mp.writeInt(2); // 2 is for query action, not in used anyway @@ -1351,7 +1499,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeInt(PhoneNumberUtils.toaFromString(number)); rr.mp.writeString(number); rr.mp.writeInt (0); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + cfReason + " " + serviceClass); @@ -1371,9 +1519,9 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void getBasebandVersion (Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_BASEBAND_VERSION, response); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); send(rr); @@ -1387,7 +1535,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); // count strings - rr.mp.writeInt(3); + rr.mp.writeInt(3); rr.mp.writeString(facility); rr.mp.writeString(password); @@ -1418,10 +1566,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - + public void sendUSSD (String ussdString, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_SEND_USSD, response); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) @@ -1445,7 +1593,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void resetRadio(Message result) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_RESET_RADIO, result); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -1454,7 +1602,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } public void invokeOemRilRequestRaw(byte[] data, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_RAW, response); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) @@ -1467,7 +1615,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } public void invokeOemRilRequestStrings(String[] strings, Message response) { - RILRequest rr + RILRequest rr = RILRequest.obtain(RIL_REQUEST_OEM_HOOK_STRINGS, response); if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); @@ -1604,10 +1752,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SET_LOCATION_UPDATES, response); rr.mp.writeInt(1); rr.mp.writeInt(enable ? 1 : 0); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + ": " + enable); - + send(rr); } @@ -1617,12 +1765,12 @@ public final class RIL extends BaseCommands implements CommandsInterface { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SCREEN_STATE, null); rr.mp.writeInt(1); rr.mp.writeInt(on ? 1 : 0); - + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + ": " + on); - + send(rr); } - + protected void onRadioAvailable() { // In case screen state was lost (due to process crash), @@ -1649,7 +1797,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case 8: newState = RadioState.NV_NOT_READY; break; case 9: newState = RadioState.NV_READY; break; - default: + default: throw new RuntimeException( "Unrecognized RIL_RadioState: " +state); } @@ -1666,7 +1814,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { setRadioPower(false, null); } else { if (DBG) Log.d(LOG_TAG, "Radio OFF @ init"); - setRadioState(newState); + setRadioState(newState); } mInitialRadioStateChange = false; } else { @@ -1679,7 +1827,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { * a) There is outstanding RIL request sent to RIL deamon and no replied * b) There is a request waiting to be sent out. * - * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't + * There is a WAKE_LOCK_TIMEOUT to release the lock, though it shouldn't * happen often. */ @@ -1728,13 +1876,11 @@ public final class RIL extends BaseCommands implements CommandsInterface { processUnsolicited (p); } else if (type == RESPONSE_SOLICITED) { processSolicited (p); - } + } releaseWakeLockIfDone(); } - - private RILRequest findAndRemoveRequestFromList(int serial) { synchronized (mRequestsList) { for (int i = 0, s = mRequestsList.size() ; i < s ; i++) { @@ -1763,7 +1909,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr = findAndRemoveRequestFromList(serial); if (rr == null) { - Log.w(LOG_TAG, "Unexpected solicited response! sn: " + Log.w(LOG_TAG, "Unexpected solicited response! sn: " + serial + " error: " + error); return; } @@ -1775,16 +1921,13 @@ public final class RIL extends BaseCommands implements CommandsInterface { } Object ret; - + try {switch (rr.mRequest) { /* cat libs/telephony/ril_commands.h \ | egrep "^ *{RIL_" \ | sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/' */ - //TODO T: start - // These RIL requests will not be renamed to ICC, - // but these requests are also valid for SIM and RUIM case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break; case RIL_REQUEST_ENTER_SIM_PIN: ret = responseVoid(p); break; case RIL_REQUEST_ENTER_SIM_PUK: ret = responseVoid(p); break; @@ -1792,7 +1935,6 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_ENTER_SIM_PUK2: ret = responseVoid(p); break; case RIL_REQUEST_CHANGE_SIM_PIN: ret = responseVoid(p); break; case RIL_REQUEST_CHANGE_SIM_PIN2: ret = responseVoid(p); break; - //TODO T: end case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseVoid(p); break; case RIL_REQUEST_GET_CURRENT_CALLS: ret = responseCallList(p); break; case RIL_REQUEST_DIAL: ret = responseVoid(p); break; @@ -1812,9 +1954,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_DTMF: ret = responseVoid(p); break; case RIL_REQUEST_SEND_SMS: ret = responseSMS(p); break; case RIL_REQUEST_SEND_SMS_EXPECT_MORE: ret = responseSMS(p); break; - case RIL_REQUEST_SETUP_DEFAULT_PDP: ret = responseStrings(p); break; - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + case RIL_REQUEST_SETUP_DATA_CALL: ret = responseStrings(p); break; case RIL_REQUEST_SIM_IO: ret = responseICC_IO(p); break; case RIL_REQUEST_SEND_USSD: ret = responseVoid(p); break; case RIL_REQUEST_CANCEL_USSD: ret = responseVoid(p); break; @@ -1828,7 +1968,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_GET_IMEI: ret = responseString(p); break; case RIL_REQUEST_GET_IMEISV: ret = responseString(p); break; case RIL_REQUEST_ANSWER: ret = responseVoid(p); break; - case RIL_REQUEST_DEACTIVATE_DEFAULT_PDP: ret = responseVoid(p); break; + case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; case RIL_REQUEST_QUERY_FACILITY_LOCK: ret = responseInts(p); break; case RIL_REQUEST_SET_FACILITY_LOCK: ret = responseVoid(p); break; case RIL_REQUEST_CHANGE_BARRING_PASSWORD: ret = responseVoid(p); break; @@ -1840,30 +1980,30 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_DTMF_STOP: ret = responseVoid(p); break; case RIL_REQUEST_BASEBAND_VERSION: ret = responseString(p); break; case RIL_REQUEST_SEPARATE_CONNECTION: ret = responseVoid(p); break; - case RIL_REQUEST_SET_MUTE: ret =responseVoid(p); break; - case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; - case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; - case RIL_REQUEST_LAST_PDP_FAIL_CAUSE: ret = responseInts(p); break; - case RIL_REQUEST_PDP_CONTEXT_LIST: ret = responseContextList(p); break; - case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; - case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; - case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; + case RIL_REQUEST_SET_MUTE: ret = responseVoid(p); break; + case RIL_REQUEST_GET_MUTE: ret = responseInts(p); break; + case RIL_REQUEST_QUERY_CLIP: ret = responseInts(p); break; + case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: ret = responseInts(p); break; + case RIL_REQUEST_DATA_CALL_LIST: ret = responseDataCallList(p); break; + case RIL_REQUEST_RESET_RADIO: ret = responseVoid(p); break; + case RIL_REQUEST_OEM_HOOK_RAW: ret = responseRaw(p); break; + case RIL_REQUEST_OEM_HOOK_STRINGS: ret = responseStrings(p); break; case RIL_REQUEST_SCREEN_STATE: ret = responseVoid(p); break; - case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; - case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; - case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; - case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; - case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; - case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; - case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; - case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; - case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; - case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; - case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; - case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; - case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseInts(p); break; - case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseStrings(p); break; - case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; + case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION: ret = responseVoid(p); break; + case RIL_REQUEST_WRITE_SMS_TO_SIM: ret = responseInts(p); break; + case RIL_REQUEST_DELETE_SMS_ON_SIM: ret = responseVoid(p); break; + case RIL_REQUEST_SET_BAND_MODE: ret = responseVoid(p); break; + case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE: ret = responseInts(p); break; + case RIL_REQUEST_STK_GET_PROFILE: ret = responseString(p); break; + case RIL_REQUEST_STK_SET_PROFILE: ret = responseVoid(p); break; + case RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND: ret = responseString(p); break; + case RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE: ret = responseVoid(p); break; + case RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: ret = responseInts(p); break; + case RIL_REQUEST_EXPLICIT_CALL_TRANSFER: ret = responseVoid(p); break; + case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret = responseVoid(p); break; + case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE: ret = responseInts(p); break; + case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS: ret = responseStrings(p); break; + case RIL_REQUEST_SET_LOCATION_UPDATES: ret = responseVoid(p); break; case RIL_REQUEST_CDMA_SET_SUBSCRIPTION: ret = responseVoid(p); break; case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE: ret = responseVoid(p); break; case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE: ret = responseInts(p); break; @@ -1880,24 +2020,21 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: ret = responseCDMA_BR_CNF(p); break; case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: ret = responseVoid(p); break; case RIL_REQUEST_BROADCAST_ACTIVATION: ret = responseVoid(p); break; - case RIL_REQUEST_SETUP_DATA_CALL: ret = responseStrings(p); break; - case RIL_REQUEST_DEACTIVATE_DATA_CALL: ret = responseVoid(p); break; case RIL_REQUEST_CDMA_VALIDATE_AKEY: ret = responseVoid(p); break; case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: ret = responseVoid(p); break; - case RIL_REQUEST_CDMA_ENCODE_SMS: ret = responseRIL_CDMA_Encoded_SMS(p); break; - case RIL_REQUEST_CDMA_DECODE_SMS: ret = responseRIL_CDMA_SMS_ClientBd(p); break; case RIL_REQUEST_CDMA_SUBSCRIPTION: ret = responseStrings(p); break; case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: ret = responseInts(p); break; case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: ret = responseVoid(p); break; - case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; + case RIL_REQUEST_DEVICE_IDENTITY: ret = responseStrings(p); break; default: - throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); + throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest); //break; }} catch (Throwable tr) { // Exceptions here usually mean invalid RIL responses - - Log.w(LOG_TAG, rr.serialString() + "< " - + requestToString(rr.mRequest) + " exception, possible invalid RIL response", tr); + + Log.w(LOG_TAG, rr.serialString() + "< " + + requestToString(rr.mRequest) + + " exception, possible invalid RIL response", tr); if (rr.mResult != null) { AsyncResult.forMessage(rr.mResult, null, tr); @@ -1909,12 +2046,12 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOG) riljLog(rr.serialString() + "< " + requestToString(rr.mRequest) + " " + retToString(rr.mRequest, ret)); - + if (rr.mResult != null) { AsyncResult.forMessage(rr.mResult, ret, null); rr.mResult.sendToTarget(); } - + rr.release(); } @@ -1994,26 +2131,24 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_ON_USSD: ret = responseStrings(p); break; case RIL_UNSOL_NITZ_TIME_RECEIVED: ret = responseString(p); break; case RIL_UNSOL_SIGNAL_STRENGTH: ret = responseInts(p); break; - case RIL_UNSOL_PDP_CONTEXT_LIST_CHANGED: ret = responseContextList(p);break; + case RIL_UNSOL_DATA_CALL_LIST_CHANGED: ret = responseDataCallList(p);break; case RIL_UNSOL_SUPP_SVC_NOTIFICATION: ret = responseSuppServiceNotification(p); break; case RIL_UNSOL_STK_SESSION_END: ret = responseVoid(p); break; case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break; case RIL_UNSOL_STK_EVENT_NOTIFY: ret = responseString(p); break; case RIL_UNSOL_STK_CALL_SETUP: ret = responseInts(p); break; case RIL_UNSOL_SIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM case RIL_UNSOL_SIM_REFRESH: ret = responseInts(p); break; case RIL_UNSOL_CALL_RING: ret = responseVoid(p); break; case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: ret = responseVoid(p); break; - case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCDMA_SMS(p); break; + case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: ret = responseCdmaSms(p); break; case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: ret = responseString(p); break; case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: ret = responseVoid(p); break; - default: - throw new RuntimeException("Unrecognized unsol response: " + response); + default: + throw new RuntimeException("Unrecognized unsol response: " + response); //break; (implied) }} catch (Throwable tr) { - Log.e(LOG_TAG, "Exception processing unsol response: " + Log.e(LOG_TAG, "Exception processing unsol response: " + response, tr); return; } @@ -2022,7 +2157,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: /* has bonus radio state int */ setRadioStateFromRILInt(p.readInt()); - + if (RILJ_LOG) riljLog("[UNSL]< RADIO_STATE_CHANGED " +mState); break; case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: @@ -2047,7 +2182,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { SmsMessage sms; - sms = SmsMessage.newFromCMT(a); + sms = SmsMessage.newFromCMT(a); if (mSMSRegistrant != null) { mSMSRegistrant .notifyRegistrant(new AsyncResult(null, sms, null)); @@ -2081,7 +2216,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { break; case RIL_UNSOL_ON_USSD: String[] resp = (String[])ret; - + if (resp.length < 2) { resp = new String[2]; resp[0] = ((String[])ret)[0]; @@ -2093,7 +2228,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { new AsyncResult (null, resp, null)); } break; - case RIL_UNSOL_NITZ_TIME_RECEIVED: + case RIL_UNSOL_NITZ_TIME_RECEIVED: if (RILJ_LOG) riljLog("[UNSL]< NITZ_TIME_RECEIVED " + retToString(response, ret)); // has bonus int containing time_t that the NITZ @@ -2106,7 +2241,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { result[1] = Integer.valueOf(nitzReceiveTime); if (mNITZTimeRegistrant != null) { - + mNITZTimeRegistrant .notifyRegistrant(new AsyncResult (null, result, null)); } else { @@ -2114,23 +2249,23 @@ public final class RIL extends BaseCommands implements CommandsInterface { mLastNITZTimeInfo = result; } break; - + case RIL_UNSOL_SIGNAL_STRENGTH: // Note this is set to "verbose" because it happens // frequently if (Config.LOGV) Log.v(LOG_TAG, "[UNSL]< SIGNAL_STRENGTH " + retToString(response, ret)); - + if (mSignalStrengthRegistrant != null) { mSignalStrengthRegistrant.notifyRegistrant( new AsyncResult (null, ret, null)); } break; - case RIL_UNSOL_PDP_CONTEXT_LIST_CHANGED: - if (RILJ_LOG) riljLog("[UNSL]< PDP_CONTEXT_CHANGED " + retToString(response, ret)); + case RIL_UNSOL_DATA_CALL_LIST_CHANGED: + if (RILJ_LOG) riljLog("[UNSL]< DATA_CALL_LIST_CHANGED " + + retToString(response, ret)); - mPDPRegistrants - .notifyRegistrants(new AsyncResult(null, ret, null)); + mDataConnectionRegistrants.notifyRegistrants(new AsyncResult(null, ret, null)); break; case RIL_UNSOL_SUPP_SVC_NOTIFICATION: @@ -2197,14 +2332,12 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (RILJ_LOG) riljLog("[UNSL]< SIM_SMS_STORAGE_FULL"); } - if (mSimSmsFullRegistrant != null) { - mSimSmsFullRegistrant.notifyRegistrant(); + if (mIccSmsFullRegistrant != null) { + mIccSmsFullRegistrant.notifyRegistrant(); } break; - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM - case RIL_UNSOL_SIM_REFRESH: + case RIL_UNSOL_SIM_REFRESH: if (Config.LOGD) { if (RILJ_LOG) riljLog("[UNSL]< SIM_REFRESH " + retToString(response, ret)); } @@ -2214,31 +2347,44 @@ public final class RIL extends BaseCommands implements CommandsInterface { new AsyncResult (null, ret, null)); } break; - - case RIL_UNSOL_CALL_RING: + + case RIL_UNSOL_CALL_RING: if (Config.LOGD) { if (RILJ_LOG) riljLog("[UNSL]< CALL_RING "); } - + if (mRingRegistrant != null) { mRingRegistrant.notifyRegistrant(); } break; - case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: - // TODO + case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: + if (mIccStatusChangedRegistrants != null) { + mIccStatusChangedRegistrants.notifyRegistrants(); + } break; - + case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: - // TODO + SmsMessage sms = (SmsMessage) ret; + + if (mSMSRegistrant != null) { + mSMSRegistrant + .notifyRegistrant(new AsyncResult(null, sms, null)); + } break; - + case RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS: - // TODO + // TODO T: waiting for SMS BC feature break; - + case RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL: - // TODO + if (Config.LOGD) { + if (RILJ_LOG) riljLog("[UNSL]< RUIM_SMS_STORAGE_FULL"); + } + + if (mIccSmsFullRegistrant != null) { + mIccSmsFullRegistrant.notifyRegistrant(); + } break; } } @@ -2291,22 +2437,24 @@ public final class RIL extends BaseCommands implements CommandsInterface { private Object responseSuppServiceNotification(Parcel p) { SuppServiceNotification notification = new SuppServiceNotification(); - + notification.notificationType = p.readInt(); notification.code = p.readInt(); notification.index = p.readInt(); notification.type = p.readInt(); notification.number = p.readString(); - + return notification; } - + private Object - responseCDMA_SMS(Parcel p) { - // TODO - return null; + responseCdmaSms(Parcel p) { + SmsMessage sms; + sms = SmsMessage.newFromParcel(p); + + return sms; } - + private Object responseString(Parcel p) { String response; @@ -2331,7 +2479,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { response[i] = p.readString(); } } - + return response; } @@ -2364,7 +2512,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { int sw1, sw2; byte data[] = null; Message ret; - + sw1 = p.readInt(); sw2 = p.readInt(); @@ -2377,16 +2525,16 @@ public final class RIL extends BaseCommands implements CommandsInterface { responseIccCardStatus(Parcel p) { RadioState currentRadioState; IccCardApplication ca; - + currentRadioState = getRadioState(); - + IccCardStatus status = new IccCardStatus(); status.card_state = status.CardStateFromRILInt(p.readInt()); status.universal_pin_state = status.PinStateFromRILInt(p.readInt()); status.gsm_umts_subscription_app_index = p.readInt(); status.cdma_subscription_app_index = p.readInt(); status.num_applications = p.readInt(); - + // limit to maximum allowed applications if (status.num_applications > IccCardStatus.CARD_MAX_APPS) { status.num_applications = IccCardStatus.CARD_MAX_APPS; @@ -2398,13 +2546,13 @@ public final class RIL extends BaseCommands implements CommandsInterface { ca.app_state = ca.AppStateFromRILInt(p.readInt()); ca.perso_substate = ca.PersoSubstateFromRILInt(p.readInt()); ca.aid = p.readString(); - ca.app_label = p.readString(); + ca.app_label = p.readString(); ca.pin1_replaced = p.readInt(); ca.pin1 = p.readInt(); ca.pin2 = p.readInt(); status.application.add(ca); } - + // this is common for all radio technologies if (!status.card_state.isCardPresent()) { return IccStatus.ICC_ABSENT; @@ -2412,25 +2560,25 @@ public final class RIL extends BaseCommands implements CommandsInterface { // check radio technology if( currentRadioState == RadioState.RADIO_OFF || - currentRadioState == RadioState.RADIO_UNAVAILABLE || + currentRadioState == RadioState.RADIO_UNAVAILABLE || currentRadioState == RadioState.SIM_NOT_READY || currentRadioState == RadioState.RUIM_NOT_READY || currentRadioState == RadioState.NV_NOT_READY || currentRadioState == RadioState.NV_READY ) { return IccStatus.ICC_NOT_READY; } - + if( currentRadioState == RadioState.SIM_LOCKED_OR_ABSENT || currentRadioState == RadioState.SIM_READY || currentRadioState == RadioState.RUIM_LOCKED_OR_ABSENT || currentRadioState == RadioState.RUIM_READY) { - + int index; - + // check for CDMA radio technology if (currentRadioState == RadioState.RUIM_LOCKED_OR_ABSENT || currentRadioState == RadioState.RUIM_READY) { - index = status.cdma_subscription_app_index; + index = status.cdma_subscription_app_index; } else { index = status.gsm_umts_subscription_app_index; @@ -2442,7 +2590,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } if (status.application.get(index).app_state.isPukRequired()) { return IccStatus.ICC_PUK; - } + } if (status.application.get(index).app_state.isSubscriptionPersoEnabled()) { return IccStatus.ICC_NETWORK_PERSONALIZATION; } @@ -2454,11 +2602,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } return IccStatus.ICC_NOT_READY; } - - // we should never reach this point - //TODO T: start - // These RIL requests will not be renamed to ICC, - // but these requests are also valid for SIM and RUIM + throw new RuntimeException ("Invalid RIL_REQUEST_GET_SIM_STATUS result"); } @@ -2466,6 +2610,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { private Object responseCallList(Parcel p) { int num; + byte voiceSettings; ArrayList<DriverCall> response; DriverCall dc; @@ -2474,14 +2619,15 @@ public final class RIL extends BaseCommands implements CommandsInterface { for (int i = 0 ; i < num ; i++) { dc = new DriverCall(); - + dc.state = DriverCall.stateFromCLCC(p.readInt()); dc.index = p.readInt(); dc.TOA = p.readInt(); dc.isMpty = (0 != p.readInt()); dc.isMT = (0 != p.readInt()); dc.als = p.readInt(); - dc.isVoice = (0 == p.readInt()) ? false : true; + voiceSettings = p.readByte(); + dc.isVoice = (0 == voiceSettings) ? false : true; dc.number = p.readString(); // Make sure there's a leading + on addresses with a TOA @@ -2491,6 +2637,16 @@ public final class RIL extends BaseCommands implements CommandsInterface { dc.number, dc.TOA); response.add(dc); + + if ( RILConstants.CDMA_VOICE_PRIVACY == voiceSettings ) { + mVoicePrivacyOnRegistrants.notifyRegistrants(); + Log.d(LOG_TAG, "InCall VoicePrivacy is enabled: " + + Integer.toString(voiceSettings)); + } else { + mVoicePrivacyOffRegistrants.notifyRegistrants(); + Log.d(LOG_TAG, "InCall VoicePrivacy is disabled: " + + Integer.toString(voiceSettings)); + } } Collections.sort(response); @@ -2499,7 +2655,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } private Object - responseContextList(Parcel p) { + responseDataCallList(Parcel p) { int num; ArrayList<PDPContextState> response; @@ -2528,7 +2684,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { if (strings.length % 4 != 0) { throw new RuntimeException( - "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " + "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " + strings.length + " strings, expected multible of 4"); } @@ -2542,7 +2698,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { strings[i+2], strings[i+3])); } - + return ret; } @@ -2554,20 +2710,19 @@ public final class RIL extends BaseCommands implements CommandsInterface { private Object responseCDMA_BR_CNF(Parcel p) { - // TODO - return null; - } - - private Object - responseRIL_CDMA_Encoded_SMS(Parcel p) { - // TODO - return null; - } + int numInts; + int response[]; - private Object - responseRIL_CDMA_SMS_ClientBd(Parcel p) { - // TODO - return null; + numInts = p.readInt(); + + response = new int[numInts]; + + response[0] = numInts; + for (int i = 1 ; i < numInts; i++) { + response[i] = p.readInt(); + } + + return response; } static String @@ -2578,9 +2733,6 @@ public final class RIL extends BaseCommands implements CommandsInterface { | sed -re 's/\{RIL_([^,]+),[^,]+,([^}]+).+/case RIL_\1: return "\1";/' */ switch(request) { - //TODO T: start - // These RIL requests will not be renamed to ICC, - // but these requests are also valid for SIM and RUIM case RIL_REQUEST_GET_SIM_STATUS: return "GET_SIM_STATUS"; case RIL_REQUEST_ENTER_SIM_PIN: return "ENTER_SIM_PIN"; case RIL_REQUEST_ENTER_SIM_PUK: return "ENTER_SIM_PUK"; @@ -2588,7 +2740,6 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_ENTER_SIM_PUK2: return "ENTER_SIM_PUK2"; case RIL_REQUEST_CHANGE_SIM_PIN: return "CHANGE_SIM_PIN"; case RIL_REQUEST_CHANGE_SIM_PIN2: return "CHANGE_SIM_PIN2"; - //TODO T: end case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: return "ENTER_NETWORK_DEPERSONALIZATION"; case RIL_REQUEST_GET_CURRENT_CALLS: return "GET_CURRENT_CALLS"; case RIL_REQUEST_DIAL: return "DIAL"; @@ -2608,9 +2759,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_DTMF: return "DTMF"; case RIL_REQUEST_SEND_SMS: return "SEND_SMS"; case RIL_REQUEST_SEND_SMS_EXPECT_MORE: return "SEND_SMS_EXPECT_MORE"; - case RIL_REQUEST_SETUP_DEFAULT_PDP: return "SETUP_DEFAULT_PDP"; - //TODO T: This RIL request will not be renamed to ICC, - // but this request is also valid for SIM and RUIM + case RIL_REQUEST_SETUP_DATA_CALL: return "SETUP_DATA_CALL"; case RIL_REQUEST_SIM_IO: return "SIM_IO"; case RIL_REQUEST_SEND_USSD: return "SEND_USSD"; case RIL_REQUEST_CANCEL_USSD: return "CANCEL_USSD"; @@ -2624,7 +2773,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_GET_IMEI: return "GET_IMEI"; case RIL_REQUEST_GET_IMEISV: return "GET_IMEISV"; case RIL_REQUEST_ANSWER: return "ANSWER"; - case RIL_REQUEST_DEACTIVATE_DEFAULT_PDP: return "DEACTIVATE_DEFAULT_PDP"; + case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "DEACTIVATE_DATA_CALL"; case RIL_REQUEST_QUERY_FACILITY_LOCK: return "QUERY_FACILITY_LOCK"; case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK"; case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD"; @@ -2639,8 +2788,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_SET_MUTE: return "SET_MUTE"; case RIL_REQUEST_GET_MUTE: return "GET_MUTE"; case RIL_REQUEST_QUERY_CLIP: return "QUERY_CLIP"; - case RIL_REQUEST_LAST_PDP_FAIL_CAUSE: return "LAST_PDP_FAIL_CAUSE"; - case RIL_REQUEST_PDP_CONTEXT_LIST: return "PDP_CONTEXT_LIST"; + case RIL_REQUEST_LAST_DATA_CALL_FAIL_CAUSE: return "LAST_DATA_CALL_FAIL_CAUSE"; + case RIL_REQUEST_DATA_CALL_LIST: return "DATA_CALL_LIST"; case RIL_REQUEST_RESET_RADIO: return "RESET_RADIO"; case RIL_REQUEST_OEM_HOOK_RAW: return "OEM_HOOK_RAW"; case RIL_REQUEST_OEM_HOOK_STRINGS: return "OEM_HOOK_STRINGS"; @@ -2676,12 +2825,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG"; case RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG: return "RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG"; case RIL_REQUEST_BROADCAST_ACTIVATION: return "RIL_REQUEST_BROADCAST_ACTIVATION"; - case RIL_REQUEST_SETUP_DATA_CALL: return "RIL_REQUEST_SETUP_DATA_CALL"; - case RIL_REQUEST_DEACTIVATE_DATA_CALL: return "RIL_REQUEST_DEACTIVATE_DATA_CALL"; case RIL_REQUEST_CDMA_VALIDATE_AKEY: return "RIL_REQUEST_CDMA_VALIDATE_AKEY"; case RIL_REQUEST_CDMA_BROADCAST_ACTIVATION: return "RIL_REQUEST_CDMA_BROADCAST_ACTIVATION"; - case RIL_REQUEST_CDMA_ENCODE_SMS: return "RIL_REQUEST_CDMA_ENCODE_SMS"; - case RIL_REQUEST_CDMA_DECODE_SMS: return "RIL_REQUEST_CDMA_DECODE_SMS"; case RIL_REQUEST_CDMA_SUBSCRIPTION: return "RIL_REQUEST_CDMA_SUBSCRIPTION"; case RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM: return "RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM"; case RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM: return "RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM"; @@ -2693,7 +2838,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { private void riljLog(String msg) { Log.d(LOG_TAG, msg); } - + // ***** Methods for CDMA support public void getDeviceIdentity(Message response) { @@ -2728,7 +2873,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - + /** * {@inheritDoc} */ @@ -2744,7 +2889,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { send(rr); } - + /** * {@inheritDoc} */ @@ -2767,10 +2912,10 @@ public final class RIL extends BaseCommands implements CommandsInterface { public void queryTTYModeEnabled(Message response) { RILRequest rr = RILRequest.obtain( RILConstants.RIL_REQUEST_QUERY_TTY_MODE, response); - + send(rr); - } - + } + /** * {@inheritDoc} */ @@ -2780,7 +2925,48 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeInt(1); rr.mp.writeInt(enable ? 1 : 0); - + + send(rr); + } + + /** + * {@inheritDoc} + */ + public void + sendCDMAFeatureCode(String FeatureCode, Message response) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_FLASH, response); + + rr.mp.writeInt(1); + rr.mp.writeString(FeatureCode); + + if (RILJ_LOG) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + + " : " + FeatureCode); + + send(rr); + } + + public void getCdmaBroadcastConfig(Message response) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, response); + + send(rr); + } + + public void setCdmaBroadcastConfig(int[] configValuesArray, Message response) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, response); + + for(int i = 0; i < configValuesArray.length; i++) { + rr.mp.writeInt(configValuesArray[i]); + } + + send(rr); + } + + public void activateCdmaBroadcastSms(int activate, Message response) { + RILRequest rr = RILRequest.obtain(RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, response); + + rr.mp.writeInt(1); + rr.mp.writeInt(activate); + send(rr); } } |