Add Radio Interface Capabilities

* Introduces a set of capabilities specific for the radio interface
that are determined by the vendor and are then surfaced through
TelephonyManager.
* There are no capabilities yet defined and will come later in S

Test: Added cts, ran cts, and telephony tests
Bug: 163085807
Merged-In: I56713e05cbd5200baa2a3bc79f7f4b0d580ad2a1
Change-Id: Icbbfa056dc5280acdf53c142742f4e4b8d60229e
This commit is contained in:
Daniel Bright
2020-11-20 12:04:22 -08:00
parent 32c30af109
commit fa862bc4aa
4 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
/*
* 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 android.telephony;
import android.util.ArraySet;
/**
* Contains the set of supported capabilities that the Radio Interface supports on this device.
*
* @hide
*/
public class RadioInterfaceCapabilities {
private final ArraySet<String> mSupportedCapabilities;
public RadioInterfaceCapabilities() {
mSupportedCapabilities = new ArraySet<>();
}
/**
* Marks a capability as supported
*
* @param capabilityName the name of the capability
*/
public void addSupportedCapability(
@TelephonyManager.RadioInterfaceCapability String capabilityName) {
mSupportedCapabilities.add(capabilityName);
}
/**
* Whether the capability is supported
*
* @param capabilityName the name of the capability
*/
public boolean isSupported(String capabilityName) {
return mSupportedCapabilities.contains(capabilityName);
}
}

View File

@@ -14337,6 +14337,40 @@ public class TelephonyManager {
return Collections.emptyList();
}
/** @hide */
@IntDef(prefix = {"RADIO_INTERFACE_CAPABILITY_"},
value = {})
public @interface RadioInterfaceCapability {}
/**
* Whether the device supports a given capability on the radio interface.
*
* If the capability is not in the set of radio interface capabilities, false is returned.
*
* @param capability the name of the capability to check for
* @return the availability of the capability
*
* @hide
*/
public boolean isRadioInterfaceCapabilitySupported(
@NonNull @RadioInterfaceCapability String capability) {
try {
if (capability == null) return false;
ITelephony telephony = getITelephony();
if (telephony != null) {
return telephony.isRadioInterfaceCapabilitySupported(capability);
} else {
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
if (!isSystemProcess()) {
ex.rethrowAsRuntimeException();
}
}
return false;
}
/**
* Indicates that the thermal mitigation request was completed successfully.
*

View File

@@ -2279,6 +2279,14 @@ interface ITelephony {
*/
CarrierBandwidth getCarrierBandwidth(int subId);
/**
* Checks whether the device supports the given capability on the radio interface.
*
* @param capability the name of the capability
* @return the availability of the capability
*/
boolean isRadioInterfaceCapabilitySupported(String capability);
/**
* Thermal mitigation request to control functionalities at modem.
*

View File

@@ -520,6 +520,7 @@ public interface RILConstants {
int RIL_REQUEST_START_HANDOVER = 217;
int RIL_REQUEST_CANCEL_HANDOVER = 218;
int RIL_REQUEST_GET_SYSTEM_SELECTION_CHANNELS = 219;
int RIL_REQUEST_GET_HAL_DEVICE_CAPABILITIES = 220;
int RIL_REQUEST_SET_DATA_THROTTLING = 221;
int RIL_REQUEST_SET_ALLOWED_NETWORK_TYPE_BITMAP = 222;
int RIL_REQUEST_GET_ALLOWED_NETWORK_TYPE_BITMAP = 223;