Update RegState for new CellIdentity types

Bug: 74826109
Test: make, make vts
Change-Id: I6350e5da5bc064e665e54d161ee589c3eadf901a
This commit is contained in:
Eric Schwarzenbach 2018-03-14 16:22:38 -07:00
parent 55b92198fb
commit 74befb69b9
7 changed files with 213 additions and 3 deletions

View file

@ -342,9 +342,9 @@ e85f566698d2a2c28100e264fcf2c691a066756ddf8dd341d009ff50cfe10614 android.hardwar
7899b9305587b2d5cd74a3cc87e9090f58bf4ae74256ce3ee36e7ec011822840 android.hardware.power@1.2::types
ab132c990a62f0aca35871c092c22fb9c85d478e22124ef6a4d0a2302da76a9f android.hardware.radio@1.2::IRadio
cda752aeabaabc20486a82ac57a3dd107785c006094a349bc5e224e8aa22a17c android.hardware.radio@1.2::IRadioIndication
c38b7e1f808565a535ff19fd4c1b512b22dfa0b58ec91dce03f72a8f1eaf6957 android.hardware.radio@1.2::IRadioResponse
da8c6ae991c6a4b284cc6e445332e064e28ee8a09482ed5afff9d159ec6694b7 android.hardware.radio@1.2::IRadioResponse
b65332996eb39ba63300a1011404141fa59ce5c252bc17afae637be6eeca5f55 android.hardware.radio@1.2::ISap
508ace7d4023b865b8b77c3ca3c86cc9525ef3803dc9c6b461b7c1f91b0fec00 android.hardware.radio@1.2::types
a9361522cc97ef66209d39ba324095b2f08344054bb4d3481e803eee0480623a android.hardware.radio@1.2::types
87385469cf4409f0f33b01508e7a477cf71f2a11e466dd7e3ab5971a1baaa72b android.hardware.radio.config@1.0::IRadioConfig
228b2ee3c8c276c9f0afad2dc313ca3d6bbd9e482ddf313c7204c60ad9b636ab android.hardware.radio.config@1.0::IRadioConfigIndication
a2e9b7aa09f79426f765838174e04b6f9a3e6c8b76b923fc1705632207bad44b android.hardware.radio.config@1.0::IRadioConfigResponse

View file

