aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSooraj Sasindran <sasindran@google.com>2021-08-23 12:29:30 -0700
committerSooraj Sasindran <sasindran@google.com>2021-09-03 16:15:37 +0000
commitb3a73d7ea77febfa7cef5513b246c8e676da389a (patch)
treed49c07a052e846234f2d07093e167a5d3df912c1
parent1a4e611fb7af1a6fb60a66f9b5d92516b0fe7fb4 (diff)
downloadtelephony-b3a73d7ea77febfa7cef5513b246c8e676da389a.tar.gz
VoNR toggle
Allow user to enable or disable voice over NR. Bug: 190668235 Test: verified using settings UI Change-Id: I55ca15a35310c444e91807554b9dcc7355040d86
-rw-r--r--src/java/com/android/internal/telephony/CommandsInterface.java11
-rw-r--r--src/java/com/android/internal/telephony/Phone.java15
-rw-r--r--src/java/com/android/internal/telephony/RIL.java43
3 files changed, 69 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/CommandsInterface.java b/src/java/com/android/internal/telephony/CommandsInterface.java
index a6ff3fa99a..8a5cbda555 100644
--- a/src/java/com/android/internal/telephony/CommandsInterface.java
+++ b/src/java/com/android/internal/telephony/CommandsInterface.java
@@ -1599,6 +1599,17 @@ public interface CommandsInterface {
default void isNrDualConnectivityEnabled(Message message, WorkSource workSource) {}
/**
+ * Enable or disable Voice over NR (VoNR)
+ * @param enabled enable or disable VoNR.
+ */
+ default void setVoNrEnabled(boolean enabled, Message message, WorkSource workSource) {}
+
+ /**
+ * Is voice over NR enabled
+ */
+ default void isVoNrEnabled(Message message, WorkSource workSource) {}
+
+ /**
* Request to enable/disable network state change notifications when
* location information (lac and/or cid) has changed.
*
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index d09e8cec63..c3e96f6ddd 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -4648,6 +4648,21 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
mCi.setSimCardPower(state, result, workSource);
}
+ /**
+ * Enable or disable Voice over NR (VoNR)
+ * @param enabled enable or disable VoNR.
+ **/
+ public void setVoNrEnabled(boolean enabled, Message result, WorkSource workSource) {
+ mCi.setVoNrEnabled(enabled, result, workSource);
+ }
+
+ /**
+ * Is voice over NR enabled
+ */
+ public void isVoNrEnabled(Message message, WorkSource workSource) {
+ mCi.isVoNrEnabled(message, workSource);
+ }
+
public void setCarrierTestOverride(String mccmnc, String imsi, String iccid, String gid1,
String gid2, String pnn, String spn, String carrierPrivilegeRules, String apn) {
}
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index bd71b0b11d..cbe1a28ad9 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -73,6 +73,7 @@ import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.os.WorkSource;
import android.provider.Settings;
import android.service.carrier.CarrierIdentifier;
@@ -255,6 +256,8 @@ public class RIL extends BaseCommands implements CommandsInterface {
final Integer mPhoneId;
+ private static final String PROPERTY_IS_VONR_ENABLED = "persist.radio.is_vonr_enabled_";
+
/**
* A set that records if radio service is disabled in hal for
* a specific phone id slot to avoid further getService request.
@@ -3576,6 +3579,46 @@ public class RIL extends BaseCommands implements CommandsInterface {
}
}
+ private void setVoNrEnabled(boolean enabled) {
+ SystemProperties.set(PROPERTY_IS_VONR_ENABLED + mPhoneId, String.valueOf(enabled));
+ }
+
+ private boolean isVoNrEnabled() {
+ return SystemProperties.getBoolean(PROPERTY_IS_VONR_ENABLED + mPhoneId, true);
+ }
+
+ /**
+ * Is voice over NR enabled
+ */
+ @Override
+ public void isVoNrEnabled(Message result, WorkSource workSource) {
+ boolean isEnabled = isVoNrEnabled();
+ if (result != null) {
+ AsyncResult.forMessage(result, isEnabled, null);
+ result.sendToTarget();
+ }
+ }
+
+ /**
+ * Enable or disable Voice over NR (VoNR)
+ * @param enabled enable or disable VoNR.
+ */
+ @Override
+ public void setVoNrEnabled(boolean enabled, Message result, WorkSource workSource) {
+ setVoNrEnabled(enabled);
+ /* calling a query api to let HAL know that VoNREnabled state is updated.
+ This is a temporary work around as new HIDL API is not allowed.
+ HAL can check the value of PROPERTY_IS_VONR_ENABLED property to determine
+ if there is any change whenever it receives isNrDualConnectivityEnabled request.
+ This behavior will be removed in Android T.
+ */
+ isNrDualConnectivityEnabled(null, workSource);
+ if (result != null) {
+ AsyncResult.forMessage(result, null, null);
+ result.sendToTarget();
+ }
+ }
+
@Override
public void setCdmaSubscriptionSource(int cdmaSubscription , Message result) {
IRadio radioProxy = getRadioProxy(result);