Merge "Manual network selection by RAN type" am: b25740f083

Change-Id: I635ef788b7c5e696ac95935306cecac407a2c047
This commit is contained in:
Automerger Merge Worker
2020-01-31 16:08:39 +00:00
7 changed files with 121 additions and 38 deletions

View File

@@ -640,17 +640,11 @@ a64467bae843569f0d465c5be7f0c7a5b987985b55a3ef4794dd5afc68538650 android.hardwar
619fc9839ec6e369cfa9b28e3e9412e6885720ff8f9b5750c1b6ffb905120391 android.hardware.wifi.supplicant@1.3::ISupplicantStaIfaceCallback
c9273429fcf98d797d3bb07fdba6f1be95bf960f9255cde169fd1ca4db85f856 android.hardware.wifi.supplicant@1.3::ISupplicantStaNetwork
9b0a3ab6f4f74b971ed094426d8a443e29b512ff03e1ab50c07156396cdb2483 android.hardware.wifi.supplicant@1.3::types
##
# BEGIN Radio HAL Merge Conflict Avoidance Buffer - STOPSHIP if present
##
2fc83babe7cd7c6d5f1013f84019d761d2ac0eb38bdade7f9b01f5dc577de8f8 android.hardware.radio@1.5::types
603851ca0f5360778049902fc7486d0ff60065b16e83b99f076487667aba1928 android.hardware.radio@1.5::IRadio
50e22cd55ad5499e68e81541bbc67bd10e59c1b9f3ff8cc7ba70dcb0d2918381 android.hardware.radio@1.5::types
8cc3306e8cd755d04521d1611b217b9d13a2a76d2af57cbea8f875333b3363f7 android.hardware.radio@1.5::IRadio
e96ae1c3a9c0689002ec2318e9c587f4f607c16a75a3cd38788b77eb91072021 android.hardware.radio@1.5::IRadioIndication
04cce8fdae2b03becda4ee6fe17cb032fd7d30152f8ab36f642d794e4f5f6999 android.hardware.radio@1.5::IRadioResponse
7b77721a7716e163f5cc5f2830ed5616b953fcf0e5406f69de0fde5ce95e4184 android.hardware.radio@1.5::IRadioResponse
2fd107f3de1b7e36825e241a88dfae8edf3a77c166cb746f00ddf6440ab78db1 android.hardware.radio.config@1.3::types
a2977755bc5f1ef47f04b7f2400632efda6218e1515dba847da487145cfabc4f android.hardware.radio.config@1.3::IRadioConfig
742360c775313438b0f82256eac62fb5bbc76a6ae6f388573f3aa142fb2c1eea android.hardware.radio.config@1.3::IRadioConfigIndication
0006ab8e8b0910cbd3bbb08d5f17d5fac7d65a2bdad5f2334e4851db9d1e6fa8 android.hardware.radio.config@1.3::IRadioConfigResponse
##
# END Radio HAL Merge Conflict Avoidance Buffer - STOPSHIP if present
##
0006ab8e8b0910cbd3bbb08d5f17d5fac7d65a2bdad5f2334e4851db9d1e6fa8 android.hardware.radio.config@1.3::IRadioConfigResponse

View File

@@ -16,10 +16,10 @@
package android.hardware.radio@1.5;
import @1.2::DataRequestReason;
import @1.0::CdmaSmsMessage;
import @1.4::IRadio;
import @1.2::DataRequestReason;
import @1.4::DataProfileInfo;
import @1.4::IRadio;
import @1.5::AccessNetwork;
import @1.5::BarringInfo;
import @1.5::DataProfileInfo;
@@ -27,6 +27,7 @@ import @1.5::IndicationFilter;
import @1.5::LinkAddress;
import @1.5::NetworkScanRequest;
import @1.5::PersoSubstate;
import @1.5::RadioAccessNetworks;
import @1.5::RadioAccessSpecifier;
import @1.5::SignalThresholdInfo;
@@ -266,16 +267,23 @@ interface IRadio extends @1.4::IRadio {
*/
oneway getDataRegistrationState_1_5(int32_t serial);
/**
* Requests that deactivates one category of the device personalization.
/*
* Manually select a specified network.
* This request must not respond until the new operator is selected and registered.
* Per TS 23.122, the RAN is just the initial suggested value.
* If registration fails, the RAN is not available afterwards, or the RAN is not within
* the network types specified by IRadio::setPreferredNetworkTypeBitmap, then the modem
* will need to select the next best RAN for network registration.
*
* @param serial Serial number of request.
* @param persoType SIM personalization type.
* @param controlKey depersonalization code corresponding to persoType
* @param operatorNumeric String specifying MCCMNC of network to select (eg "310170").
* @param ran Initial suggested radio access network type. If value is UNKNOWN, the modem
* will select the next best RAN for network registration.
*
* Response function is IRadioResponse.supplySimDepersonalizationResponse()
* Response function is IRadioResponse.setNetworkSelectionModeManualResponse_1_5()
*/
oneway supplySimDepersonalization(int32_t serial, PersoSubstate persoType, string controlKey);
oneway setNetworkSelectionModeManual_1_5(int32_t serial, string operatorNumeric,
RadioAccessNetworks ran);
/**
* Send an SMS message. Identical to sendCdmaSms,
@@ -287,4 +295,15 @@ interface IRadio extends @1.4::IRadio {
* Response callback is IRadioResponse.sendCdmaSMSExpectMoreResponse()
*/
oneway sendCdmaSmsExpectMore(int32_t serial, CdmaSmsMessage sms);
/**
* Requests that deactivates one category of the device personalization.
*
* @param serial Serial number of request.
* @param persoType SIM personalization type.
* @param controlKey depersonalization code corresponding to persoType
*
* Response function is IRadioResponse.supplySimDepersonalizationResponse()
*/
oneway supplySimDepersonalization(int32_t serial, PersoSubstate persoType, string controlKey);
};