@ -24,6 +24,7 @@ hidl_interface {
"Call",
"CardStatus",
"CellConnectionStatus",
"CellIdentity",
"CellIdentityCdma",
"CellIdentityGsm",
"CellIdentityLte",
@ -36,6 +37,7 @@ hidl_interface {
"CellInfoLte",
"CellInfoTdscdma",
"CellInfoWcdma",
"DataRegStateResult",
"DataRequestReason",
"IncrementalResultsPeriodicityRange",
"IndicationFilter",
@ -48,6 +50,7 @@ hidl_interface {
"ScanIntervalRange",
"SignalStrength",
"TdscdmaSignalStrength",
"VoiceRegStateResult",
"WcdmaSignalStrength",
],
gen_java: true,

View file

@ -98,4 +98,31 @@ interface IRadioResponse extends @1.1::IRadioResponse {
* RadioError:INTERNAL_ERR
*/
oneway getSignalStrengthResponse_1_2(RadioResponseInfo info, SignalStrength signalStrength);
/**
* @param info Response info struct containing response type, serial no. and error
* @param voiceRegResponse Current Voice registration response as defined by VoiceRegStateResult
* in types.hal
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
*/
oneway getVoiceRegistrationStateResponse_1_2(RadioResponseInfo info,
VoiceRegStateResult voiceRegResponse);
/**
* @param info Response info struct containing response type, serial no. and error
* @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
* types.hal
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
* RadioError:NOT_PROVISIONED
*/
oneway getDataRegistrationStateResponse_1_2(RadioResponseInfo info,
DataRegStateResult dataRegResponse);
};

View file

@ -32,6 +32,7 @@ import @1.0::GsmSignalStrength;
import @1.0::LteSignalStrength;
import @1.0::RadioConst;
import @1.0::RadioError;
import @1.0::RegState;
import @1.0::SignalStrength;
import @1.0::TdScdmaSignalStrength;
import @1.0::TimeStampType;
@ -462,3 +463,129 @@ struct SignalStrength {
TdScdmaSignalStrength tdScdma;
WcdmaSignalStrength wcdma;
};
struct CellIdentity {
/**
* Cell type for selecting from union CellInfo.
* Only one of the below vectors must be of size 1 based on a
* valid CellInfoType and others must be of size 0.
* If cell info type is NONE, then all the vectors must be of size 0.
*/
CellInfoType cellInfoType;
vec<CellIdentityGsm> cellIdentityGsm;
vec<CellIdentityWcdma> cellIdentityWcdma;
vec<CellIdentityCdma> cellIdentityCdma;
vec<CellIdentityLte> cellIdentityLte;
vec<CellIdentityTdscdma> cellIdentityTdscdma;
};
struct VoiceRegStateResult {
/**
* Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
* REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
* UNKNOWN, REG_ROAMING defined in RegState
*/
RegState regState;
/**
* Indicates the available voice radio technology, valid values as
* defined by RadioTechnology.
*/
int32_t rat;
/**
* concurrent services support indicator. if registered on a CDMA system.
* false - Concurrent services not supported,
* true - Concurrent services supported
*/
bool cssSupported;
/**
* TSB-58 Roaming Indicator if registered on a CDMA or EVDO system or -1 if not.
* Valid values are 0-255.
*/
int32_t roamingIndicator;
/**
* Indicates whether the current system is in the PRL if registered on a CDMA or EVDO system
* or -1 if not. 0=not in the PRL, 1=in the PRL
*/
int32_t systemIsInPrl;
/**
* Default Roaming Indicator from the PRL if registered on a CDMA or EVDO system or -1 if not.
* Valid values are 0-255.
*/
int32_t defaultRoamingIndicator;
/**
* reasonForDenial if registration state is 3
* (Registration denied) this is an enumerated reason why
* registration was denied. See 3GPP TS 24.008,
* 10.5.3.6 and Annex G.
* 0 - General
* 1 - Authentication Failure
* 2 - IMSI unknown in HLR
* 3 - Illegal MS
* 4 - Illegal ME
* 5 - PLMN not allowed
* 6 - Location area not allowed
* 7 - Roaming not allowed
* 8 - No Suitable Cells in this Location Area
* 9 - Network failure
* 10 - Persistent location update reject
* 11 - PLMN not allowed
* 12 - Location area not allowed
* 13 - Roaming not allowed in this Location Area
* 15 - No Suitable Cells in this Location Area
* 17 - Network Failure
* 20 - MAC Failure
* 21 - Sync Failure
* 22 - Congestion
* 23 - GSM Authentication unacceptable
* 25 - Not Authorized for this CSG
* 32 - Service option not supported
* 33 - Requested service option not subscribed
* 34 - Service option temporarily out of order
* 38 - Call cannot be identified
* 48-63 - Retry upon entry into a new cell
* 95 - Semantically incorrect message
* 96 - Invalid mandatory information
* 97 - Message type non-existent or not implemented
* 98 - Message type not compatible with protocol state
* 99 - Information element non-existent or not implemented
* 100 - Conditional IE error
* 101 - Message not compatible with protocol state
* 111 - Protocol error, unspecified
*/
int32_t reasonForDenial;
CellIdentity cellIdentity;
};
struct DataRegStateResult {
/**
* Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
* REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
* UNKNOWN, REG_ROAMING defined in RegState
*/
RegState regState;
/**
* Indicates the available data radio technology,
* valid values as defined by RadioTechnology.
*/
int32_t rat;
/**
* If registration state is 3 (Registration
* denied) this is an enumerated reason why
* registration was denied. See 3GPP TS 24.008,
* Annex G.6 "Additional cause codes for GMM".
* 7 == GPRS services not allowed
* 8 == GPRS services and non-GPRS services not allowed
* 9 == MS identity cannot be derived by the network
* 10 == Implicitly detached
* 14 == GPRS services not allowed in this PLMN
* 16 == MSC temporarily not reachable
* 40 == No PDP context activated
*/
int32_t reasonDataDenied;
/**
* The maximum number of simultaneous Data Calls must be established using setupDataCall().
*/
int32_t maxDataCalls;
CellIdentity cellIdentity;
};

View file

@ -673,3 +673,40 @@ TEST_F(RadioHidlTest_v1_2, getCellInfoList_1_2) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
{RadioError::NONE, RadioError::NO_NETWORK_FOUND}));
}
/*
* Test IRadio.getVoiceRegistrationState() for the response returned.
*/
TEST_F(RadioHidlTest_v1_2, getVoiceRegistrationState) {
int serial = GetRandomSerialNumber();
Return<void> res = radio_v1_2->getVoiceRegistrationState(serial);
ASSERT_OK(res);
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
ALOGI("getVoiceRegistrationStateResponse_1_2, rspInfo.error = %s\n",
toString(radioRsp_v1_2->rspInfo.error).c_str());
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
{RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE}));
}
/*
* Test IRadio.getDataRegistrationState() for the response returned.
*/
TEST_F(RadioHidlTest_v1_2, getDataRegistrationState) {
int serial = GetRandomSerialNumber();
Return<void> res = radio_v1_2->getDataRegistrationState(serial);
ASSERT_OK(res);
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
ALOGI("getVoiceRegistrationStateResponse_1_2, rspInfo.error = %s\n",
toString(radioRsp_v1_2->rspInfo.error).c_str());
ASSERT_TRUE(CheckAnyOfErrors(
radioRsp_v1_2->rspInfo.error,
{RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::NOT_PROVISIONED}));
}

View file

@ -417,6 +417,12 @@ class RadioResponse_v1_2 : public V1_1::IRadioResponse {
Return<void> getCellInfoListResponse_1_2(
const RadioResponseInfo& info, const ::android::hardware::hidl_vec<CellInfo>& cellInfo);
Return<void> getVoiceRegistrationStateResponse_1_2(
const RadioResponseInfo& info, const V1_2::VoiceRegStateResult& voiceRegResponse);
Return<void> getDataRegistrationStateResponse_1_2(
const RadioResponseInfo& info, const V1_2::DataRegStateResult& dataRegResponse);
};
/* Callback class for radio indication */

View file

@ -731,4 +731,14 @@ Return<void> RadioResponse_v1_2::getCellInfoListResponse_1_2(
rspInfo = info;
parent_v1_2.notify();
return Void();
}
}
Return<void> RadioResponse_v1_2::getVoiceRegistrationStateResponse_1_2(
const RadioResponseInfo& /*info*/, const V1_2::VoiceRegStateResult& /*voiceRegResponse*/) {
return Void();
}
Return<void> RadioResponse_v1_2::getDataRegistrationStateResponse_1_2(
const RadioResponseInfo& /*info*/, const V1_2::DataRegStateResult& /*dataRegResponse*/) {
return Void();
}