Update RegState for new CellIdentity types

Bug: 74826109
Test: make, make vts
Change-Id: I6350e5da5bc064e665e54d161ee589c3eadf901a
Merged-In: I6350e5da5bc064e665e54d161ee589c3eadf901a
(cherry picked from commit 74befb69b9)
This commit is contained in:
Eric Schwarzenbach
2018-03-14 16:22:38 -07:00
parent 8a7e77e7b9
commit b004dbc19f
6 changed files with 211 additions and 1 deletions

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

@@ -416,6 +416,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();
}