View File

@@ -21,9 +21,10 @@ import @1.0::SendSmsResult;
import @1.4::IRadioResponse;
import @1.5::BarringInfo;
import @1.5::CellInfo;
import @1.5::PersoSubstate;
import @1.5::RegStateResult;
import @1.5::SetupDataCallResult;
import @1.4::SetupDataCallResult;
import @1.5::PersoSubstate;
/**
* Interface declaring response functions to solicited radio requests.
@@ -176,7 +177,6 @@ interface IRadioResponse extends @1.4::IRadioResponse {
oneway getBarringInfoResponse(RadioResponseInfo info, vec<BarringInfo> barringInfos);
/**
* @param info Response info struct containing response type, serial no. and error
* @param voiceRegResponse Current Voice registration response as defined by RegStateResult
* in types.hal
*
@@ -215,27 +215,29 @@ interface IRadioResponse extends @1.4::IRadioResponse {
*/
oneway getCellInfoListResponse_1_5(RadioResponseInfo info, vec<CellInfo> cellInfo);
/**
* @param info Response info struct containing response type, serial no. and error
* @param persoType SIM Personalisation type
* @param remainingRetries Positive values indicates number of retries remaining,
* must be equal to -1 if number of retries are infinite.
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:PASSWORD_INCORRECT (code is invalid)
* RadioError:ILLEGAL_SIM_OR_ME
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:INVALID_STATE
* RadioError:NO_MEMORY
* RadioError:INVALID_SIM_STATE
* RadioError:INTERNAL_ERR
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:INVALID_ARGUMENTS
* RadioError:NO_RESOURCES
* RadioError:MODEM_ERR
* RadioError:REQUEST_NOT_SUPPORTED
* RadioError:NO_RESOURCES
* RadioError:CANCELLED
*
* Returns RadioError:ILLEGAL_SIM_OR_ME when the failure is permanent and
* no retries needed, such as illegal SIM or ME.
*/
oneway supplySimDepersonalizationResponse(RadioResponseInfo info,
PersoSubstate persoType, int32_t remainingRetries);
oneway setNetworkSelectionModeManualResponse_1_5(RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error
@@ -267,4 +269,26 @@ interface IRadioResponse extends @1.4::IRadioResponse {
* RadioError:SIM_ABSENT
*/
oneway sendCdmaSmsExpectMoreResponse(RadioResponseInfo info, SendSmsResult sms);
/**
* @param info Response info struct contatining response type, serial no. and error
* @param persoType SIM Personalisation type
* @param remainingRetries postiive values indicates number of retries remaining,
* must be equal to -1 if number of retries is infinite.
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:PASSWORD_INCORRECT (code is invalid)
* RadioError:NO_MEMORY
* RadioError:INVALID_SIM_STATE
* RadioError:INTERNAL_ERR
* RadioError:SYSTEM_ERR
* RadioError:MODEM_ERR
* RadioError:INVALID_ARGUMENTS
* RadioError:NO_RESOURCES
* RadioError:REQUEST_NOT_SUPPORTED
*/
oneway supplySimDepersonalizationResponse(RadioResponseInfo info,
PersoSubstate persoType, int32_t remainingRetries);
};

View File

@@ -17,9 +17,9 @@
package android.hardware.radio@1.5;
import @1.0::ApnAuthType;
import @1.0::CdmaSignalStrength;
import @1.0::DataProfileId;
import @1.0::DataProfileInfoType;
import @1.0::CdmaSignalStrength;
import @1.0::EvdoSignalStrength;
import @1.0::GsmSignalStrength;
import @1.0::LteSignalStrength;
@@ -167,7 +167,11 @@ enum AccessNetwork : @1.4::AccessNetwork {
};
enum RadioAccessNetworks : @1.1::RadioAccessNetworks {
UNKNOWN = 0,
/** Next Generation Radio Access Network */
NGRAN = 4,
/** CDMA 2000 Network */
CDMA2000 = 5,
};
/**

View File

@@ -879,6 +879,9 @@ TEST_F(RadioHidlTest_v1_5, setupDataCall_1_5) {
}
}
/*
* Test IRadio.setInitialAttachApn_1_5() for the response returned.
*/
TEST_F(RadioHidlTest_v1_5, setInitialAttachApn_1_5) {
serial = GetRandomSerialNumber();
@@ -919,6 +922,9 @@ TEST_F(RadioHidlTest_v1_5, setInitialAttachApn_1_5) {
}
}
/*
* Test IRadio.setDataProfile_1_5() for the response returned.
*/
TEST_F(RadioHidlTest_v1_5, setDataProfile_1_5) {
serial = GetRandomSerialNumber();
@@ -991,6 +997,32 @@ TEST_F(RadioHidlTest_v1_5, setRadioPower_1_5_emergencyCall_cancalled) {
EXPECT_EQ(RadioError::NONE, radioRsp_v1_5->rspInfo.error);
}
/*
* Test IRadio.setNetworkSelectionModeManual_1_5() for the response returned.
*/
TEST_F(RadioHidlTest_v1_5, setNetworkSelectionModeManual_1_5) {
serial = GetRandomSerialNumber();
// can't camp on nonexistent MCCMNC, so we expect this to fail.
Return<void> res = radio_v1_5->setNetworkSelectionModeManual_1_5(
serial, "123456", android::hardware::radio::V1_5::RadioAccessNetworks::GERAN);
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_5->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_5->rspInfo.serial);
if (cardStatus.base.base.cardState == CardState::ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_5->rspInfo.error,
{RadioError::NONE, RadioError::ILLEGAL_SIM_OR_ME,
RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE},
CHECK_GENERAL_ERROR));
} else if (cardStatus.base.base.cardState == CardState::PRESENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_5->rspInfo.error,
{RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE,
RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE},
CHECK_GENERAL_ERROR));
}
}
/*
* Test IRadio.sendCdmaSmsExpectMore() for the response returned.
*/
@@ -1033,4 +1065,4 @@ TEST_F(RadioHidlTest_v1_5, sendCdmaSmsExpectMore) {
{RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
CHECK_GENERAL_ERROR));
}
}
}

