aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShareef Ali <shareefalis@cyanogenmod.org>2014-09-03 23:39:58 +0000
committerGerrit Code Review <gerrit@cyanogenmod.org>2014-09-03 23:39:58 +0000
commit179e73d83e3b665dc8b6a8a4850b16cc25c759b0 (patch)
tree9d405479b747a3b41d7afbe2d55898843ccfebf5
parentc08850a748ce61895e2b537c8ddb80ae68796288 (diff)
parentc9452eb2286f0750099291ab376a4dc5022eeb66 (diff)
downloadandroid_frameworks_opt_telephony-179e73d83e3b665dc8b6a8a4850b16cc25c759b0.tar.gz
android_frameworks_opt_telephony-179e73d83e3b665dc8b6a8a4850b16cc25c759b0.tar.bz2
android_frameworks_opt_telephony-179e73d83e3b665dc8b6a8a4850b16cc25c759b0.zip
Merge "SamsungQualcommRIL: Handle ResponseCallList in our subclass" into cm-11.0
-rw-r--r--src/java/com/android/internal/telephony/RIL.java3
-rw-r--r--src/java/com/android/internal/telephony/SamsungQualcommRIL.java78
2 files changed, 75 insertions, 6 deletions
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index c20e4bd6c..52fa85607 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -232,7 +232,6 @@ public class RIL extends BaseCommands implements CommandsInterface {
static final String LOG_TAG = RILJ_LOG_TAG;
static final boolean RILJ_LOGD = true;
static final boolean RILJ_LOGV = false; // STOPSHIP if true
- protected boolean samsungDriverCall = false;
/**
* Wake lock timeout should be longer than the longest timeout in
@@ -3613,8 +3612,6 @@ public class RIL extends BaseCommands implements CommandsInterface {
dc.als = p.readInt();
voiceSettings = p.readInt();
dc.isVoice = (0 == voiceSettings) ? false : true;
- if(samsungDriverCall)
- p.readInt();
dc.isVoicePrivacy = (0 != p.readInt());
dc.number = p.readString();
int np = p.readInt();
diff --git a/src/java/com/android/internal/telephony/SamsungQualcommRIL.java b/src/java/com/android/internal/telephony/SamsungQualcommRIL.java
index 5a193ad00..a378ece82 100644
--- a/src/java/com/android/internal/telephony/SamsungQualcommRIL.java
+++ b/src/java/com/android/internal/telephony/SamsungQualcommRIL.java
@@ -268,11 +268,83 @@ public class SamsungQualcommRIL extends RIL implements CommandsInterface {
isGSM = (phoneType != RILConstants.CDMA_PHONE);
}
- @Override
protected Object
responseCallList(Parcel p) {
- samsungDriverCall = driverCallU || (driverCall && !isGSM) || mRilVersion < 7 ? false : true;
- return super.responseCallList(p);
+ int num;
+ int voiceSettings;
+ ArrayList<DriverCall> response;
+ DriverCall dc;
+
+ num = p.readInt();
+ response = new ArrayList<DriverCall>(num);
+
+ if (RILJ_LOGV) {
+ riljLog("responseCallList: num=" + num +
+ " mEmergencyCallbackModeRegistrant=" + mEmergencyCallbackModeRegistrant +
+ " mTestingEmergencyCall=" + mTestingEmergencyCall.get());
+ }
+ 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();
+ voiceSettings = p.readInt();
+ dc.isVoice = (0 == voiceSettings) ? false : true;
+ if(driverCallU || (driverCall && !isGSM) || mRilVersion < 7 ? false : true)
+ p.readInt();
+ dc.isVoicePrivacy = (0 != p.readInt());
+ dc.number = p.readString();
+ int np = p.readInt();
+ dc.numberPresentation = DriverCall.presentationFromCLIP(np);
+ dc.name = p.readString();
+ dc.namePresentation = p.readInt();
+ int uusInfoPresent = p.readInt();
+ if (uusInfoPresent == 1) {
+ dc.uusInfo = new UUSInfo();
+ dc.uusInfo.setType(p.readInt());
+ dc.uusInfo.setDcs(p.readInt());
+ byte[] userData = p.createByteArray();
+ dc.uusInfo.setUserData(userData);
+ riljLogv(String.format("Incoming UUS : type=%d, dcs=%d, length=%d",
+ dc.uusInfo.getType(), dc.uusInfo.getDcs(),
+ dc.uusInfo.getUserData().length));
+ riljLogv("Incoming UUS : data (string)="
+ + new String(dc.uusInfo.getUserData()));
+ riljLogv("Incoming UUS : data (hex): "
+ + IccUtils.bytesToHexString(dc.uusInfo.getUserData()));
+ } else {
+ 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);
+
+ response.add(dc);
+
+ if (dc.isVoicePrivacy) {
+ mVoicePrivacyOnRegistrants.notifyRegistrants();
+ riljLog("InCall VoicePrivacy is enabled");
+ } else {
+ mVoicePrivacyOffRegistrants.notifyRegistrants();
+ riljLog("InCall VoicePrivacy is disabled");
+ }
+ }
+
+ Collections.sort(response);
+
+ if ((num == 0) && mTestingEmergencyCall.getAndSet(false)) {
+ if (mEmergencyCallbackModeRegistrant != null) {
+ riljLog("responseCallList: call ended, testing emergency call," +
+ " notify ECM Registrants");
+ mEmergencyCallbackModeRegistrant.notifyRegistrant();
+ }
+ }
+
+ return response;
}
@Override