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"; }