summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hall Liu <hallliu@google.com> 2020-03-09 20:00:40 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2020-03-09 20:00:40 +0000
commit57948adee38c58bae63f75bf937d0dae68d59753 (patch)
treecfd7e14e682f9e1449dbdcc86f9e176d5a74d931
parent6c26cb4ca2ebd8f9209a888750a79b76b4cbfd88 (diff)
parent6c219c886b1c9e1cd92cf20733f840615b1f2bcf (diff)
Merge changes from topic "sys-selection-chan"
* changes: Split setSystemSelectionChannels Add setSystemSelectionChannels API
-rwxr-xr-xapi/system-current.txt2
-rw-r--r--api/test-current.txt2
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java65
-rw-r--r--telephony/java/com/android/internal/telephony/IBooleanConsumer.aidl23
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl5
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java1
6 files changed, 98 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index b1794761aa67..6a3669e2c444 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -9448,6 +9448,8 @@ package android.telephony {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadioPower(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerState(int);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSimPowerStateForSlot(int, int);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
method @Deprecated public void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoiceActivationState(int);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void shutdownAllRadios();
diff --git a/api/test-current.txt b/api/test-current.txt
index 61cac89ca91c..0c7db06bc0ba 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -3252,6 +3252,8 @@ package android.telephony {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String);
method public void setCarrierTestOverride(String, String, String, String, String, String, String, String, String);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setSystemSelectionChannels(@NonNull java.util.List<android.telephony.RadioAccessSpecifier>);
method @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public void updateTestOtaEmergencyNumberDbFilePath(@NonNull String);
field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe
field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 75aa68c289e1..bfe9152212d5 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -95,6 +95,7 @@ import android.util.Pair;
import com.android.ims.internal.IImsServiceFeatureCallback;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CellNetworkScanResult;
+import com.android.internal.telephony.IBooleanConsumer;
import com.android.internal.telephony.INumberVerificationCallback;
import com.android.internal.telephony.IOns;
import com.android.internal.telephony.IPhoneSubInfo;
@@ -118,6 +119,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -12545,6 +12547,69 @@ public class TelephonyManager {
}
/**
+ * Specify which bands modem's background scan must act on.
+ * If {@code specifiers} is non-empty, the scan will be restricted to the bands specified.
+ * Otherwise, it scans all bands.
+ *
+ * For example, CBRS is only on LTE band 48. By specifying this band,
+ * modem saves more power.
+ *
+ * @param specifiers which bands to scan.
+ * @param executor The executor to execute the callback on
+ * @param callback The callback that gets invoked when the radio responds to the request. Called
+ * with {@code true} if the request succeeded, {@code false} otherwise.
+ * @hide
+ */
+ @SystemApi
+ @TestApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ public void setSystemSelectionChannels(@NonNull List<RadioAccessSpecifier> specifiers,
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull Consumer<Boolean> callback) {
+ Objects.requireNonNull(specifiers, "Specifiers must not be null.");
+ Objects.requireNonNull(executor, "Executor must not be null.");
+ Objects.requireNonNull(callback, "Callback must not be null.");
+ setSystemSelectionChannelsInternal(specifiers, executor, callback);
+ }
+
+ /**
+ * Same as {@link #setSystemSelectionChannels(List, Executor, Consumer<Boolean>)}, but to be
+ * used when the caller does not need feedback on the results of the operation.
+ * @param specifiers which bands to scan.
+ * @hide
+ */
+ @SystemApi
+ @TestApi
+ @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+ public void setSystemSelectionChannels(@NonNull List<RadioAccessSpecifier> specifiers) {
+ Objects.requireNonNull(specifiers, "Specifiers must not be null.");
+ setSystemSelectionChannelsInternal(specifiers, null, null);
+ }
+
+
+ private void setSystemSelectionChannelsInternal(@NonNull List<RadioAccessSpecifier> specifiers,
+ @Nullable @CallbackExecutor Executor executor,
+ @Nullable Consumer<Boolean> callback) {
+ IBooleanConsumer aidlConsumer = callback == null ? null : new IBooleanConsumer.Stub() {
+ @Override
+ public void accept(boolean result) {
+ executor.execute(() -> callback.accept(result));
+ }
+ };
+
+ try {
+ ITelephony service = getITelephony();
+ if (service != null) {
+ service.setSystemSelectionChannels(specifiers, getSubId(), aidlConsumer);
+ }
+ } catch (RemoteException ex) {
+ if (!isSystemProcess()) {
+ ex.rethrowAsRuntimeException();
+ }
+ }
+ }
+
+ /**
* Verifies whether the input MCC/MNC and MVNO correspond to the current carrier.
*
* @param mccmnc the carrier's mccmnc that you want to match
diff --git a/telephony/java/com/android/internal/telephony/IBooleanConsumer.aidl b/telephony/java/com/android/internal/telephony/IBooleanConsumer.aidl
new file mode 100644
index 000000000000..eb5bedabf15f
--- /dev/null
+++ b/telephony/java/com/android/internal/telephony/IBooleanConsumer.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telephony;
+
+// Copies consumer pattern for an operation that requires a boolean result from another process to
+// finish.
+oneway interface IBooleanConsumer {
+ void accept(boolean result);
+} \ No newline at end of file
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 0f2cb44e1ab4..eb669a6eeaa2 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -41,6 +41,7 @@ import android.telephony.NeighboringCellInfo;
import android.telephony.NetworkScanRequest;
import android.telephony.PhoneNumberRange;
import android.telephony.RadioAccessFamily;
+import android.telephony.RadioAccessSpecifier;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.TelephonyHistogram;
@@ -55,6 +56,7 @@ import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import com.android.ims.internal.IImsServiceFeatureCallback;
import com.android.internal.telephony.CellNetworkScanResult;
+import com.android.internal.telephony.IBooleanConsumer;
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.INumberVerificationCallback;
import com.android.internal.telephony.OperatorInfo;
@@ -2195,6 +2197,9 @@ interface ITelephony {
boolean isApnMetered(int apnType, int subId);
+ oneway void setSystemSelectionChannels(in List<RadioAccessSpecifier> specifiers,
+ int subId, IBooleanConsumer resultCallback);
+
boolean isMvnoMatched(int subId, int mvnoType, String mvnoMatchData);
/**
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 0e0a22eecd28..53ad70a07563 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -491,6 +491,7 @@ public interface RILConstants {
int RIL_REQUEST_SWITCH_DUAL_SIM_CONFIG = 207;
int RIL_REQUEST_ENABLE_UICC_APPLICATIONS = 208;
int RIL_REQUEST_GET_UICC_APPLICATIONS_ENABLEMENT = 209;
+ int RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS = 210;
/* Responses begin */
int RIL_RESPONSE_ACKNOWLEDGEMENT = 800;