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
Merged-In: Ic6762e8ca488a119b1103319e7443c4342530f8c
Change-Id: Ic6762e8ca488a119b1103319e7443c4342530f8c
(cherry picked from commit 9073f557229f1c38a98530c850d7baf424e88bd4)
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl
index 8131007..bfb8061 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl
@@ -64,7 +64,7 @@
   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);
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalThresholdInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalThresholdInfo.aidl
index 3ea6c4e..159d9c1 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalThresholdInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalThresholdInfo.aidl
@@ -39,6 +39,7 @@
   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;
diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
index 0db918d..ffc97f3 100644
--- a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
+++ b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
@@ -364,29 +364,22 @@
             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.
diff --git a/radio/aidl/android/hardware/radio/network/SignalThresholdInfo.aidl b/radio/aidl/android/hardware/radio/network/SignalThresholdInfo.aidl
index 696292d..584ea38 100644
--- a/radio/aidl/android/hardware/radio/network/SignalThresholdInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/SignalThresholdInfo.aidl
@@ -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 @@
      */
     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 @@
      * If disabled, modem must not trigger the report based on the criteria.
      */
     boolean isEnabled;
+    /**
+     * The Radio Access Network for current threshold info.
+     */
+    AccessNetwork ran;
 }