Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa862bc4 authored by Daniel Bright's avatar Daniel Bright
Browse files

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
parent 32c30af1
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
/*
 * 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);
    }
}
+34 −0
Original line number Diff line number Diff line
@@ -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.
     *
+8 −0
Original line number Diff line number Diff line
@@ -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.
     *
+1 −0
Original line number Diff line number Diff line
@@ -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;