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
This commit is contained in:
Hunsuk Choi
2022-10-25 23:13:23 +00:00
parent 20cce2ac9c
commit 98d695ab00
6 changed files with 40 additions and 19 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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
*/

View File

@@ -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:

View File

@@ -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));

View File

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