Support multiple RANs in one request for setSignalStrengthReportingCriteria

- Move AccessNetwork (RAN) into SignalThresholdInfo to be better organized
- Support specifying multiple RANs and measurement types in one request

Bug: 200055871
Test: m -j
Change-Id: Ic6762e8ca488a119b1103319e7443c4342530f8c
This commit is contained in:
Rambo Wang 2021-09-23 16:09:59 -07:00
parent 2dd3a3548a
commit 9073f55722
4 changed files with 27 additions and 25 deletions

View file

@ -64,7 +64,7 @@ interface IRadioNetwork {
oneway void setNetworkSelectionModeManual(in int serial, in String operatorNumeric, in android.hardware.radio.AccessNetwork ran);
oneway void setNrDualConnectivityState(in int serial, in android.hardware.radio.network.NrDualConnectivityState nrDualConnectivityState);
oneway void setResponseFunctions(in android.hardware.radio.network.IRadioNetworkResponse radioNetworkResponse, in android.hardware.radio.network.IRadioNetworkIndication radioNetworkIndication);
oneway void setSignalStrengthReportingCriteria(in int serial, in android.hardware.radio.network.SignalThresholdInfo signalThresholdInfo, in android.hardware.radio.AccessNetwork accessNetwork);
oneway void setSignalStrengthReportingCriteria(in int serial, in android.hardware.radio.network.SignalThresholdInfo[] signalThresholdInfos);
oneway void setSuppServiceNotifications(in int serial, in boolean enable);
oneway void setSystemSelectionChannels(in int serial, in boolean specifyChannels, in android.hardware.radio.network.RadioAccessSpecifier[] specifiers);
oneway void startNetworkScan(in int serial, in android.hardware.radio.network.NetworkScanRequest request);

View file

@ -39,6 +39,7 @@ parcelable SignalThresholdInfo {
int hysteresisDb;
int[] thresholds;
boolean isEnabled;
android.hardware.radio.AccessNetwork ran;
const int SIGNAL_MEASUREMENT_TYPE_RSSI = 1;
const int SIGNAL_MEASUREMENT_TYPE_RSCP = 2;
const int SIGNAL_MEASUREMENT_TYPE_RSRP = 3;

View file

@ -364,29 +364,22 @@ oneway interface IRadioNetwork {
in IRadioNetworkIndication radioNetworkIndication);
/**
* Sets the signal strength reporting criteria. The resulting reporting rules are the AND of all
* the supplied criteria. For each RAN the hysteresisDb and thresholds apply to only the
* following measured quantities:
* -GERAN - RSSI
* -CDMA2000 - RSSI
* -UTRAN - RSCP
* -EUTRAN - RSRP/RSRQ/RSSNR
* -NGRAN - SSRSRP/SSRSRQ/SSSINR
* Note that reporting criteria must be individually set for each RAN. For each RAN, if none of
* reporting criteria of any measurement is set enabled (see SignalThresholdInfo.isEnabled),
* the reporting criteria for this RAN is implementation-defined. For each RAN, if any reporting
* criteria of any measure is set enabled, the reporting criteria of the other measures in this
* RAN are set disabled (see SignalThresholdInfo.isEnabled) until they are set enabled.
* Sets or clears the signal strength reporting criteria for multiple RANs in one request.
*
* The reporting criteria are set individually for each combination of RAN and measurement type.
* For each RAN type, if no reporting criteria are set, then the reporting of SignalStrength for
* that RAN is implementation-defined. If any criteria are supplied for a RAN type, then
* SignalStrength is only reported as specified by those criteria. For any RAN types not defined
* by this HAL, reporting is implementation-defined.
*
* @param serial Serial number of request.
* @param signalThresholdInfo Signal threshold info including the threshold values,
* hysteresisDb, hysteresisMs and isEnabled. See SignalThresholdInfo for details.
* @param accessNetwork The type of network for which to apply these thresholds.
* @param signalThresholdInfos Collection of SignalThresholdInfo specifying the reporting
* criteria. See SignalThresholdInfo for details.
*
* Response function is IRadioNetworkResponse.setSignalStrengthReportingCriteriaResponse()
*/
void setSignalStrengthReportingCriteria(in int serial,
in SignalThresholdInfo signalThresholdInfo, in AccessNetwork accessNetwork);
void setSignalStrengthReportingCriteria(
in int serial, in SignalThresholdInfo[] signalThresholdInfos);
/**
* Enables/disables supplementary service related notifications from the network.

View file

@ -16,6 +16,8 @@
package android.hardware.radio.network;
import android.hardware.radio.AccessNetwork;
/**
* Contains the threshold values of each signal measurement type.
*/
@ -86,18 +88,20 @@ parcelable SignalThresholdInfo {
*/
int signalMeasurement;
/**
* A hysteresis time in milliseconds to prevent flapping. A value of 0 disables hysteresis.
* A hysteresis time in milliseconds for current signal measurement type to prevent flapping.
* A value of 0 disables hysteresis.
*/
int hysteresisMs;
/**
* An interval in dB defining the required magnitude change between reports. This must be
* smaller than the smallest threshold delta. An interval value of 0 disables hysteresis.
* An interval in dB for current signal measurement type defining the required magnitude change
* between reports. This must be smaller than the smallest threshold delta. An interval value of
* 0 disables hysteresis.
*/
int hysteresisDb;
/**
* List of threshold values. Range and unit must reference specific SignalMeasurementType.
* The threshold values for which to apply criteria. A vector size of 0 disables the use of
* thresholds for reporting.
* List of threshold values for current signal measurement type. Range and unit must reference
* specific SignalMeasurementType. The threshold values for which to apply criteria. A vector
* size of 0 disables the use of thresholds for reporting.
*/
int[] thresholds;
/**
@ -106,4 +110,8 @@ parcelable SignalThresholdInfo {
* If disabled, modem must not trigger the report based on the criteria.
*/
boolean isEnabled;
/**
* The Radio Access Network for current threshold info.
*/
AccessNetwork ran;
}