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

Commit 816f2643 authored by Eric Schwarzenbach's avatar Eric Schwarzenbach Committed by android-build-merger
Browse files

Add reporting criteria to radio interface.

am: 21c6dc35

Change-Id: I3118ddc3b41302cd62c1f4321206442df2d6ed0c
parents 80a245f0 21c6dc35
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ hidl_interface {
        "CellInfoLte",
        "CellInfoWcdma",
        "IncrementalResultsPeriodicityRange",
        "IndicationFilter",
        "LinkCapacityEstimate",
        "MaxSearchTimeRange",
        "NetworkScanRequest",
        "NetworkScanResult",
+69 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.hardware.radio@1.2;

import @1.1::IRadio;
import @1.1::RadioAccessNetworks;

/**
 * This interface is used by telephony and telecom to talk to cellular radio.
@@ -37,4 +38,72 @@ interface IRadio extends @1.1::IRadio {
     * Response function is IRadioResponse.startNetworkScanResponse()
     */
    oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request);

    /**
     * Sets the indication filter.
     *
     * Prevents the reporting of specified unsolicited indications from the radio. This is used
     * for power saving in instances when those indications are not needed. If unset, defaults to
     * @1.2::IndicationFilter:ALL.
     *
     * @param serial Serial number of request.
     * @param indicationFilter 32-bit bitmap of IndicationFilter. Bits set to 1 indicate the
     *        indications are enabled. See @1.2::IndicationFilter for the definition of each bit.
     *
     * Response callback is IRadioResponse.setIndicationFilterResponse()
     */
    oneway setIndicationFilter_1_2(int32_t serial, bitfield<IndicationFilter> indicationFilter);

    /**
     * Sets the signal strength reporting criteria.
     *
     * The resulting reporting criteria are the AND of all the supplied criteria.
     *
     * Note: Reporting criteria must be individually set for each RAN. If unset, reporting criteria
     * for that RAN are implementation-defined.
     *
     * Response callback is IRadioResponse.setSignalStrengthReportingCriteriaResponse().
     *
     * @param serial Serial number of request.
     * @param hysteresisMs A hysteresis time in milliseconds to prevent flapping. A value of 0
     *                     disables hysteresis.
     * @param hysteresisDb An interval in dB defining the required magnitude change between reports.
     *                     hysteresisDb must be smaller than the smallest threshold delta. An
     *                     interval value of 0 disables hysteresis.
     * @param thresholdsDbm A vector of trigger thresholds in dBm. A vector size of 0 disables the
     *                      use of thresholds for reporting.
     * @param ran The type of network for which to apply these thresholds.
     */
    oneway setSignalStrengthReportingCriteria(int32_t serial, int32_t hysteresisMs,
            int32_t hysteresisDb, vec<int32_t> thresholdsDbm, RadioAccessNetworks ran);

    /**
     * Sets the link capacity reporting criteria.
     *
     * The resulting reporting criteria are the AND of all the supplied criteria.
     *
     * Note: Reporting criteria must be individually set for each RAN. If unset, reporting criteria
     * for that RAN are implementation-defined.
     *
     * Response callback is IRadioResponse.setLinkCapacityReportingCriteriaResponse().
     *
     * @param serial Serial number of request.
     * @param hysteresisMs A hysteresis time in milliseconds to prevent flapping. A value of 0
     *                     disables hysteresis.
     * @param hysteresisDlKbps An interval in kbps defining the required magnitude change between DL
     *                         reports. hysteresisDlKbps must be smaller than the smallest threshold
     *                         delta. A value of 0 disables hysteresis.
     * @param hysteresisUlKbps An interval in kbps defining the required magnitude change between UL
     *                         reports. hysteresisUlKbps must be smaller than the smallest threshold
     *                         delta. A value of 0 disables hysteresis.
     * @param thresholdsDownlinkKbps A vector of trigger thresholds in kbps for downlink reports. A
     *                               vector size of 0 disables the use of DL thresholds for
     *                               reporting.
     * @param thresholdsUplinkKbps A vector of trigger thresholds in kbps for uplink reports. A
     *                             vector size of 0 disables the use of UL thresholds for reporting.
     * @param ran The type of network for which to apply these thresholds.
     */
    oneway setLinkCapacityReportingCriteria(int32_t serial, int32_t hysteresisMs,
            int32_t hysteresisDlKbps, int32_t hysteresisUlKbps, vec<int32_t> thresholdsDownlinkKbps,
            vec<int32_t> thresholdsUplinkKbps, RadioAccessNetworks ran);
};
+16 −0
Original line number Diff line number Diff line
@@ -37,4 +37,20 @@ interface IRadioIndication extends @1.1::IRadioIndication {
     * @param records Current cell information known to radio
     */
     oneway cellInfoList_1_2(RadioIndicationType type, vec<CellInfo> records);

    /**
     * Indicates current link capacity estimate.
     *
     * This replaces @1.0::IRadioIndication.lceData(). The framework must be able to handle
     * either this function or @1.0::IRadioIndication.lceData(). Implementations supporting
     * v1.2 must call this function instead of lceData().
     *
     * This indication is sent whenever the reporting criteria, as set by
     * @1.2::IRadio.setLinkCapacityReportingCriteria, are met and the indication is not
     * suppressed by @1.2::IRadio.setIndicationFilter_1_2().
     *
     * @param type Type of radio indication
     * @param lce LinkCapacityEstimate information as defined in types.hal
     */
    oneway currentLinkCapacityEstimate(RadioIndicationType type, LinkCapacityEstimate lce);
};
+22 −0
Original line number Diff line number Diff line
@@ -50,4 +50,26 @@ interface IRadioResponse extends @1.1::IRadioResponse {
     *   RadioError:NONE
     */
    oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus);

    /**
     * @param info Response info struct containing response type, serial no. and error
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:INVALID_ARGUMENTS
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     */
    oneway setSignalStrengthReportingCriteriaResponse(RadioResponseInfo info);

    /**
     * @param info Response info struct containing response type, serial no. and error
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:INVALID_ARGUMENTS
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     */
    oneway setLinkCapacityReportingCriteriaResponse(RadioResponseInfo info);
};
+51 −0
Original line number Diff line number Diff line
@@ -64,6 +64,46 @@ enum IncrementalResultsPeriodicityRange : int32_t {
    MAX = 10,
};