View File

@@ -293,8 +293,6 @@ class RadioResponse_v1_5 : public ::android::hardware::radio::V1_5::IRadioRespon
Return<void> sendCdmaSmsResponse(const RadioResponseInfo& info, const SendSmsResult& sms);
Return<void> sendCdmaSmsExpectMoreResponse(const RadioResponseInfo& info, const SendSmsResult& sms);
Return<void> acknowledgeLastIncomingCdmaSmsResponse(const RadioResponseInfo& info);
Return<void> getGsmBroadcastConfigResponse(
@@ -576,6 +574,11 @@ class RadioResponse_v1_5 : public ::android::hardware::radio::V1_5::IRadioRespon
const RadioResponseInfo& info,
const ::android::hardware::hidl_vec<::android::hardware::radio::V1_5::CellInfo>&
cellInfo);
Return<void> setNetworkSelectionModeManualResponse_1_5(const RadioResponseInfo& info);
Return<void> sendCdmaSmsExpectMoreResponse(const RadioResponseInfo& info,
const SendSmsResult& sms);
};
/* Callback class for radio indication */

View File

@@ -421,11 +421,6 @@ Return<void> RadioResponse_v1_5::sendCdmaSmsResponse(const RadioResponseInfo& /*
return Void();
}
Return<void> RadioResponse_v1_5::sendCdmaSmsExpectMoreResponse(const RadioResponseInfo& /*info*/,
const SendSmsResult& /*sms*/) {
return Void();
}
Return<void> RadioResponse_v1_5::acknowledgeLastIncomingCdmaSmsResponse(
const RadioResponseInfo& /*info*/) {
return Void();
@@ -1004,3 +999,15 @@ Return<void> RadioResponse_v1_5::getCellInfoListResponse_1_5(
::android::hardware::radio::V1_5::CellInfo>& /*cellInfo*/) {
return Void();
}
Return<void> RadioResponse_v1_5::setNetworkSelectionModeManualResponse_1_5(
const RadioResponseInfo& info) {
rspInfo = info;
parent_v1_5.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_5::sendCdmaSmsExpectMoreResponse(const RadioResponseInfo& /*info*/,
const SendSmsResult& /*sms*/) {
return Void();
}