From 98d695ab0044d8a03e46feb37d199db649f67fa1 Mon Sep 17 00:00:00 2001 From: Hunsuk Choi Date: Tue, 25 Oct 2022 23:13:23 +0000 Subject: [PATCH] Update IRadioNetwork and VTS for emergency domain selection 1. Add resetScan parameter to cancelEmergencyNetworkScan It indicates the way how the next triggerEmergencyNetworkScan shall work. If true, modem will start the new scan from the beginning. Otherwise, it will proceed as an existing search. 2. Allow RadioError:REQUEST_NOT_SUPPORTED to make requests optional Bug: 243344927 Test: atest VtsHalRadioTargetTest Change-Id: I0eaf905d73a7910b7bbd651add4b8a3bb6a23dc6 --- .../hardware/radio/network/IRadioNetwork.aidl | 2 +- .../hardware/radio/network/IRadioNetwork.aidl | 17 +++++++------ .../radio/network/IRadioNetworkResponse.aidl | 24 +++++++++++++++---- .../include/libradiocompat/RadioNetwork.h | 2 +- .../libradiocompat/network/RadioNetwork.cpp | 2 +- radio/aidl/vts/radio_network_test.cpp | 12 ++++++---- 6 files changed, 40 insertions(+), 19 deletions(-) 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 832738ffbf..c115c86357 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 @@ -72,6 +72,6 @@ interface IRadioNetwork { oneway void getUsageSetting(in int serial); oneway void setEmergencyMode(int serial, in android.hardware.radio.network.EmergencyMode emcModeType); oneway void triggerEmergencyNetworkScan(int serial, in android.hardware.radio.network.EmergencyNetworkScanTrigger request); - oneway void cancelEmergencyNetworkScan(in int serial); + oneway void cancelEmergencyNetworkScan(int serial, boolean resetScan); oneway void exitEmergencyMode(in int serial); } diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl index 0ac8b0e83e..574798aa59 100644 --- a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl +++ b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl @@ -18,6 +18,8 @@ package android.hardware.radio.network; import android.hardware.radio.AccessNetwork; import android.hardware.radio.network.CdmaRoamingType; +import android.hardware.radio.network.EmergencyMode; +import android.hardware.radio.network.EmergencyNetworkScanTrigger; import android.hardware.radio.network.IRadioNetworkIndication; import android.hardware.radio.network.IRadioNetworkResponse; import android.hardware.radio.network.IndicationFilter; @@ -27,8 +29,6 @@ import android.hardware.radio.network.RadioAccessSpecifier; import android.hardware.radio.network.RadioBandMode; import android.hardware.radio.network.SignalThresholdInfo; import android.hardware.radio.network.UsageSetting; -import android.hardware.radio.network.EmergencyNetworkScanTrigger; -import android.hardware.radio.network.EmergencyMode; /** * This interface is used by telephony and telecom to talk to cellular radio for network APIs. @@ -449,27 +449,30 @@ oneway interface IRadioNetwork { * * Response function is IRadioEmergencyResponse.setEmergencyModeResponse() */ - void setEmergencyMode(int serial, in EmergencyMode emcModeType ); + void setEmergencyMode(int serial, in EmergencyMode emcModeType); /** * Triggers an Emergency network scan. * * @param serial Serial number of the request. - * @param request Defines the radio target networks/preferred network/ - * Max Scan Time and type of service to be scanned. + * @param request Contains the preferred networks and type of service to be scanned. + * See {@link EmergencyNetworkScanTrigger}. * * Response function is IRadioEmergencyResponse.triggerEmergencyNetworkScanResponse() */ - void triggerEmergencyNetworkScan( int serial, in EmergencyNetworkScanTrigger request); + void triggerEmergencyNetworkScan(int serial, in EmergencyNetworkScanTrigger request); /** * Cancels ongoing Emergency network scan * * @param serial Serial number of the request. + * @param resetScan Indicates how the next {@link #triggerEmergencyNetworkScan} should work. + * If {@code true}, then the modem shall start the new scan from the beginning, + * otherwise the modem shall resume from the last search. * * Response function is IRadioEmergencyResponse.cancelEmergencyNetworkScan() */ - void cancelEmergencyNetworkScan(in int serial); + void cancelEmergencyNetworkScan(int serial, boolean resetScan); /** * Exits ongoing Emergency Mode diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl index 243e949b9e..fc4db2ca36 100644 --- a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl +++ b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl @@ -23,13 +23,13 @@ import android.hardware.radio.network.BarringInfo; import android.hardware.radio.network.CdmaRoamingType; import android.hardware.radio.network.CellIdentity; import android.hardware.radio.network.CellInfo; +import android.hardware.radio.network.EmergencyRegResult; import android.hardware.radio.network.OperatorInfo; import android.hardware.radio.network.RadioAccessSpecifier; import android.hardware.radio.network.RadioBandMode; import android.hardware.radio.network.RegStateResult; import android.hardware.radio.network.SignalStrength; import android.hardware.radio.network.UsageSetting; -import android.hardware.radio.network.EmergencyRegResult; /** * Interface declaring response functions to solicited radio requests for network APIs. @@ -575,11 +575,15 @@ oneway interface IRadioNetworkResponse { oneway void getUsageSettingResponse(in RadioResponseInfo info, in UsageSetting usageSetting); /** + * Response of setEmergencyMode. + * This is an optional API. + * * @param info Response info struct containing response type, serial no. and error. * @param regState the current registration state of the modem. * * Valid errors returned: * RadioError:NONE + * RadioError:REQUEST_NOT_SUPPORTED * RadioError:RADIO_NOT_AVAILABLE * RadioError:MODEM_ERR * RadioError:INVALID_ARGUMENTS @@ -587,10 +591,14 @@ oneway interface IRadioNetworkResponse { void setEmergencyModeResponse(in RadioResponseInfo info, in EmergencyRegResult regState); /** - * @param info Response info struct containing response type, serial no. and error + * Response of triggerEmergencyNetworkScan. + * This is an optional API. + * + * @param info Response info struct containing response type, serial no. and error. * * Valid errors returned: * RadioError:NONE + * RadioError:REQUEST_NOT_SUPPORTED * RadioError:RADIO_NOT_AVAILABLE * RadioError:MODEM_ERR * RadioError:INVALID_ARGUMENTS @@ -598,20 +606,28 @@ oneway interface IRadioNetworkResponse { void triggerEmergencyNetworkScanResponse(in RadioResponseInfo info); /** - * @param info Response info struct containing response type, serial no. and error + * Response of exitEmergencyMode. + * This is an optional API. + * + * @param info Response info struct containing response type, serial no. and error. * * Valid errors returned: * RadioError:NONE + * RadioError:REQUEST_NOT_SUPPORTED * RadioError:RADIO_NOT_AVAILABLE * RadioError:MODEM_ERR */ void exitEmergencyModeResponse(in RadioResponseInfo info); /** - * @param info Response info struct containing response type, serial no. and error + * Response of cancelEmergencyNetworkScan. + * This is an optional API. + * + * @param info Response info struct containing response type, serial no. and error. * * Valid errors returned: * RadioError:NONE + * RadioError:REQUEST_NOT_SUPPORTED * RadioError:RADIO_NOT_AVAILABLE * RadioError:MODEM_ERR */ diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h index c714190153..5dd6f0ae8d 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h @@ -97,7 +97,7 @@ class RadioNetwork : public RadioCompatBase, int32_t serial, const ::aidl::android::hardware::radio::network::EmergencyNetworkScanTrigger& scanTrigger) override; - ::ndk::ScopedAStatus cancelEmergencyNetworkScan(int32_t serial) override; + ::ndk::ScopedAStatus cancelEmergencyNetworkScan(int32_t serial, bool resetScan) override; ::ndk::ScopedAStatus exitEmergencyMode(int32_t serial) override; protected: diff --git a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp index ff30ac3633..6bb6b75b2e 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp @@ -326,7 +326,7 @@ ScopedAStatus RadioNetwork::triggerEmergencyNetworkScan(int32_t serial, return ok(); } -ScopedAStatus RadioNetwork::cancelEmergencyNetworkScan(int32_t serial) { +ScopedAStatus RadioNetwork::cancelEmergencyNetworkScan(int32_t serial, bool) { LOG_CALL << serial; LOG(ERROR) << " cancelEmergencyNetworkScan is unsupported by HIDL HALs"; respond()->cancelEmergencyNetworkScanResponse(notSupported(serial)); diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp index 25c42d35b2..7c98d4c13c 100644 --- a/radio/aidl/vts/radio_network_test.cpp +++ b/radio/aidl/vts/radio_network_test.cpp @@ -1848,7 +1848,7 @@ TEST_P(RadioNetworkTest, setEmergencyMode) { ASSERT_TRUE(CheckAnyOfErrors( radioRsp_network->rspInfo.error, - {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, + {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR, RadioError::INVALID_ARGUMENTS})); LOG(DEBUG) << "setEmergencyMode finished"; } @@ -1871,7 +1871,7 @@ TEST_P(RadioNetworkTest, triggerEmergencyNetworkScan) { ASSERT_TRUE(CheckAnyOfErrors( radioRsp_network->rspInfo.error, - {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, + {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR, RadioError::INVALID_ARGUMENTS})); LOG(DEBUG) << "triggerEmergencyNetworkScan finished"; } @@ -1883,14 +1883,15 @@ TEST_P(RadioNetworkTest, cancelEmergencyNetworkScan) { LOG(DEBUG) << "cancelEmergencyNetworkScan"; serial = GetRandomSerialNumber(); - radio_network->cancelEmergencyNetworkScan(serial); + radio_network->cancelEmergencyNetworkScan(serial, true); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_network->rspInfo.type); EXPECT_EQ(serial, radioRsp_network->rspInfo.serial); ASSERT_TRUE(CheckAnyOfErrors( radioRsp_network->rspInfo.error, - {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR})); + {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED, RadioError::RADIO_NOT_AVAILABLE, + RadioError::MODEM_ERR})); LOG(DEBUG) << "cancelEmergencyNetworkScan finished"; } @@ -1908,6 +1909,7 @@ TEST_P(RadioNetworkTest, exitEmergencyMode) { ASSERT_TRUE(CheckAnyOfErrors( radioRsp_network->rspInfo.error, - {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR})); + {RadioError::NONE, RadioError::REQUEST_NOT_SUPPORTED, RadioError::RADIO_NOT_AVAILABLE, + RadioError::MODEM_ERR})); LOG(DEBUG) << "exitEmergencyMode finished"; }