/**
 * Overwritten from @1.0::IndicationFilter in order to redefine ALL. In the future, this should
 * be extended instead of overwritten.
 */
enum IndicationFilter : int32_t {
    NONE = 0,
    ALL = ~0,
    /**
     * When this bit is set, modem must send the signal strength update through
     * IRadioIndication.currentSignalStrength() when all criteria specified by
     * IRadio.setSignalStrengthReportingCriteria() are met.
     */
    SIGNAL_STRENGTH = 1 << 0,
    /**
     * When this bit is set, modem must invoke IRadioIndication.networkStateChanged() when any field
     * in VoiceRegStateResult or DataRegStateResult changes. When this bit is not set, modem must
     * suppress IRadioIndication.networkStateChanged() when there are only changes from
     * insignificant fields. Modem must invoke IRadioIndication.networkStateChanged() when
     * significant fields are updated regardless of whether this bit is set.
     *
     * The following fields are considered significant: VoiceRegStateResult.regState,
     * VoiceRegStateResult.rat, DataRegStateResult.regState, DataRegStateResult.rat.
     */
    FULL_NETWORK_STATE = 1 << 1,
    /**
     * When this bit is set, modem must send IRadioIndication.dataCallListChanged() whenever any
     * field in ITypes.SetupDataCallResult changes. When this bit is not set, modem must suppress
     * the indication when the only changed field is 'active' (for data dormancy). For all other
     * field changes, the modem must send IRadioIndication.dataCallListChanged() regardless of
     * whether this bit is set.
     */
    DATA_CALL_DORMANCY_CHANGED = 1 << 2,
    /**
     * When this bit is set, modem must send the link capacity update through
     * IRadioIndication.currentLinkCapacityEstimate() when all criteria specified by
     * IRadio.setLinkCapacityReportingCriteria() are met.
     */
    LINK_CAPACITY_ESTIMATE = 1 << 3,
};

struct NetworkScanRequest {
    ScanType type;

@@ -244,3 +284,14 @@ struct CardStatus {
     */
    string iccid;
};

struct LinkCapacityEstimate {
    /**
     * Estimated downlink capacity in kbps.
     */
    uint32_t downlinkCapacityKbps;
    /**
     * Estimated uplink capacity in kbps.
     */
    uint32_t uplinkCapacityKbps;
};