Loading src/java/com/android/internal/telephony/Connection.java +11 −0 Original line number Diff line number Diff line Loading @@ -241,6 +241,8 @@ public abstract class Connection { protected boolean mNumberConverted = false; protected String mConvertedNumber; protected ArrayList<String> mForwardedNumber = null; //May be null. Incoming calls only. protected String mPostDialString; // outgoing calls only protected int mNextPostDialChar; // index into postDialString Loading Loading @@ -360,6 +362,15 @@ public abstract class Connection { return mIsAdhocConference; } /** * Gets redirecting address (e.g. phone number) associated with connection. * * @return ArrayList of the forwarded number or null if unavailable */ public ArrayList<String> getForwardedNumber() { return mForwardedNumber; } /** * Gets CNAP name associated with connection. * @return cnap name or null if unavailable Loading src/java/com/android/internal/telephony/DriverCall.java +1 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class DriverCall implements Comparable<DriverCall> { public boolean isMpty; @UnsupportedAppUsage public String number; public String forwardedNumber; // May be null. Incoming calls only. public int TOA; @UnsupportedAppUsage public boolean isVoice; Loading src/java/com/android/internal/telephony/GsmCdmaConnection.java +13 −2 Original line number Diff line number Diff line Loading @@ -26,22 +26,24 @@ import android.os.PersistableBundle; import android.os.PowerManager; import android.os.Registrant; import android.os.SystemClock; import android.telephony.emergency.EmergencyNumber; import android.telephony.CarrierConfigManager; import android.telephony.DisconnectCause; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.PhoneInternalInterface.DialArgs; import com.android.internal.telephony.cdma.CdmaCallWaitingNotification; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; import com.android.internal.telephony.uicc.UiccCardApplication; import com.android.internal.telephony.PhoneInternalInterface.DialArgs; import com.android.telephony.Rlog; import java.util.ArrayList; import java.util.Arrays; /** * {@hide} */ Loading Loading @@ -139,6 +141,7 @@ public class GsmCdmaConnection extends Connection { mAddress = dc.number; setEmergencyCallInfo(mOwner); mForwardedNumber = new ArrayList<String>(Arrays.asList(dc.forwardedNumber)); mIsIncoming = dc.isMT; mCreateTime = System.currentTimeMillis(); mCnapName = dc.name; Loading Loading @@ -704,6 +707,14 @@ public class GsmCdmaConnection extends Connection { mOwner.getPhone().getVoiceCallSessionStats().onAudioCodecChanged(this, dc.audioQuality); } ArrayList<String> forwardedNumber = new ArrayList<String>(Arrays.asList(dc.forwardedNumber)); if (!equalsHandlesNulls(mForwardedNumber, forwardedNumber)) { if (Phone.DEBUG_PHONE) log("update: mForwardedNumber, # changed!"); mForwardedNumber = forwardedNumber; changed = true; } // A null cnapName should be the same as "" if (TextUtils.isEmpty(dc.name)) { if (!TextUtils.isEmpty(mCnapName)) { Loading src/java/com/android/internal/telephony/RIL.java +8 −1 Original line number Diff line number Diff line Loading @@ -1106,7 +1106,14 @@ public class RIL extends BaseCommands implements CommandsInterface { } try { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_6)) { // IRadio V1.6 android.hardware.radio.V1_6.IRadio radioProxy16 = (android.hardware.radio.V1_6.IRadio) radioProxy; radioProxy16.getCurrentCalls_1_6(rr.mSerial); } else { radioProxy.getCurrentCalls(rr.mSerial); } } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getCurrentCalls", e); } Loading src/java/com/android/internal/telephony/RadioResponse.java +104 −78 Original line number Diff line number Diff line Loading @@ -225,6 +225,16 @@ public class RadioResponse extends IRadioResponse.Stub { responseCurrentCalls_1_2(responseInfo, calls); } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param calls Current call list */ public void getCurrentCallsResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls) { responseCurrentCalls_1_6(responseInfo, calls); } /** * @param responseInfo Response info struct containing response type, serial no. and error */ Loading Loading @@ -2072,46 +2082,7 @@ public class RadioResponse extends IRadioResponse.Stub { DriverCall dc; for (int i = 0; i < num; i++) { dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (calls.get(i).state)); dc.index = calls.get(i).index; dc.TOA = calls.get(i).toa; dc.isMpty = calls.get(i).isMpty; dc.isMT = calls.get(i).isMT; dc.als = calls.get(i).als; dc.isVoice = calls.get(i).isVoice; dc.isVoicePrivacy = calls.get(i).isVoicePrivacy; dc.number = calls.get(i).number; dc.numberPresentation = DriverCall.presentationFromCLIP( (int) (calls.get(i).numberPresentation)); dc.name = calls.get(i).name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (calls.get(i).namePresentation)); if (calls.get(i).uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(calls.get(i).uusInfo.get(0).uusType); dc.uusInfo.setDcs(calls.get(i).uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(calls.get(i).uusInfo.get(0).uusData)) { byte[] userData = calls.get(i).uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); } else { mRil.riljLog("responseCurrentCalls: uusInfo data is null or empty"); } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); dc = convertToDriverCall(calls.get(i)); dcCalls.add(dc); Loading Loading @@ -2151,48 +2122,48 @@ public class RadioResponse extends IRadioResponse.Stub { DriverCall dc; for (int i = 0; i < num; i++) { dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (calls.get(i).base.state)); dc.index = calls.get(i).base.index; dc.TOA = calls.get(i).base.toa; dc.isMpty = calls.get(i).base.isMpty; dc.isMT = calls.get(i).base.isMT; dc.als = calls.get(i).base.als; dc.isVoice = calls.get(i).base.isVoice; dc.isVoicePrivacy = calls.get(i).base.isVoicePrivacy; dc.number = calls.get(i).base.number; dc.numberPresentation = DriverCall.presentationFromCLIP( (int) (calls.get(i).base.numberPresentation)); dc.name = calls.get(i).base.name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (calls.get(i).base.namePresentation)); if (calls.get(i).base.uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(calls.get(i).base.uusInfo.get(0).uusType); dc.uusInfo.setDcs(calls.get(i).base.uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(calls.get(i).base.uusInfo.get(0).uusData)) { byte[] userData = calls.get(i).base.uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); dc = convertToDriverCall_1_2(calls.get(i)); dcCalls.add(dc); if (dc.isVoicePrivacy) { mRil.mVoicePrivacyOnRegistrants.notifyRegistrants(); mRil.riljLog("InCall VoicePrivacy is enabled"); } else { mRil.riljLog("responseCurrentCalls: uusInfo data is null or empty"); mRil.mVoicePrivacyOffRegistrants.notifyRegistrants(); mRil.riljLog("InCall VoicePrivacy is disabled"); } } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); Collections.sort(dcCalls); if ((num == 0) && mRil.mTestingEmergencyCall.getAndSet(false)) { if (mRil.mEmergencyCallbackModeRegistrant != null) { mRil.riljLog("responseCurrentCalls: call ended, testing emergency call," + " notify ECM Registrants"); mRil.mEmergencyCallbackModeRegistrant.notifyRegistrant(); } } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dcCalls); } mRil.processResponseDone(rr, responseInfo, dcCalls); } } private void responseCurrentCalls_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls) { RILRequest rr = mRil.processResponse_1_6(responseInfo); if (rr != null) { int num = calls.size(); ArrayList<DriverCall> dcCalls = new ArrayList<DriverCall>(num); DriverCall dc; dc.audioQuality = (int) (calls.get(i).audioQuality); for (int i = 0; i < num; i++) { dc = convertToDriverCall_1_6(calls.get(i)); dcCalls.add(dc); Loading @@ -2218,10 +2189,65 @@ public class RadioResponse extends IRadioResponse.Stub { if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dcCalls); } mRil.processResponseDone(rr, responseInfo, dcCalls); mRil.processResponseDone_1_6(rr, responseInfo, dcCalls); } } private DriverCall convertToDriverCall(android.hardware.radio.V1_0.Call call) { DriverCall dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (call.state)); dc.index = call.index; dc.TOA = call.toa; dc.isMpty = call.isMpty; dc.isMT = call.isMT; dc.als = call.als; dc.isVoice = call.isVoice; dc.isVoicePrivacy = call.isVoicePrivacy; dc.number = call.number; dc.numberPresentation = DriverCall.presentationFromCLIP((int) (call.numberPresentation)); dc.name = call.name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (call.namePresentation)); if (call.uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(call.uusInfo.get(0).uusType); dc.uusInfo.setDcs(call.uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(call.uusInfo.get(0).uusData)) { byte[] userData = call.uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); } else { mRil.riljLog("convertToDriverCall: uusInfo data is null or empty"); } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); return dc; } private DriverCall convertToDriverCall_1_2(android.hardware.radio.V1_2.Call call) { android.hardware.radio.V1_0.Call earlierVersionCall = call.base; DriverCall dc = convertToDriverCall(earlierVersionCall); dc.audioQuality = (int) (call.audioQuality); return dc; } private DriverCall convertToDriverCall_1_6(android.hardware.radio.V1_6.Call call) { android.hardware.radio.V1_2.Call earlierVersionCall = call.base; DriverCall dc = convertToDriverCall_1_2(earlierVersionCall); dc.forwardedNumber = call.forwardedNumber; return dc; } private void responseVoid(RadioResponseInfo responseInfo) { RILRequest rr = mRil.processResponse(responseInfo); Loading Loading
src/java/com/android/internal/telephony/Connection.java +11 −0 Original line number Diff line number Diff line Loading @@ -241,6 +241,8 @@ public abstract class Connection { protected boolean mNumberConverted = false; protected String mConvertedNumber; protected ArrayList<String> mForwardedNumber = null; //May be null. Incoming calls only. protected String mPostDialString; // outgoing calls only protected int mNextPostDialChar; // index into postDialString Loading Loading @@ -360,6 +362,15 @@ public abstract class Connection { return mIsAdhocConference; } /** * Gets redirecting address (e.g. phone number) associated with connection. * * @return ArrayList of the forwarded number or null if unavailable */ public ArrayList<String> getForwardedNumber() { return mForwardedNumber; } /** * Gets CNAP name associated with connection. * @return cnap name or null if unavailable Loading
src/java/com/android/internal/telephony/DriverCall.java +1 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class DriverCall implements Comparable<DriverCall> { public boolean isMpty; @UnsupportedAppUsage public String number; public String forwardedNumber; // May be null. Incoming calls only. public int TOA; @UnsupportedAppUsage public boolean isVoice; Loading
src/java/com/android/internal/telephony/GsmCdmaConnection.java +13 −2 Original line number Diff line number Diff line Loading @@ -26,22 +26,24 @@ import android.os.PersistableBundle; import android.os.PowerManager; import android.os.Registrant; import android.os.SystemClock; import android.telephony.emergency.EmergencyNumber; import android.telephony.CarrierConfigManager; import android.telephony.DisconnectCause; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.PhoneInternalInterface.DialArgs; import com.android.internal.telephony.cdma.CdmaCallWaitingNotification; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState; import com.android.internal.telephony.uicc.UiccCardApplication; import com.android.internal.telephony.PhoneInternalInterface.DialArgs; import com.android.telephony.Rlog; import java.util.ArrayList; import java.util.Arrays; /** * {@hide} */ Loading Loading @@ -139,6 +141,7 @@ public class GsmCdmaConnection extends Connection { mAddress = dc.number; setEmergencyCallInfo(mOwner); mForwardedNumber = new ArrayList<String>(Arrays.asList(dc.forwardedNumber)); mIsIncoming = dc.isMT; mCreateTime = System.currentTimeMillis(); mCnapName = dc.name; Loading Loading @@ -704,6 +707,14 @@ public class GsmCdmaConnection extends Connection { mOwner.getPhone().getVoiceCallSessionStats().onAudioCodecChanged(this, dc.audioQuality); } ArrayList<String> forwardedNumber = new ArrayList<String>(Arrays.asList(dc.forwardedNumber)); if (!equalsHandlesNulls(mForwardedNumber, forwardedNumber)) { if (Phone.DEBUG_PHONE) log("update: mForwardedNumber, # changed!"); mForwardedNumber = forwardedNumber; changed = true; } // A null cnapName should be the same as "" if (TextUtils.isEmpty(dc.name)) { if (!TextUtils.isEmpty(mCnapName)) { Loading
src/java/com/android/internal/telephony/RIL.java +8 −1 Original line number Diff line number Diff line Loading @@ -1106,7 +1106,14 @@ public class RIL extends BaseCommands implements CommandsInterface { } try { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_6)) { // IRadio V1.6 android.hardware.radio.V1_6.IRadio radioProxy16 = (android.hardware.radio.V1_6.IRadio) radioProxy; radioProxy16.getCurrentCalls_1_6(rr.mSerial); } else { radioProxy.getCurrentCalls(rr.mSerial); } } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getCurrentCalls", e); } Loading
src/java/com/android/internal/telephony/RadioResponse.java +104 −78 Original line number Diff line number Diff line Loading @@ -225,6 +225,16 @@ public class RadioResponse extends IRadioResponse.Stub { responseCurrentCalls_1_2(responseInfo, calls); } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param calls Current call list */ public void getCurrentCallsResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls) { responseCurrentCalls_1_6(responseInfo, calls); } /** * @param responseInfo Response info struct containing response type, serial no. and error */ Loading Loading @@ -2072,46 +2082,7 @@ public class RadioResponse extends IRadioResponse.Stub { DriverCall dc; for (int i = 0; i < num; i++) { dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (calls.get(i).state)); dc.index = calls.get(i).index; dc.TOA = calls.get(i).toa; dc.isMpty = calls.get(i).isMpty; dc.isMT = calls.get(i).isMT; dc.als = calls.get(i).als; dc.isVoice = calls.get(i).isVoice; dc.isVoicePrivacy = calls.get(i).isVoicePrivacy; dc.number = calls.get(i).number; dc.numberPresentation = DriverCall.presentationFromCLIP( (int) (calls.get(i).numberPresentation)); dc.name = calls.get(i).name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (calls.get(i).namePresentation)); if (calls.get(i).uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(calls.get(i).uusInfo.get(0).uusType); dc.uusInfo.setDcs(calls.get(i).uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(calls.get(i).uusInfo.get(0).uusData)) { byte[] userData = calls.get(i).uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); } else { mRil.riljLog("responseCurrentCalls: uusInfo data is null or empty"); } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); dc = convertToDriverCall(calls.get(i)); dcCalls.add(dc); Loading Loading @@ -2151,48 +2122,48 @@ public class RadioResponse extends IRadioResponse.Stub { DriverCall dc; for (int i = 0; i < num; i++) { dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (calls.get(i).base.state)); dc.index = calls.get(i).base.index; dc.TOA = calls.get(i).base.toa; dc.isMpty = calls.get(i).base.isMpty; dc.isMT = calls.get(i).base.isMT; dc.als = calls.get(i).base.als; dc.isVoice = calls.get(i).base.isVoice; dc.isVoicePrivacy = calls.get(i).base.isVoicePrivacy; dc.number = calls.get(i).base.number; dc.numberPresentation = DriverCall.presentationFromCLIP( (int) (calls.get(i).base.numberPresentation)); dc.name = calls.get(i).base.name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (calls.get(i).base.namePresentation)); if (calls.get(i).base.uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(calls.get(i).base.uusInfo.get(0).uusType); dc.uusInfo.setDcs(calls.get(i).base.uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(calls.get(i).base.uusInfo.get(0).uusData)) { byte[] userData = calls.get(i).base.uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); dc = convertToDriverCall_1_2(calls.get(i)); dcCalls.add(dc); if (dc.isVoicePrivacy) { mRil.mVoicePrivacyOnRegistrants.notifyRegistrants(); mRil.riljLog("InCall VoicePrivacy is enabled"); } else { mRil.riljLog("responseCurrentCalls: uusInfo data is null or empty"); mRil.mVoicePrivacyOffRegistrants.notifyRegistrants(); mRil.riljLog("InCall VoicePrivacy is disabled"); } } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); Collections.sort(dcCalls); if ((num == 0) && mRil.mTestingEmergencyCall.getAndSet(false)) { if (mRil.mEmergencyCallbackModeRegistrant != null) { mRil.riljLog("responseCurrentCalls: call ended, testing emergency call," + " notify ECM Registrants"); mRil.mEmergencyCallbackModeRegistrant.notifyRegistrant(); } } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dcCalls); } mRil.processResponseDone(rr, responseInfo, dcCalls); } } private void responseCurrentCalls_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls) { RILRequest rr = mRil.processResponse_1_6(responseInfo); if (rr != null) { int num = calls.size(); ArrayList<DriverCall> dcCalls = new ArrayList<DriverCall>(num); DriverCall dc; dc.audioQuality = (int) (calls.get(i).audioQuality); for (int i = 0; i < num; i++) { dc = convertToDriverCall_1_6(calls.get(i)); dcCalls.add(dc); Loading @@ -2218,10 +2189,65 @@ public class RadioResponse extends IRadioResponse.Stub { if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dcCalls); } mRil.processResponseDone(rr, responseInfo, dcCalls); mRil.processResponseDone_1_6(rr, responseInfo, dcCalls); } } private DriverCall convertToDriverCall(android.hardware.radio.V1_0.Call call) { DriverCall dc = new DriverCall(); // TODO: change name of function stateFromCLCC() in DriverCall.java to name // clarifying what is CLCC dc.state = DriverCall.stateFromCLCC((int) (call.state)); dc.index = call.index; dc.TOA = call.toa; dc.isMpty = call.isMpty; dc.isMT = call.isMT; dc.als = call.als; dc.isVoice = call.isVoice; dc.isVoicePrivacy = call.isVoicePrivacy; dc.number = call.number; dc.numberPresentation = DriverCall.presentationFromCLIP((int) (call.numberPresentation)); dc.name = call.name; dc.namePresentation = DriverCall.presentationFromCLIP((int) (call.namePresentation)); if (call.uusInfo.size() == 1) { dc.uusInfo = new UUSInfo(); dc.uusInfo.setType(call.uusInfo.get(0).uusType); dc.uusInfo.setDcs(call.uusInfo.get(0).uusDcs); if (!TextUtils.isEmpty(call.uusInfo.get(0).uusData)) { byte[] userData = call.uusInfo.get(0).uusData.getBytes(); dc.uusInfo.setUserData(userData); } else { mRil.riljLog("convertToDriverCall: uusInfo data is null or empty"); } mRil.riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d", dc.uusInfo.getType(), dc.uusInfo.getDcs(), dc.uusInfo.getUserData().length)); mRil.riljLogv("Incoming UUS : data (hex): " + IccUtils.bytesToHexString(dc.uusInfo.getUserData())); } else { mRil.riljLogv("Incoming UUS : NOT present!"); } // Make sure there's a leading + on addresses with a TOA of 145 dc.number = PhoneNumberUtils.stringFromStringAndTOA(dc.number, dc.TOA); return dc; } private DriverCall convertToDriverCall_1_2(android.hardware.radio.V1_2.Call call) { android.hardware.radio.V1_0.Call earlierVersionCall = call.base; DriverCall dc = convertToDriverCall(earlierVersionCall); dc.audioQuality = (int) (call.audioQuality); return dc; } private DriverCall convertToDriverCall_1_6(android.hardware.radio.V1_6.Call call) { android.hardware.radio.V1_2.Call earlierVersionCall = call.base; DriverCall dc = convertToDriverCall_1_2(earlierVersionCall); dc.forwardedNumber = call.forwardedNumber; return dc; } private void responseVoid(RadioResponseInfo responseInfo) { RILRequest rr = mRil.processResponse(responseInfo); Loading