diff options
author | Shareef Ali <shareefalis@cyanogenmod.org> | 2014-09-03 23:39:58 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2014-09-03 23:39:58 +0000 |
commit | 179e73d83e3b665dc8b6a8a4850b16cc25c759b0 (patch) | |
tree | 9d405479b747a3b41d7afbe2d55898843ccfebf5 | |
parent | c08850a748ce61895e2b537c8ddb80ae68796288 (diff) | |
parent | c9452eb2286f0750099291ab376a4dc5022eeb66 (diff) | |
download | android_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.java | 3 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/SamsungQualcommRIL.java | 78 |
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 |