From 74befb69b9c532e5be77a1a64eb38713b8d51118 Mon Sep 17 00:00:00 2001 From: Eric Schwarzenbach Date: Wed, 14 Mar 2018 16:22:38 -0700 Subject: [PATCH] Update RegState for new CellIdentity types Bug: 74826109 Test: make, make vts Change-Id: I6350e5da5bc064e665e54d161ee589c3eadf901a --- current.txt | 4 +- radio/1.2/Android.bp | 3 + radio/1.2/IRadioResponse.hal | 27 ++++ radio/1.2/types.hal | 127 ++++++++++++++++++ .../1.2/vts/functional/radio_hidl_hal_api.cpp | 37 +++++ .../functional/radio_hidl_hal_utils_v1_2.h | 6 + radio/1.2/vts/functional/radio_response.cpp | 12 +- 7 files changed, 213 insertions(+), 3 deletions(-) diff --git a/current.txt b/current.txt index dbe462fd72..5addb23154 100644 --- a/current.txt +++ b/current.txt @@ -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 diff --git a/radio/1.2/Android.bp b/radio/1.2/Android.bp index a9c80b7f4a..c90a03c374 100644 --- a/radio/1.2/Android.bp +++ b/radio/1.2/Android.bp @@ -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, diff --git a/radio/1.2/IRadioResponse.hal b/radio/1.2/IRadioResponse.hal index f26c9eccea..300aa37285 100644 --- a/radio/1.2/IRadioResponse.hal +++ b/radio/1.2/IRadioResponse.hal @@ -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); }; diff --git a/radio/1.2/types.hal b/radio/1.2/types.hal index 5e72b3b18f..4715facfa0 100644 --- a/radio/1.2/types.hal +++ b/radio/1.2/types.hal @@ -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; + vec cellIdentityWcdma; + vec cellIdentityCdma; + vec cellIdentityLte; + vec 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; +}; diff --git a/radio/1.2/vts/functional/radio_hidl_hal_api.cpp b/radio/1.2/vts/functional/radio_hidl_hal_api.cpp index 34a87e1316..ee130f8544 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.2/vts/functional/radio_hidl_hal_api.cpp @@ -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 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 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})); +} diff --git a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h index 66d8ca45ec..c61913c7cd 100644 --- a/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h +++ b/radio/1.2/vts/functional/radio_hidl_hal_utils_v1_2.h @@ -417,6 +417,12 @@ class RadioResponse_v1_2 : public V1_1::IRadioResponse { Return getCellInfoListResponse_1_2( const RadioResponseInfo& info, const ::android::hardware::hidl_vec& cellInfo); + + Return getVoiceRegistrationStateResponse_1_2( + const RadioResponseInfo& info, const V1_2::VoiceRegStateResult& voiceRegResponse); + + Return getDataRegistrationStateResponse_1_2( + const RadioResponseInfo& info, const V1_2::DataRegStateResult& dataRegResponse); }; /* Callback class for radio indication */ diff --git a/radio/1.2/vts/functional/radio_response.cpp b/radio/1.2/vts/functional/radio_response.cpp index d96f76b417..9195689ca8 100644 --- a/radio/1.2/vts/functional/radio_response.cpp +++ b/radio/1.2/vts/functional/radio_response.cpp @@ -731,4 +731,14 @@ Return RadioResponse_v1_2::getCellInfoListResponse_1_2( rspInfo = info; parent_v1_2.notify(); return Void(); -} \ No newline at end of file +} + +Return RadioResponse_v1_2::getVoiceRegistrationStateResponse_1_2( + const RadioResponseInfo& /*info*/, const V1_2::VoiceRegStateResult& /*voiceRegResponse*/) { + return Void(); +} + +Return RadioResponse_v1_2::getDataRegistrationStateResponse_1_2( + const RadioResponseInfo& /*info*/, const V1_2::DataRegStateResult& /*dataRegResponse*/) { + return Void(); +}