diff options
author | Sooraj Sasindran <sasindran@google.com> | 2021-08-23 12:29:30 -0700 |
---|---|---|
committer | Sooraj Sasindran <sasindran@google.com> | 2021-09-03 16:15:37 +0000 |
commit | b3a73d7ea77febfa7cef5513b246c8e676da389a (patch) | |
tree | d49c07a052e846234f2d07093e167a5d3df912c1 | |
parent | 1a4e611fb7af1a6fb60a66f9b5d92516b0fe7fb4 (diff) | |
download | telephony-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.java | 11 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/Phone.java | 15 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/RIL.java | 43 |
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); |