From c9d3b7b9d66f587cb99ca5a4c8946f78194d2a0d Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Thu, 23 Dec 2021 16:41:58 -0800 Subject: [PATCH 1/2] Convert hidl_bitfield and bitfield to int The previous API surface replaced bitfields of enums with the enum, which only allows one value at a time. Instead of using the enum, replace with int instead. Test: build Bug: 210712359 Change-Id: I2963200311494718ae89af8deade0b1dd41354f8 Merged-In: I2963200311494718ae89af8deade0b1dd41354f8 --- .../hardware/radio/data/DataProfileInfo.aidl | 4 +- .../hardware/radio/modem/RadioCapability.aidl | 2 +- .../hardware/radio/network/IRadioNetwork.aidl | 4 +- .../network/IRadioNetworkIndication.aidl | 2 +- .../radio/network/IRadioNetworkResponse.aidl | 2 +- .../hardware/radio/voice/EmergencyNumber.aidl | 2 +- .../hardware/radio/voice/IRadioVoice.aidl | 2 +- .../hardware/radio/data/DataProfileInfo.aidl | 4 +- .../hardware/radio/modem/RadioCapability.aidl | 2 +- .../hardware/radio/network/IRadioNetwork.aidl | 4 +- .../network/IRadioNetworkIndication.aidl | 6 +-- .../radio/network/IRadioNetworkResponse.aidl | 3 +- .../hardware/radio/voice/EmergencyNumber.aidl | 2 +- .../hardware/radio/voice/IRadioVoice.aidl | 6 +-- .../include/libradiocompat/RadioNetwork.h | 9 ++-- .../include/libradiocompat/RadioVoice.h | 3 +- .../compat/libradiocompat/modem/structs.cpp | 3 +- .../network/RadioIndication-network.cpp | 4 +- .../libradiocompat/network/RadioNetwork.cpp | 5 +-- .../network/RadioResponse-network.cpp | 7 +--- .../libradiocompat/voice/RadioVoice.cpp | 2 +- .../compat/libradiocompat/voice/structs.cpp | 2 +- radio/aidl/vts/radio_data_test.cpp | 42 ++++++++++++------- radio/aidl/vts/radio_network_indication.cpp | 2 +- radio/aidl/vts/radio_network_response.cpp | 2 +- radio/aidl/vts/radio_network_test.cpp | 5 ++- radio/aidl/vts/radio_network_utils.h | 6 +-- radio/aidl/vts/radio_voice_test.cpp | 7 ++-- 28 files changed, 75 insertions(+), 69 deletions(-) diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl index 334261965c..c8efea02d0 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl @@ -46,8 +46,8 @@ parcelable DataProfileInfo { int maxConns; int waitTime; boolean enabled; - android.hardware.radio.data.ApnTypes supportedApnTypesBitmap; - android.hardware.radio.RadioAccessFamily bearerBitmap; + int supportedApnTypesBitmap; + int bearerBitmap; int mtuV4; int mtuV6; boolean preferred; diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl index d5716acf40..5aaf5a7303 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl @@ -36,7 +36,7 @@ package android.hardware.radio.modem; parcelable RadioCapability { int session; int phase; - android.hardware.radio.RadioAccessFamily raf; + int raf; String logicalModemUuid; int status; const int PHASE_CONFIGURED = 0; diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl index c6187913dd..2b70e45084 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetwork.aidl @@ -50,12 +50,12 @@ interface IRadioNetwork { oneway void getVoiceRegistrationState(in int serial); oneway void isNrDualConnectivityEnabled(in int serial); oneway void responseAcknowledgement(); - oneway void setAllowedNetworkTypesBitmap(in int serial, in android.hardware.radio.RadioAccessFamily networkTypeBitmap); + oneway void setAllowedNetworkTypesBitmap(in int serial, in int networkTypeBitmap); oneway void setBandMode(in int serial, in android.hardware.radio.network.RadioBandMode mode); oneway void setBarringPassword(in int serial, in String facility, in String oldPassword, in String newPassword); oneway void setCdmaRoamingPreference(in int serial, in android.hardware.radio.network.CdmaRoamingType type); oneway void setCellInfoListRate(in int serial, in int rate); - oneway void setIndicationFilter(in int serial, in android.hardware.radio.network.IndicationFilter indicationFilter); + oneway void setIndicationFilter(in int serial, in int indicationFilter); oneway void setLinkCapacityReportingCriteria(in int serial, in int hysteresisMs, in int hysteresisDlKbps, in int hysteresisUlKbps, in int[] thresholdsDownlinkKbps, in int[] thresholdsUplinkKbps, in android.hardware.radio.AccessNetwork accessNetwork); oneway void setLocationUpdates(in int serial, in boolean enable); oneway void setNetworkSelectionModeAutomatic(in int serial); diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkIndication.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkIndication.aidl index d135a69ecc..bd03c51ec7 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkIndication.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkIndication.aidl @@ -44,7 +44,7 @@ interface IRadioNetworkIndication { oneway void networkScanResult(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.network.NetworkScanResult result); oneway void networkStateChanged(in android.hardware.radio.RadioIndicationType type); oneway void nitzTimeReceived(in android.hardware.radio.RadioIndicationType type, in String nitzTime, in long receivedTimeMs, in long ageMs); - oneway void registrationFailed(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.network.CellIdentity cellIdentity, in String chosenPlmn, in android.hardware.radio.network.Domain domain, in int causeCode, in int additionalCauseCode); + oneway void registrationFailed(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.network.CellIdentity cellIdentity, in String chosenPlmn, in int domain, in int causeCode, in int additionalCauseCode); oneway void restrictedStateChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.network.PhoneRestrictedState state); oneway void suppSvcNotify(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.network.SuppSvcNotification suppSvc); oneway void voiceRadioTechChanged(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.RadioTechnology rat); diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkResponse.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkResponse.aidl index 8cf4c31149..5f6c7369f4 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkResponse.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/IRadioNetworkResponse.aidl @@ -35,7 +35,7 @@ package android.hardware.radio.network; @VintfStability interface IRadioNetworkResponse { oneway void acknowledgeRequest(in int serial); - oneway void getAllowedNetworkTypesBitmapResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.RadioAccessFamily networkTypeBitmap); + oneway void getAllowedNetworkTypesBitmapResponse(in android.hardware.radio.RadioResponseInfo info, in int networkTypeBitmap); oneway void getAvailableBandModesResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.network.RadioBandMode[] bandModes); oneway void getAvailableNetworksResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.network.OperatorInfo[] networkInfos); oneway void getBarringInfoResponse(in android.hardware.radio.RadioResponseInfo info, in android.hardware.radio.network.CellIdentity cellIdentity, in android.hardware.radio.network.BarringInfo[] barringInfos); diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl index 4f415ee3a2..39bcf1a20e 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl @@ -37,7 +37,7 @@ parcelable EmergencyNumber { String number; String mcc; String mnc; - android.hardware.radio.voice.EmergencyServiceCategory categories; + int categories; String[] urns; int sources; const int SOURCE_NETWORK_SIGNALING = 1; diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/IRadioVoice.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/IRadioVoice.aidl index 68c82fa4f8..34d155aa79 100644 --- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/IRadioVoice.aidl +++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/IRadioVoice.aidl @@ -37,7 +37,7 @@ interface IRadioVoice { oneway void acceptCall(in int serial); oneway void conference(in int serial); oneway void dial(in int serial, in android.hardware.radio.voice.Dial dialInfo); - oneway void emergencyDial(in int serial, in android.hardware.radio.voice.Dial dialInfo, in android.hardware.radio.voice.EmergencyServiceCategory categories, in String[] urns, in android.hardware.radio.voice.EmergencyCallRouting routing, in boolean hasKnownUserIntentEmergency, in boolean isTesting); + oneway void emergencyDial(in int serial, in android.hardware.radio.voice.Dial dialInfo, in int categories, in String[] urns, in android.hardware.radio.voice.EmergencyCallRouting routing, in boolean hasKnownUserIntentEmergency, in boolean isTesting); oneway void exitEmergencyCallbackMode(in int serial); oneway void explicitCallTransfer(in int serial); oneway void getCallForwardStatus(in int serial, in android.hardware.radio.voice.CallForwardInfo callInfo); diff --git a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl index 0f061191fd..7360202aaf 100644 --- a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl +++ b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl @@ -93,11 +93,11 @@ parcelable DataProfileInfo { /** * Supported APN types bitmap. See ApnTypes for the value of each bit. */ - ApnTypes supportedApnTypesBitmap; + int supportedApnTypesBitmap; /** * The bearer bitmap. See RadioAccessFamily for the value of each bit. */ - RadioAccessFamily bearerBitmap; + int bearerBitmap; /** * Maximum transmission unit (MTU) size in bytes for IPv4. */ diff --git a/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl b/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl index b7b8ef3552..9bd5f21a7f 100644 --- a/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl +++ b/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl @@ -71,7 +71,7 @@ parcelable RadioCapability { /** * 32-bit bitmap of RadioAccessFamily. */ - RadioAccessFamily raf; + int raf; /** * A UUID typically "com.xxxx.lmX" where X is the logical modem. * RadioConst:MAX_UUID_LENGTH is the max length. diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl index aaf432aaaa..7a22a9a68f 100644 --- a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl +++ b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl @@ -195,7 +195,7 @@ oneway interface IRadioNetwork { * * Response function is IRadioNetworkResponse.setAllowedNetworkTypesBitmapResponse() */ - void setAllowedNetworkTypesBitmap(in int serial, in RadioAccessFamily networkTypeBitmap); + void setAllowedNetworkTypesBitmap(in int serial, in int networkTypeBitmap); /** * Assign a specified band for RF configuration. @@ -253,7 +253,7 @@ oneway interface IRadioNetwork { * * Response function is IRadioNetworkResponse.setIndicationFilterResponse() */ - void setIndicationFilter(in int serial, in IndicationFilter indicationFilter); + void setIndicationFilter(in int serial, in int indicationFilter); /** * Sets the link capacity reporting criteria. The resulting reporting criteria are the AND of diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl index ba7610dfbd..6863ac3acd 100644 --- a/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl +++ b/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl @@ -136,8 +136,8 @@ oneway interface IRadioNetworkIndication { * include the time spend in sleep / low power states. If it can not be guaranteed, * there must not be any caching done at the modem and should fill in 0 for ageMs */ - void nitzTimeReceived(in RadioIndicationType type, in String nitzTime, - in long receivedTimeMs, in long ageMs); + void nitzTimeReceived( + in RadioIndicationType type, in String nitzTime, in long receivedTimeMs, in long ageMs); /** * Report that Registration or a Location/Routing/Tracking Area update has failed. @@ -165,7 +165,7 @@ oneway interface IRadioNetworkIndication { * MAX_INT if this value is unused. */ void registrationFailed(in RadioIndicationType type, in CellIdentity cellIdentity, - in String chosenPlmn, in Domain domain, in int causeCode, in int additionalCauseCode); + in String chosenPlmn, in int domain, in int causeCode, in int additionalCauseCode); /** * Indicates a restricted state change (eg, for Domain Specific Access Control). diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl index 30f422101b..e650321ef9 100644 --- a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl +++ b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl @@ -62,8 +62,7 @@ oneway interface IRadioNetworkResponse { * RadioError:REQUEST_NOT_SUPPORTED * RadioError:NO_RESOURCES */ - void getAllowedNetworkTypesBitmapResponse( - in RadioResponseInfo info, in RadioAccessFamily networkTypeBitmap); + void getAllowedNetworkTypesBitmapResponse(in RadioResponseInfo info, in int networkTypeBitmap); /** * @param info Response info struct containing response type, serial no. and error diff --git a/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl b/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl index aa4dde2893..ddc5d765a0 100644 --- a/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl +++ b/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl @@ -78,7 +78,7 @@ parcelable EmergencyNumber { * The bitfield of EmergencyServiceCategory(s). See EmergencyServiceCategory for the value of * each bit. */ - EmergencyServiceCategory categories; + int categories; /** * The list of emergency Uniform Resource Names (URN). */ diff --git a/radio/aidl/android/hardware/radio/voice/IRadioVoice.aidl b/radio/aidl/android/hardware/radio/voice/IRadioVoice.aidl index a012be4515..b25e63dff6 100644 --- a/radio/aidl/android/hardware/radio/voice/IRadioVoice.aidl +++ b/radio/aidl/android/hardware/radio/voice/IRadioVoice.aidl @@ -117,9 +117,9 @@ oneway interface IRadioVoice { * * Response function is IRadioVoiceResponse.emergencyDialResponse() */ - void emergencyDial(in int serial, in Dial dialInfo, in EmergencyServiceCategory categories, - in String[] urns, in EmergencyCallRouting routing, - in boolean hasKnownUserIntentEmergency, in boolean isTesting); + void emergencyDial(in int serial, in Dial dialInfo, in int categories, in String[] urns, + in EmergencyCallRouting routing, in boolean hasKnownUserIntentEmergency, + in boolean isTesting); /** * Request the radio's system selection module to exit emergency callback mode. Radio must not diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h index ec76300f6c..1731b78851 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioNetwork.h @@ -41,9 +41,8 @@ class RadioNetwork : public RadioCompatBase, ::ndk::ScopedAStatus getVoiceRegistrationState(int32_t serial) override; ::ndk::ScopedAStatus isNrDualConnectivityEnabled(int32_t serial) override; ::ndk::ScopedAStatus responseAcknowledgement() override; - ::ndk::ScopedAStatus setAllowedNetworkTypesBitmap( - int32_t serial, - ::aidl::android::hardware::radio::RadioAccessFamily networkTypeBitmap) override; + ::ndk::ScopedAStatus setAllowedNetworkTypesBitmap(int32_t serial, + int32_t networkTypeBitmap) override; ::ndk::ScopedAStatus setBandMode( int32_t serial, ::aidl::android::hardware::radio::network::RadioBandMode mode) override; ::ndk::ScopedAStatus setBarringPassword(int32_t serial, const std::string& facility, @@ -53,9 +52,7 @@ class RadioNetwork : public RadioCompatBase, int32_t serial, ::aidl::android::hardware::radio::network::CdmaRoamingType type) override; ::ndk::ScopedAStatus setCellInfoListRate(int32_t serial, int32_t rate) override; - ::ndk::ScopedAStatus setIndicationFilter( - int32_t serial, - ::aidl::android::hardware::radio::network::IndicationFilter indicationFilter) override; + ::ndk::ScopedAStatus setIndicationFilter(int32_t serial, int32_t indicationFilter) override; ::ndk::ScopedAStatus setLinkCapacityReportingCriteria( int32_t serial, int32_t hysteresisMs, int32_t hysteresisDlKbps, int32_t hysteresisUlKbps, const std::vector& thresholdsDownlinkKbps, diff --git a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h index 5839e3a774..a0e1e82f5f 100644 --- a/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h +++ b/radio/aidl/compat/libradiocompat/include/libradiocompat/RadioVoice.h @@ -31,8 +31,7 @@ class RadioVoice : public RadioCompatBase, int32_t serial, const ::aidl::android::hardware::radio::voice::Dial& dialInfo) override; ::ndk::ScopedAStatus emergencyDial( int32_t serial, const ::aidl::android::hardware::radio::voice::Dial& dialInfo, - ::aidl::android::hardware::radio::voice::EmergencyServiceCategory categories, - const std::vector& urns, + int32_t categories, const std::vector& urns, ::aidl::android::hardware::radio::voice::EmergencyCallRouting routing, bool hasKnownUserIntentEmergency, bool isTesting) override; ::ndk::ScopedAStatus exitEmergencyCallbackMode(int32_t serial) override; diff --git a/radio/aidl/compat/libradiocompat/modem/structs.cpp b/radio/aidl/compat/libradiocompat/modem/structs.cpp index 53d575347b..69e651be42 100644 --- a/radio/aidl/compat/libradiocompat/modem/structs.cpp +++ b/radio/aidl/compat/libradiocompat/modem/structs.cpp @@ -25,7 +25,6 @@ namespace android::hardware::radio::compat { using ::aidl::android::hardware::radio::AccessNetwork; -using ::aidl::android::hardware::radio::RadioAccessFamily; using ::aidl::android::hardware::radio::RadioTechnology; namespace aidl = ::aidl::android::hardware::radio::modem; @@ -40,7 +39,7 @@ aidl::RadioCapability toAidl(const V1_0::RadioCapability& capa) { return { .session = capa.session, .phase = static_cast(capa.phase), - .raf = RadioAccessFamily(capa.raf), + .raf = static_cast(capa.raf), .logicalModemUuid = capa.logicalModemUuid, .status = static_cast(capa.status), }; diff --git a/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp b/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp index d4cbdbcf5b..4eb99f7486 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioIndication-network.cpp @@ -208,8 +208,8 @@ Return RadioIndication::registrationFailed( // const hidl_string& chosenPlmn, hidl_bitfield domain, int32_t causeCode, int32_t additionalCauseCode) { LOG_CALL << type; - networkCb()->registrationFailed(toAidl(type), toAidl(cellIdentity), chosenPlmn, - aidl::Domain(domain), causeCode, additionalCauseCode); + networkCb()->registrationFailed(toAidl(type), toAidl(cellIdentity), chosenPlmn, domain, + causeCode, additionalCauseCode); return {}; } diff --git a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp index 8bfa0bbbb2..d3b600221f 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioNetwork.cpp @@ -28,7 +28,6 @@ namespace android::hardware::radio::compat { using ::aidl::android::hardware::radio::AccessNetwork; -using ::aidl::android::hardware::radio::RadioAccessFamily; using ::ndk::ScopedAStatus; namespace aidl = ::aidl::android::hardware::radio::network; constexpr auto ok = &ScopedAStatus::ok; @@ -161,7 +160,7 @@ ScopedAStatus RadioNetwork::responseAcknowledgement() { return ok(); } -ScopedAStatus RadioNetwork::setAllowedNetworkTypesBitmap(int32_t serial, RadioAccessFamily ntype) { +ScopedAStatus RadioNetwork::setAllowedNetworkTypesBitmap(int32_t serial, int32_t ntype) { LOG_CALL << serial; const auto raf = toHidlBitfield(ntype); if (mHal1_6) { @@ -197,7 +196,7 @@ ScopedAStatus RadioNetwork::setCellInfoListRate(int32_t serial, int32_t rate) { return ok(); } -ScopedAStatus RadioNetwork::setIndicationFilter(int32_t serial, aidl::IndicationFilter indFilter) { +ScopedAStatus RadioNetwork::setIndicationFilter(int32_t serial, int32_t indFilter) { LOG_CALL << serial; mHal1_5->setIndicationFilter_1_5(serial, toHidlBitfield(indFilter)); return ok(); diff --git a/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp b/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp index bab1d4a30d..5a98eb223c 100644 --- a/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp +++ b/radio/aidl/compat/libradiocompat/network/RadioResponse-network.cpp @@ -27,7 +27,6 @@ namespace android::hardware::radio::compat { -using ::aidl::android::hardware::radio::RadioAccessFamily; using ::aidl::android::hardware::radio::RadioTechnology; using ::aidl::android::hardware::radio::RadioTechnologyFamily; namespace aidl = ::aidl::android::hardware::radio::network; @@ -44,16 +43,14 @@ Return RadioResponse::getAllowedNetworkTypesBitmapResponse( const V1_6::RadioResponseInfo& info, hidl_bitfield networkTypeBitmap) { LOG_CALL << info.serial; - networkCb()->getAllowedNetworkTypesBitmapResponse(toAidl(info), - RadioAccessFamily(networkTypeBitmap)); + networkCb()->getAllowedNetworkTypesBitmapResponse(toAidl(info), networkTypeBitmap); return {}; } Return RadioResponse::getPreferredNetworkTypeResponse(const V1_0::RadioResponseInfo& info, V1_0::PreferredNetworkType nwType) { LOG_CALL << info.serial; - networkCb()->getAllowedNetworkTypesBitmapResponse( // - toAidl(info), RadioAccessFamily(getRafFromNetworkType(nwType))); + networkCb()->getAllowedNetworkTypesBitmapResponse(toAidl(info), getRafFromNetworkType(nwType)); return {}; } diff --git a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp index 7b1d1fa01e..71d1a568a4 100644 --- a/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp +++ b/radio/aidl/compat/libradiocompat/voice/RadioVoice.cpp @@ -53,7 +53,7 @@ ScopedAStatus RadioVoice::dial(int32_t serial, const aidl::Dial& dialInfo) { } ScopedAStatus RadioVoice::emergencyDial( // - int32_t serial, const aidl::Dial& info, aidl::EmergencyServiceCategory categories, + int32_t serial, const aidl::Dial& info, int32_t categories, const std::vector& urns, aidl::EmergencyCallRouting routing, bool knownUserIntentEmerg, bool isTesting) { LOG_CALL << serial; diff --git a/radio/aidl/compat/libradiocompat/voice/structs.cpp b/radio/aidl/compat/libradiocompat/voice/structs.cpp index ae6342e5be..254ea20c42 100644 --- a/radio/aidl/compat/libradiocompat/voice/structs.cpp +++ b/radio/aidl/compat/libradiocompat/voice/structs.cpp @@ -147,7 +147,7 @@ aidl::EmergencyNumber toAidl(const V1_4::EmergencyNumber& num) { .number = num.number, .mcc = num.mcc, .mnc = num.mnc, - .categories = aidl::EmergencyServiceCategory(num.categories), + .categories = num.categories, .urns = toAidl(num.urns), .sources = num.sources, }; diff --git a/radio/aidl/vts/radio_data_test.cpp b/radio/aidl/vts/radio_data_test.cpp index dbf0eb7ec3..87521cc057 100644 --- a/radio/aidl/vts/radio_data_test.cpp +++ b/radio/aidl/vts/radio_data_test.cpp @@ -14,10 +14,11 @@ * limitations under the License. */ +#include #include +#include #include #include -#include #include "radio_data_utils.h" @@ -82,10 +83,18 @@ TEST_P(RadioDataTest, setupDataCall) { dataProfileInfo.maxConns = 20; dataProfileInfo.waitTime = 0; dataProfileInfo.enabled = true; - // TODO(b/210712359): 320 was the previous value; need to support bitmaps - dataProfileInfo.supportedApnTypesBitmap = ApnTypes::DEFAULT; - // TODO(b/210712359): 161543 was the previous value; need to support bitmaps - dataProfileInfo.bearerBitmap = RadioAccessFamily::LTE; + dataProfileInfo.supportedApnTypesBitmap = + static_cast(ApnTypes::IMS) | static_cast(ApnTypes::IA); + dataProfileInfo.bearerBitmap = static_cast(RadioAccessFamily::GPRS) | + static_cast(RadioAccessFamily::EDGE) | + static_cast(RadioAccessFamily::UMTS) | + static_cast(RadioAccessFamily::HSDPA) | + static_cast(RadioAccessFamily::HSUPA) | + static_cast(RadioAccessFamily::HSPA) | + static_cast(RadioAccessFamily::EHRPD) | + static_cast(RadioAccessFamily::LTE) | + static_cast(RadioAccessFamily::HSPAP) | + static_cast(RadioAccessFamily::IWLAN); dataProfileInfo.mtuV4 = 0; dataProfileInfo.mtuV6 = 0; dataProfileInfo.preferred = true; @@ -130,11 +139,8 @@ TEST_P(RadioDataTest, setupDataCall_osAppId) { TrafficDescriptor trafficDescriptor; OsAppId osAppId; std::string osAppIdString("osAppId"); - // TODO(b/210712359): there should be a cleaner way to convert this - std::vector output(osAppIdString.length()); - std::transform(osAppIdString.begin(), osAppIdString.end(), output.begin(), - [](char c) { return static_cast(c); }); - osAppId.osAppId = output; + std::vector osAppIdVec(osAppIdString.begin(), osAppIdString.end()); + osAppId.osAppId = osAppIdVec; trafficDescriptor.osAppId = osAppId; DataProfileInfo dataProfileInfo; @@ -151,10 +157,18 @@ TEST_P(RadioDataTest, setupDataCall_osAppId) { dataProfileInfo.maxConns = 20; dataProfileInfo.waitTime = 0; dataProfileInfo.enabled = true; - // TODO(b/210712359): 320 was the previous value; need to support bitmaps - dataProfileInfo.supportedApnTypesBitmap = ApnTypes::DEFAULT; - // TODO(b/210712359): 161543 was the previous value; need to support bitmaps - dataProfileInfo.bearerBitmap = RadioAccessFamily::LTE; + dataProfileInfo.supportedApnTypesBitmap = + static_cast(ApnTypes::IMS) | static_cast(ApnTypes::IA); + dataProfileInfo.bearerBitmap = static_cast(RadioAccessFamily::GPRS) | + static_cast(RadioAccessFamily::EDGE) | + static_cast(RadioAccessFamily::UMTS) | + static_cast(RadioAccessFamily::HSDPA) | + static_cast(RadioAccessFamily::HSUPA) | + static_cast(RadioAccessFamily::HSPA) | + static_cast(RadioAccessFamily::EHRPD) | + static_cast(RadioAccessFamily::LTE) | + static_cast(RadioAccessFamily::HSPAP) | + static_cast(RadioAccessFamily::IWLAN); dataProfileInfo.mtuV4 = 0; dataProfileInfo.mtuV6 = 0; dataProfileInfo.preferred = true; diff --git a/radio/aidl/vts/radio_network_indication.cpp b/radio/aidl/vts/radio_network_indication.cpp index 7bed7593a6..03caf3bbf5 100644 --- a/radio/aidl/vts/radio_network_indication.cpp +++ b/radio/aidl/vts/radio_network_indication.cpp @@ -72,7 +72,7 @@ ndk::ScopedAStatus RadioNetworkIndication::nitzTimeReceived(RadioIndicationType ndk::ScopedAStatus RadioNetworkIndication::registrationFailed(RadioIndicationType /*type*/, const CellIdentity& /*cellIdentity*/, const std::string& /*chosenPlmn*/, - Domain /*domain*/, + int32_t /*domain*/, int32_t /*causeCode*/, int32_t /*additionalCauseCode*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_network_response.cpp b/radio/aidl/vts/radio_network_response.cpp index 64f85c6bab..839387bc78 100644 --- a/radio/aidl/vts/radio_network_response.cpp +++ b/radio/aidl/vts/radio_network_response.cpp @@ -23,7 +23,7 @@ ndk::ScopedAStatus RadioNetworkResponse::acknowledgeRequest(int32_t /*serial*/) } ndk::ScopedAStatus RadioNetworkResponse::getAllowedNetworkTypesBitmapResponse( - const RadioResponseInfo& info, const RadioAccessFamily networkTypeBitmap) { + const RadioResponseInfo& info, const int32_t networkTypeBitmap) { rspInfo = info; networkTypeBitmapResponse = networkTypeBitmap; parent_network.notify(info.serial); diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp index a8f87fc6ed..54e0c0d39c 100644 --- a/radio/aidl/vts/radio_network_test.cpp +++ b/radio/aidl/vts/radio_network_test.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include #include #include @@ -57,7 +58,7 @@ void RadioNetworkTest::SetUp() { */ TEST_P(RadioNetworkTest, setAllowedNetworkTypesBitmap) { serial = GetRandomSerialNumber(); - RadioAccessFamily allowedNetworkTypesBitmap = RadioAccessFamily::LTE; + int32_t allowedNetworkTypesBitmap = static_cast(RadioAccessFamily::LTE); radio_network->setAllowedNetworkTypesBitmap(serial, allowedNetworkTypesBitmap); @@ -77,7 +78,7 @@ TEST_P(RadioNetworkTest, setAllowedNetworkTypesBitmap) { */ TEST_P(RadioNetworkTest, getAllowedNetworkTypesBitmap) { serial = GetRandomSerialNumber(); - RadioAccessFamily allowedNetworkTypesBitmap = RadioAccessFamily::LTE; + int32_t allowedNetworkTypesBitmap = static_cast(RadioAccessFamily::LTE); radio_network->setAllowedNetworkTypesBitmap(serial, allowedNetworkTypesBitmap); diff --git a/radio/aidl/vts/radio_network_utils.h b/radio/aidl/vts/radio_network_utils.h index 26fce016b2..70d45da8c2 100644 --- a/radio/aidl/vts/radio_network_utils.h +++ b/radio/aidl/vts/radio_network_utils.h @@ -39,7 +39,7 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { std::vector radioBandModes; std::vector networkInfos; bool isNrDualConnectivityEnabled; - RadioAccessFamily networkTypeBitmapResponse; + int networkTypeBitmapResponse; RegStateResult regStateResp; CellIdentity barringCellIdentity; std::vector barringInfos; @@ -47,7 +47,7 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { virtual ndk::ScopedAStatus acknowledgeRequest(int32_t serial) override; virtual ndk::ScopedAStatus getAllowedNetworkTypesBitmapResponse( - const RadioResponseInfo& info, const RadioAccessFamily networkTypeBitmap) override; + const RadioResponseInfo& info, const int32_t networkTypeBitmap) override; virtual ndk::ScopedAStatus getAvailableBandModesResponse( const RadioResponseInfo& info, const std::vector& bandModes) override; @@ -186,7 +186,7 @@ class RadioNetworkIndication : public BnRadioNetworkIndication { virtual ndk::ScopedAStatus registrationFailed(RadioIndicationType type, const CellIdentity& cellIdentity, - const std::string& chosenPlmn, Domain domain, + const std::string& chosenPlmn, int32_t domain, int32_t causeCode, int32_t additionalCauseCode) override; diff --git a/radio/aidl/vts/radio_voice_test.cpp b/radio/aidl/vts/radio_voice_test.cpp index 201f14c2d9..7a0bedd3ee 100644 --- a/radio/aidl/vts/radio_voice_test.cpp +++ b/radio/aidl/vts/radio_voice_test.cpp @@ -15,6 +15,7 @@ */ #include +#include #include #include @@ -95,7 +96,7 @@ TEST_P(RadioVoiceTest, emergencyDial) { Dial dialInfo; dialInfo.address = std::string("911"); - EmergencyServiceCategory categories = EmergencyServiceCategory::UNSPECIFIED; + int32_t categories = static_cast(EmergencyServiceCategory::UNSPECIFIED); std::vector urns = {""}; EmergencyCallRouting routing = EmergencyCallRouting::UNKNOWN; @@ -152,7 +153,7 @@ TEST_P(RadioVoiceTest, emergencyDial_withServices) { Dial dialInfo; dialInfo.address = std::string("911"); - EmergencyServiceCategory categories = EmergencyServiceCategory::AMBULANCE; + int32_t categories = static_cast(EmergencyServiceCategory::AMBULANCE); std::vector urns = {"urn:service:sos.ambulance"}; EmergencyCallRouting routing = EmergencyCallRouting::UNKNOWN; @@ -209,7 +210,7 @@ TEST_P(RadioVoiceTest, emergencyDial_withEmergencyRouting) { Dial dialInfo; dialInfo.address = std::string("911"); - EmergencyServiceCategory categories = EmergencyServiceCategory::UNSPECIFIED; + int32_t categories = static_cast(EmergencyServiceCategory::UNSPECIFIED); std::vector urns = {""}; EmergencyCallRouting routing = EmergencyCallRouting::EMERGENCY; From 91997ac0896f3ca4da7935f4865063100200ac07 Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Wed, 29 Dec 2021 00:35:12 -0800 Subject: [PATCH 2/2] Finish IRadio 1.6/IRadioConfig 1.3 AIDL VTS Implement IRadioConfig VTS and helper methods Verify that VtsHalRadioTargetTest passes Bug: 210712359 Test: atest VtsHalRadioTargetTest Change-Id: Ic82ffd2feacc107e9b291ef3aab861d0c1496489 Merged-In: Ic82ffd2feacc107e9b291ef3aab861d0c1496489 --- radio/aidl/vts/Android.bp | 3 + radio/aidl/vts/VtsHalRadioTargetTest.cpp | 7 ++ radio/aidl/vts/radio_aidl_hal_utils.cpp | 74 +++++++++++----- radio/aidl/vts/radio_aidl_hal_utils.h | 26 +++--- radio/aidl/vts/radio_config_indication.cpp | 24 ++++++ radio/aidl/vts/radio_config_response.cpp | 59 +++++++++++++ radio/aidl/vts/radio_config_test.cpp | 56 ++++++++++++ radio/aidl/vts/radio_config_utils.h | 86 +++++++++++++++++++ radio/aidl/vts/radio_data_indication.cpp | 2 +- radio/aidl/vts/radio_data_response.cpp | 2 +- radio/aidl/vts/radio_data_test.cpp | 15 ++-- radio/aidl/vts/radio_data_utils.h | 11 ++- radio/aidl/vts/radio_messaging_indication.cpp | 2 +- radio/aidl/vts/radio_messaging_response.cpp | 2 +- radio/aidl/vts/radio_messaging_test.cpp | 15 ++-- radio/aidl/vts/radio_messaging_utils.h | 11 ++- radio/aidl/vts/radio_modem_indication.cpp | 2 +- radio/aidl/vts/radio_modem_response.cpp | 2 +- radio/aidl/vts/radio_modem_test.cpp | 15 ++-- radio/aidl/vts/radio_modem_utils.h | 11 ++- radio/aidl/vts/radio_network_indication.cpp | 2 +- radio/aidl/vts/radio_network_response.cpp | 4 +- radio/aidl/vts/radio_network_test.cpp | 15 ++-- radio/aidl/vts/radio_network_utils.h | 12 +-- radio/aidl/vts/radio_sim_indication.cpp | 2 +- radio/aidl/vts/radio_sim_response.cpp | 2 +- radio/aidl/vts/radio_sim_test.cpp | 17 ++-- radio/aidl/vts/radio_sim_utils.h | 20 ++--- radio/aidl/vts/radio_voice_indication.cpp | 2 +- radio/aidl/vts/radio_voice_response.cpp | 2 +- radio/aidl/vts/radio_voice_test.cpp | 51 ++++++----- radio/aidl/vts/radio_voice_utils.h | 14 +-- 32 files changed, 432 insertions(+), 136 deletions(-) create mode 100644 radio/aidl/vts/radio_config_indication.cpp create mode 100644 radio/aidl/vts/radio_config_response.cpp create mode 100644 radio/aidl/vts/radio_config_test.cpp create mode 100644 radio/aidl/vts/radio_config_utils.h diff --git a/radio/aidl/vts/Android.bp b/radio/aidl/vts/Android.bp index 935d2e5077..8060e4bcc3 100644 --- a/radio/aidl/vts/Android.bp +++ b/radio/aidl/vts/Android.bp @@ -29,6 +29,9 @@ cc_test { ], srcs: [ "radio_aidl_hal_utils.cpp", + "radio_config_indication.cpp", + "radio_config_response.cpp", + "radio_config_test.cpp", "radio_data_indication.cpp", "radio_data_response.cpp", "radio_data_test.cpp", diff --git a/radio/aidl/vts/VtsHalRadioTargetTest.cpp b/radio/aidl/vts/VtsHalRadioTargetTest.cpp index e829f8e253..1ebc6afa8a 100644 --- a/radio/aidl/vts/VtsHalRadioTargetTest.cpp +++ b/radio/aidl/vts/VtsHalRadioTargetTest.cpp @@ -16,6 +16,7 @@ #include +#include "radio_config_utils.h" #include "radio_data_utils.h" #include "radio_messaging_utils.h" #include "radio_modem_utils.h" @@ -23,6 +24,12 @@ #include "radio_sim_utils.h" #include "radio_voice_utils.h" +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(RadioConfigTest); +INSTANTIATE_TEST_SUITE_P( + PerInstance, RadioConfigTest, + testing::ValuesIn(android::getAidlHalInstanceNames(IRadioConfig::descriptor)), + android::PrintInstanceNameToString); + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(RadioDataTest); INSTANTIATE_TEST_SUITE_P( PerInstance, RadioDataTest, diff --git a/radio/aidl/vts/radio_aidl_hal_utils.cpp b/radio/aidl/vts/radio_aidl_hal_utils.cpp index 14a16c0f2b..dc61a3cfd3 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.cpp +++ b/radio/aidl/vts/radio_aidl_hal_utils.cpp @@ -18,12 +18,14 @@ #include "radio_aidl_hal_utils.h" #include #include "VtsCoreUtil.h" - -using namespace aidl::android::hardware::radio::network; +#include "radio_config_utils.h" +#include "radio_sim_utils.h" #define WAIT_TIMEOUT_PERIOD 75 -aidl::android::hardware::radio::sim::CardStatus cardStatus = {}; +sim::CardStatus cardStatus = {}; +int serial = 0; +int count_ = 0; int GetRandomSerialNumber() { return rand(); @@ -103,23 +105,33 @@ bool isVoiceEmergencyOnly(RegState state) { RegState::UNKNOWN_EM == state; } +bool stringEndsWith(std::string const& string, std::string const& end) { + if (string.size() >= end.size()) { + return (0 == string.compare(string.size() - end.size() - 1, end.size(), end)); + } else { + return false; + } +} + bool isServiceValidForDeviceConfiguration(std::string& serviceName) { if (isSsSsEnabled()) { // Device is configured as SSSS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME) { + if (stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME)) { ALOGI("%s instance is not valid for SSSS device.", serviceName.c_str()); return false; } } else if (isDsDsEnabled()) { // Device is configured as DSDS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME && serviceName != RADIO_SERVICE_SLOT2_NAME) { + if (!stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT2_NAME)) { ALOGI("%s instance is not valid for DSDS device.", serviceName.c_str()); return false; } } else if (isTsTsEnabled()) { // Device is configured as TSTS. - if (serviceName != RADIO_SERVICE_SLOT1_NAME && serviceName != RADIO_SERVICE_SLOT2_NAME && - serviceName != RADIO_SERVICE_SLOT3_NAME) { + if (!stringEndsWith(serviceName, RADIO_SERVICE_SLOT1_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT2_NAME) && + !stringEndsWith(serviceName, RADIO_SERVICE_SLOT3_NAME)) { ALOGI("%s instance is not valid for TSTS device.", serviceName.c_str()); return false; } @@ -130,7 +142,7 @@ bool isServiceValidForDeviceConfiguration(std::string& serviceName) { /* * Notify that the response message is received. */ -void RadioResponseWaiter::notify(int receivedSerial) { +void RadioServiceTest::notify(int receivedSerial) { std::unique_lock lock(mtx_); if (serial == receivedSerial) { count_++; @@ -141,7 +153,7 @@ void RadioResponseWaiter::notify(int receivedSerial) { /* * Wait till the response message is notified or till WAIT_TIMEOUT_PERIOD. */ -std::cv_status RadioResponseWaiter::wait() { +std::cv_status RadioServiceTest::wait() { std::unique_lock lock(mtx_); std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); @@ -158,19 +170,37 @@ std::cv_status RadioResponseWaiter::wait() { /** * Specific features on the Radio HAL rely on Radio HAL Capabilities. * The VTS test related to those features must not run if the related capability is disabled. - * Typical usage within VTS: if (getRadioHalCapabilities()) return; + * Typical usage within VTS: + * if (getRadioHalCapabilities()) return; */ -bool RadioResponseWaiter::getRadioHalCapabilities() { - // TODO(b/210712359): implement after RadioConfig VTS is created - /** - // Get HalDeviceCapabilities from the radio config - std::shared_ptr radioConfigRsp = new (std::nothrow) - RadioConfigResponse(*this); radioConfig->setResponseFunctions(radioConfigRsp, nullptr); serial = - GetRandomSerialNumber(); - - radioConfig->getHalDeviceCapabilities(serial); +bool RadioServiceTest::getRadioHalCapabilities() { + // Get HalDeviceCapabilities from RadioConfig + std::shared_ptr radioConfigRsp = + ndk::SharedRefBase::make(*this); + std::shared_ptr radioConfigInd = + ndk::SharedRefBase::make(*this); + radio_config->setResponseFunctions(radioConfigRsp, radioConfigInd); + serial = GetRandomSerialNumber(); + radio_config->getHalDeviceCapabilities(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); return radioConfigRsp->modemReducedFeatureSet1; - **/ - return true; -} \ No newline at end of file +} + +/** + * Some VTS tests require the SIM card status to be present before running. + * Update the SIM card status, which can be accessed via the extern cardStatus. + */ +void RadioServiceTest::updateSimCardStatus() { + // Update CardStatus from RadioSim + std::shared_ptr radioSimRsp = + ndk::SharedRefBase::make(*this); + std::shared_ptr radioSimInd = + ndk::SharedRefBase::make(*this); + radio_sim->setResponseFunctions(radioSimRsp, radioSimInd); + serial = GetRandomSerialNumber(); + radio_sim->getIccCardStatus(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioSimRsp->rspInfo.type); + EXPECT_EQ(serial, radioSimRsp->rspInfo.serial); + EXPECT_EQ(RadioError::NONE, radioSimRsp->rspInfo.error); +} diff --git a/radio/aidl/vts/radio_aidl_hal_utils.h b/radio/aidl/vts/radio_aidl_hal_utils.h index 2f31fa80a5..414ffbc456 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.h +++ b/radio/aidl/vts/radio_aidl_hal_utils.h @@ -19,15 +19,20 @@ #include #include #include +#include #include #include +#include #include #include using namespace aidl::android::hardware::radio; +using aidl::android::hardware::radio::network::RegState; using aidl::android::hardware::radio::sim::CardStatus; extern CardStatus cardStatus; +extern int serial; +extern int count_; /* * MACRO used to skip test case when radio response return error REQUEST_NOT_SUPPORTED @@ -102,12 +107,12 @@ bool isTsTsEnabled(); /* * Check if voice status is in emergency only. */ -bool isVoiceEmergencyOnly(aidl::android::hardware::radio::network::RegState state); +bool isVoiceEmergencyOnly(RegState state); /* * Check if voice status is in service. */ -bool isVoiceInService(aidl::android::hardware::radio::network::RegState state); +bool isVoiceInService(RegState state); /* * Check if service is valid for device configuration @@ -115,26 +120,25 @@ bool isVoiceInService(aidl::android::hardware::radio::network::RegState state); bool isServiceValidForDeviceConfiguration(std::string& serviceName); /** - * Used when waiting for an asynchronous response from the HAL. + * RadioServiceTest base class */ -class RadioResponseWaiter { +class RadioServiceTest { protected: std::mutex mtx_; std::condition_variable cv_; - int count_; + std::shared_ptr radio_config; + std::shared_ptr radio_sim; public: - /* Serial number for radio request */ - int serial; - /* Used as a mechanism to inform the test about data/event callback */ void notify(int receivedSerial); /* Test code calls this function to wait for response */ std::cv_status wait(); - // TODO(b/210712359): this probably isn't the best place to put this, but it works for now - // since all RadioXTest extend RadioResponseWaiter - /* Used to get the radio HAL capabilities */ + /* Get the radio HAL capabilities */ bool getRadioHalCapabilities(); + + /* Update SIM card status */ + void updateSimCardStatus(); }; diff --git a/radio/aidl/vts/radio_config_indication.cpp b/radio/aidl/vts/radio_config_indication.cpp new file mode 100644 index 0000000000..a84c20b4b7 --- /dev/null +++ b/radio/aidl/vts/radio_config_indication.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "radio_config_utils.h" + +RadioConfigIndication::RadioConfigIndication(RadioServiceTest& parent) : parent_config(parent) {} + +ndk::ScopedAStatus RadioConfigIndication::simSlotsStatusChanged( + RadioIndicationType /*type*/, const std::vector& /*slotStatus*/) { + return ndk::ScopedAStatus::ok(); +} diff --git a/radio/aidl/vts/radio_config_response.cpp b/radio/aidl/vts/radio_config_response.cpp new file mode 100644 index 0000000000..1a152fb712 --- /dev/null +++ b/radio/aidl/vts/radio_config_response.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "radio_config_utils.h" + +RadioConfigResponse::RadioConfigResponse(RadioServiceTest& parent) : parent_config(parent) {} + +ndk::ScopedAStatus RadioConfigResponse::getSimSlotsStatusResponse( + const RadioResponseInfo& /* info */, const std::vector& /* slotStatus */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setSimSlotsMappingResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getPhoneCapabilityResponse( + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) { + rspInfo = info; + phoneCap = phoneCapability; + parent_config.notify(info.serial); + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setPreferredDataModemResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getNumOfLiveModemsResponse( + const RadioResponseInfo& /* info */, const int8_t /* numOfLiveModems */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::setNumOfLiveModemsResponse( + const RadioResponseInfo& /* info */) { + return ndk::ScopedAStatus::ok(); +} + +ndk::ScopedAStatus RadioConfigResponse::getHalDeviceCapabilitiesResponse( + const RadioResponseInfo& info, bool modemReducedFeatures) { + modemReducedFeatureSet1 = modemReducedFeatures; + parent_config.notify(info.serial); + return ndk::ScopedAStatus::ok(); +} diff --git a/radio/aidl/vts/radio_config_test.cpp b/radio/aidl/vts/radio_config_test.cpp new file mode 100644 index 0000000000..2d7fe01575 --- /dev/null +++ b/radio/aidl/vts/radio_config_test.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#include "radio_config_utils.h" + +#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk()) + +void RadioConfigTest::SetUp() { + std::string serviceName = GetParam(); + + if (!isServiceValidForDeviceConfiguration(serviceName)) { + ALOGI("Skipped the test due to device configuration."); + GTEST_SKIP(); + } + + radio_config = IRadioConfig::fromBinder( + ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(nullptr, radio_config.get()); + + radioRsp_config = ndk::SharedRefBase::make(*this); + ASSERT_NE(nullptr, radioRsp_config.get()); + + count_ = 0; + + radioInd_config = ndk::SharedRefBase::make(*this); + ASSERT_NE(nullptr, radioInd_config.get()); + + radio_config->setResponseFunctions(radioRsp_config, radioInd_config); +} + +/* + * Test IRadioConfig.getHalDeviceCapabilities() for the response returned. + */ +TEST_P(RadioConfigTest, getHalDeviceCapabilities) { + serial = GetRandomSerialNumber(); + ndk::ScopedAStatus res = radio_config->getHalDeviceCapabilities(serial); + ASSERT_OK(res); + ALOGI("getHalDeviceCapabilities, rspInfo.error = %s\n", + toString(radioRsp_config->rspInfo.error).c_str()); +} diff --git a/radio/aidl/vts/radio_config_utils.h b/radio/aidl/vts/radio_config_utils.h new file mode 100644 index 0000000000..465c10653b --- /dev/null +++ b/radio/aidl/vts/radio_config_utils.h @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include + +#include "radio_aidl_hal_utils.h" + +using namespace aidl::android::hardware::radio::config; + +class RadioConfigTest; + +/* Callback class for radio config response */ +class RadioConfigResponse : public BnRadioConfigResponse { + protected: + RadioServiceTest& parent_config; + + public: + RadioConfigResponse(RadioServiceTest& parent_config); + virtual ~RadioConfigResponse() = default; + + RadioResponseInfo rspInfo; + PhoneCapability phoneCap; + bool modemReducedFeatureSet1; + + virtual ndk::ScopedAStatus getSimSlotsStatusResponse( + const RadioResponseInfo& info, const std::vector& slotStatus) override; + + virtual ndk::ScopedAStatus setSimSlotsMappingResponse(const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getPhoneCapabilityResponse( + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) override; + + virtual ndk::ScopedAStatus setPreferredDataModemResponse( + const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getNumOfLiveModemsResponse(const RadioResponseInfo& info, + const int8_t numOfLiveModems) override; + + virtual ndk::ScopedAStatus setNumOfLiveModemsResponse(const RadioResponseInfo& info) override; + + virtual ndk::ScopedAStatus getHalDeviceCapabilitiesResponse( + const RadioResponseInfo& info, bool modemReducedFeatureSet1) override; +}; + +/* Callback class for radio config indication */ +class RadioConfigIndication : public BnRadioConfigIndication { + protected: + RadioServiceTest& parent_config; + + public: + RadioConfigIndication(RadioServiceTest& parent_config); + virtual ~RadioConfigIndication() = default; + + virtual ndk::ScopedAStatus simSlotsStatusChanged( + RadioIndicationType type, const std::vector& slotStatus) override; +}; + +// The main test class for Radio AIDL Config. +class RadioConfigTest : public ::testing::TestWithParam, public RadioServiceTest { + public: + virtual void SetUp() override; + ndk::ScopedAStatus updateSimCardStatus(); + + /* radio config service handle in RadioServiceTest */ + /* radio config response handle */ + std::shared_ptr radioRsp_config; + /* radio config indication handle */ + std::shared_ptr radioInd_config; +}; diff --git a/radio/aidl/vts/radio_data_indication.cpp b/radio/aidl/vts/radio_data_indication.cpp index 1e02fe1024..4d3c539d91 100644 --- a/radio/aidl/vts/radio_data_indication.cpp +++ b/radio/aidl/vts/radio_data_indication.cpp @@ -16,7 +16,7 @@ #include "radio_data_utils.h" -RadioDataIndication::RadioDataIndication(RadioDataTest& parent) : parent_data(parent) {} +RadioDataIndication::RadioDataIndication(RadioServiceTest& parent) : parent_data(parent) {} ndk::ScopedAStatus RadioDataIndication::dataCallListChanged( RadioIndicationType /*type*/, const std::vector& /*dcList*/) { diff --git a/radio/aidl/vts/radio_data_response.cpp b/radio/aidl/vts/radio_data_response.cpp index 682ddfbfee..9b17bfb380 100644 --- a/radio/aidl/vts/radio_data_response.cpp +++ b/radio/aidl/vts/radio_data_response.cpp @@ -16,7 +16,7 @@ #include "radio_data_utils.h" -RadioDataResponse::RadioDataResponse(RadioResponseWaiter& parent) : parent_data(parent) {} +RadioDataResponse::RadioDataResponse(RadioServiceTest& parent) : parent_data(parent) {} ndk::ScopedAStatus RadioDataResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_data_test.cpp b/radio/aidl/vts/radio_data_test.cpp index 87521cc057..8547e9d4db 100644 --- a/radio/aidl/vts/radio_data_test.cpp +++ b/radio/aidl/vts/radio_data_test.cpp @@ -46,12 +46,17 @@ void RadioDataTest::SetUp() { radio_data->setResponseFunctions(radioRsp_data, radioInd_data); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } ndk::ScopedAStatus RadioDataTest::getDataCallList() { diff --git a/radio/aidl/vts/radio_data_utils.h b/radio/aidl/vts/radio_data_utils.h index ada8ac1cc6..50c7878a2c 100644 --- a/radio/aidl/vts/radio_data_utils.h +++ b/radio/aidl/vts/radio_data_utils.h @@ -23,17 +23,16 @@ #include "radio_aidl_hal_utils.h" using namespace aidl::android::hardware::radio::data; -using aidl::android::hardware::radio::sim::CardStatus; class RadioDataTest; /* Callback class for radio data response */ class RadioDataResponse : public BnRadioDataResponse { protected: - RadioResponseWaiter& parent_data; + RadioServiceTest& parent_data; public: - RadioDataResponse(RadioResponseWaiter& parent_data); + RadioDataResponse(RadioServiceTest& parent_data); virtual ~RadioDataResponse() = default; RadioResponseInfo rspInfo; @@ -80,10 +79,10 @@ class RadioDataResponse : public BnRadioDataResponse { /* Callback class for radio data indication */ class RadioDataIndication : public BnRadioDataIndication { protected: - RadioDataTest& parent_data; + RadioServiceTest& parent_data; public: - RadioDataIndication(RadioDataTest& parent_data); + RadioDataIndication(RadioServiceTest& parent_data); virtual ~RadioDataIndication() = default; virtual ndk::ScopedAStatus dataCallListChanged( @@ -99,7 +98,7 @@ class RadioDataIndication : public BnRadioDataIndication { }; // The main test class for Radio AIDL Data. -class RadioDataTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioDataTest : public ::testing::TestWithParam, public RadioServiceTest { protected: /* Get current data call list */ ndk::ScopedAStatus getDataCallList(); diff --git a/radio/aidl/vts/radio_messaging_indication.cpp b/radio/aidl/vts/radio_messaging_indication.cpp index 7eeb266f4a..c69611f74d 100644 --- a/radio/aidl/vts/radio_messaging_indication.cpp +++ b/radio/aidl/vts/radio_messaging_indication.cpp @@ -16,7 +16,7 @@ #include "radio_messaging_utils.h" -RadioMessagingIndication::RadioMessagingIndication(RadioMessagingTest& parent) +RadioMessagingIndication::RadioMessagingIndication(RadioServiceTest& parent) : parent_messaging(parent) {} ndk::ScopedAStatus RadioMessagingIndication::cdmaNewSms(RadioIndicationType /*type*/, diff --git a/radio/aidl/vts/radio_messaging_response.cpp b/radio/aidl/vts/radio_messaging_response.cpp index d73278f152..718df7e60b 100644 --- a/radio/aidl/vts/radio_messaging_response.cpp +++ b/radio/aidl/vts/radio_messaging_response.cpp @@ -16,7 +16,7 @@ #include "radio_messaging_utils.h" -RadioMessagingResponse::RadioMessagingResponse(RadioResponseWaiter& parent) +RadioMessagingResponse::RadioMessagingResponse(RadioServiceTest& parent) : parent_messaging(parent) {} ndk::ScopedAStatus RadioMessagingResponse::acknowledgeIncomingGsmSmsWithPduResponse( diff --git a/radio/aidl/vts/radio_messaging_test.cpp b/radio/aidl/vts/radio_messaging_test.cpp index 58aeaab3f4..8abd91d709 100644 --- a/radio/aidl/vts/radio_messaging_test.cpp +++ b/radio/aidl/vts/radio_messaging_test.cpp @@ -44,12 +44,17 @@ void RadioMessagingTest::SetUp() { radio_messaging->setResponseFunctions(radioRsp_messaging, radioInd_messaging); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_messaging_utils.h b/radio/aidl/vts/radio_messaging_utils.h index 96cde088f3..7bb99cdcab 100644 --- a/radio/aidl/vts/radio_messaging_utils.h +++ b/radio/aidl/vts/radio_messaging_utils.h @@ -29,10 +29,10 @@ class RadioMessagingTest; /* Callback class for radio messaging response */ class RadioMessagingResponse : public BnRadioMessagingResponse { protected: - RadioResponseWaiter& parent_messaging; + RadioServiceTest& parent_messaging; public: - RadioMessagingResponse(RadioResponseWaiter& parent_messaging); + RadioMessagingResponse(RadioServiceTest& parent_messaging); virtual ~RadioMessagingResponse() = default; RadioResponseInfo rspInfo; @@ -110,10 +110,10 @@ class RadioMessagingResponse : public BnRadioMessagingResponse { /* Callback class for radio messaging indication */ class RadioMessagingIndication : public BnRadioMessagingIndication { protected: - RadioMessagingTest& parent_messaging; + RadioServiceTest& parent_messaging; public: - RadioMessagingIndication(RadioMessagingTest& parent_messaging); + RadioMessagingIndication(RadioServiceTest& parent_messaging); virtual ~RadioMessagingIndication() = default; virtual ndk::ScopedAStatus cdmaNewSms(RadioIndicationType type, @@ -139,8 +139,7 @@ class RadioMessagingIndication : public BnRadioMessagingIndication { }; // The main test class for Radio AIDL Messaging. -class RadioMessagingTest : public ::testing::TestWithParam, - public RadioResponseWaiter { +class RadioMessagingTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_modem_indication.cpp b/radio/aidl/vts/radio_modem_indication.cpp index 17f37a8dd5..0bfcd669c7 100644 --- a/radio/aidl/vts/radio_modem_indication.cpp +++ b/radio/aidl/vts/radio_modem_indication.cpp @@ -16,7 +16,7 @@ #include "radio_modem_utils.h" -RadioModemIndication::RadioModemIndication(RadioModemTest& parent) : parent_modem(parent) {} +RadioModemIndication::RadioModemIndication(RadioServiceTest& parent) : parent_modem(parent) {} ndk::ScopedAStatus RadioModemIndication::hardwareConfigChanged( RadioIndicationType /*type*/, const std::vector& /*configs*/) { diff --git a/radio/aidl/vts/radio_modem_response.cpp b/radio/aidl/vts/radio_modem_response.cpp index 7ac590f4db..53bfab40a9 100644 --- a/radio/aidl/vts/radio_modem_response.cpp +++ b/radio/aidl/vts/radio_modem_response.cpp @@ -16,7 +16,7 @@ #include "radio_modem_utils.h" -RadioModemResponse::RadioModemResponse(RadioResponseWaiter& parent) : parent_modem(parent) {} +RadioModemResponse::RadioModemResponse(RadioServiceTest& parent) : parent_modem(parent) {} ndk::ScopedAStatus RadioModemResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_modem_test.cpp b/radio/aidl/vts/radio_modem_test.cpp index 406927f5bc..b40bb7b573 100644 --- a/radio/aidl/vts/radio_modem_test.cpp +++ b/radio/aidl/vts/radio_modem_test.cpp @@ -44,12 +44,17 @@ void RadioModemTest::SetUp() { radio_modem->setResponseFunctions(radioRsp_modem, radioInd_modem); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_modem_utils.h b/radio/aidl/vts/radio_modem_utils.h index cd9a30d315..8779e0cbd2 100644 --- a/radio/aidl/vts/radio_modem_utils.h +++ b/radio/aidl/vts/radio_modem_utils.h @@ -22,7 +22,6 @@ #include "radio_aidl_hal_utils.h" -using namespace aidl::android::hardware::radio::config; using namespace aidl::android::hardware::radio::modem; class RadioModemTest; @@ -30,10 +29,10 @@ class RadioModemTest; /* Callback class for radio modem response */ class RadioModemResponse : public BnRadioModemResponse { protected: - RadioResponseWaiter& parent_modem; + RadioServiceTest& parent_modem; public: - RadioModemResponse(RadioResponseWaiter& parent_modem); + RadioModemResponse(RadioServiceTest& parent_modem); virtual ~RadioModemResponse() = default; RadioResponseInfo rspInfo; @@ -87,10 +86,10 @@ class RadioModemResponse : public BnRadioModemResponse { /* Callback class for radio modem indication */ class RadioModemIndication : public BnRadioModemIndication { protected: - RadioModemTest& parent_modem; + RadioServiceTest& parent_modem; public: - RadioModemIndication(RadioModemTest& parent_modem); + RadioModemIndication(RadioServiceTest& parent_modem); virtual ~RadioModemIndication() = default; virtual ndk::ScopedAStatus hardwareConfigChanged( @@ -109,7 +108,7 @@ class RadioModemIndication : public BnRadioModemIndication { }; // The main test class for Radio AIDL Modem. -class RadioModemTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioModemTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_network_indication.cpp b/radio/aidl/vts/radio_network_indication.cpp index 03caf3bbf5..7acbff4b2e 100644 --- a/radio/aidl/vts/radio_network_indication.cpp +++ b/radio/aidl/vts/radio_network_indication.cpp @@ -16,7 +16,7 @@ #include "radio_network_utils.h" -RadioNetworkIndication::RadioNetworkIndication(RadioNetworkTest& parent) : parent_network(parent) {} +RadioNetworkIndication::RadioNetworkIndication(RadioServiceTest& parent) : parent_network(parent) {} ndk::ScopedAStatus RadioNetworkIndication::barringInfoChanged( RadioIndicationType /*type*/, const CellIdentity& /*cellIdentity*/, diff --git a/radio/aidl/vts/radio_network_response.cpp b/radio/aidl/vts/radio_network_response.cpp index 839387bc78..9df1db4e44 100644 --- a/radio/aidl/vts/radio_network_response.cpp +++ b/radio/aidl/vts/radio_network_response.cpp @@ -16,7 +16,7 @@ #include "radio_network_utils.h" -RadioNetworkResponse::RadioNetworkResponse(RadioResponseWaiter& parent) : parent_network(parent) {} +RadioNetworkResponse::RadioNetworkResponse(RadioServiceTest& parent) : parent_network(parent) {} ndk::ScopedAStatus RadioNetworkResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); @@ -109,7 +109,7 @@ ndk::ScopedAStatus RadioNetworkResponse::getVoiceRadioTechnologyResponse( ndk::ScopedAStatus RadioNetworkResponse::getVoiceRegistrationStateResponse( const RadioResponseInfo& info, const RegStateResult& regResponse) { rspInfo = info; - regStateResp.regState = regResponse.regState; + voiceRegResp.regState = regResponse.regState; parent_network.notify(info.serial); return ndk::ScopedAStatus::ok(); } diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp index 54e0c0d39c..64d8eec97b 100644 --- a/radio/aidl/vts/radio_network_test.cpp +++ b/radio/aidl/vts/radio_network_test.cpp @@ -45,12 +45,17 @@ void RadioNetworkTest::SetUp() { radio_network->setResponseFunctions(radioRsp_network, radioInd_network); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } /* diff --git a/radio/aidl/vts/radio_network_utils.h b/radio/aidl/vts/radio_network_utils.h index 70d45da8c2..c26d7c3f1c 100644 --- a/radio/aidl/vts/radio_network_utils.h +++ b/radio/aidl/vts/radio_network_utils.h @@ -29,10 +29,10 @@ class RadioNetworkTest; /* Callback class for radio network response */ class RadioNetworkResponse : public BnRadioNetworkResponse { protected: - RadioResponseWaiter& parent_network; + RadioServiceTest& parent_network; public: - RadioNetworkResponse(RadioResponseWaiter& parent_network); + RadioNetworkResponse(RadioServiceTest& parent_network); virtual ~RadioNetworkResponse() = default; RadioResponseInfo rspInfo; @@ -40,7 +40,7 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { std::vector networkInfos; bool isNrDualConnectivityEnabled; int networkTypeBitmapResponse; - RegStateResult regStateResp; + RegStateResult voiceRegResp; CellIdentity barringCellIdentity; std::vector barringInfos; @@ -149,10 +149,10 @@ class RadioNetworkResponse : public BnRadioNetworkResponse { /* Callback class for radio network indication */ class RadioNetworkIndication : public BnRadioNetworkIndication { protected: - RadioNetworkTest& parent_network; + RadioServiceTest& parent_network; public: - RadioNetworkIndication(RadioNetworkTest& parent_network); + RadioNetworkIndication(RadioServiceTest& parent_network); virtual ~RadioNetworkIndication() = default; virtual ndk::ScopedAStatus barringInfoChanged( @@ -201,7 +201,7 @@ class RadioNetworkIndication : public BnRadioNetworkIndication { }; // The main test class for Radio AIDL Network. -class RadioNetworkTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioNetworkTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; diff --git a/radio/aidl/vts/radio_sim_indication.cpp b/radio/aidl/vts/radio_sim_indication.cpp index 03858458b1..c03d947828 100644 --- a/radio/aidl/vts/radio_sim_indication.cpp +++ b/radio/aidl/vts/radio_sim_indication.cpp @@ -16,7 +16,7 @@ #include "radio_sim_utils.h" -RadioSimIndication::RadioSimIndication(RadioSimTest& parent) : parent_sim(parent) {} +RadioSimIndication::RadioSimIndication(RadioServiceTest& parent) : parent_sim(parent) {} ndk::ScopedAStatus RadioSimIndication::carrierInfoForImsiEncryption(RadioIndicationType /*info*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_sim_response.cpp b/radio/aidl/vts/radio_sim_response.cpp index 2c796faa12..a783f43e0a 100644 --- a/radio/aidl/vts/radio_sim_response.cpp +++ b/radio/aidl/vts/radio_sim_response.cpp @@ -16,7 +16,7 @@ #include "radio_sim_utils.h" -RadioSimResponse::RadioSimResponse(RadioResponseWaiter& parent) : parent_sim(parent) {} +RadioSimResponse::RadioSimResponse(RadioServiceTest& parent) : parent_sim(parent) {} ndk::ScopedAStatus RadioSimResponse::acknowledgeRequest(int32_t /*serial*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_sim_test.cpp b/radio/aidl/vts/radio_sim_test.cpp index c70219ff94..5db77f6600 100644 --- a/radio/aidl/vts/radio_sim_test.cpp +++ b/radio/aidl/vts/radio_sim_test.cpp @@ -43,20 +43,23 @@ void RadioSimTest::SetUp() { ASSERT_NE(nullptr, radioInd_sim.get()); radio_sim->setResponseFunctions(radioRsp_sim, radioInd_sim); + // Assert SIM is present before testing + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); } -ndk::ScopedAStatus RadioSimTest::updateSimCardStatus() { +void RadioSimTest::updateSimCardStatus() { serial = GetRandomSerialNumber(); radio_sim->getIccCardStatus(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - return ndk::ScopedAStatus::ok(); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_sim->rspInfo.type); + EXPECT_EQ(serial, radioRsp_sim->rspInfo.serial); + EXPECT_EQ(RadioError::NONE, radioRsp_sim->rspInfo.error); } /* diff --git a/radio/aidl/vts/radio_sim_utils.h b/radio/aidl/vts/radio_sim_utils.h index 6cb6790453..b5e365d436 100644 --- a/radio/aidl/vts/radio_sim_utils.h +++ b/radio/aidl/vts/radio_sim_utils.h @@ -29,10 +29,10 @@ class RadioSimTest; /* Callback class for radio SIM response */ class RadioSimResponse : public BnRadioSimResponse { protected: - RadioResponseWaiter& parent_sim; + RadioServiceTest& parent_sim; public: - RadioSimResponse(RadioResponseWaiter& parent_sim); + RadioSimResponse(RadioServiceTest& parent_sim); virtual ~RadioSimResponse() = default; RadioResponseInfo rspInfo; @@ -152,10 +152,10 @@ class RadioSimResponse : public BnRadioSimResponse { /* Callback class for radio SIM indication */ class RadioSimIndication : public BnRadioSimIndication { protected: - RadioSimTest& parent_sim; + RadioServiceTest& parent_sim; public: - RadioSimIndication(RadioSimTest& parent_sim); + RadioSimIndication(RadioServiceTest& parent_sim); virtual ~RadioSimIndication() = default; virtual ndk::ScopedAStatus carrierInfoForImsiEncryption(RadioIndicationType info) override; @@ -190,16 +190,14 @@ class RadioSimIndication : public BnRadioSimIndication { }; // The main test class for Radio AIDL SIM. -class RadioSimTest : public ::testing::TestWithParam, public RadioResponseWaiter { - protected: - /* Update Sim Card Status */ - virtual ndk::ScopedAStatus updateSimCardStatus(); - +class RadioSimTest : public ::testing::TestWithParam, public RadioServiceTest { public: virtual void SetUp() override; - /* radio SIM service handle */ - std::shared_ptr radio_sim; + /* Override updateSimCardStatus in RadioServiceTest to not call setResponseFunctions */ + void updateSimCardStatus(); + + /* radio SIM service handle in RadioServiceTest */ /* radio SIM response handle */ std::shared_ptr radioRsp_sim; /* radio SIM indication handle */ diff --git a/radio/aidl/vts/radio_voice_indication.cpp b/radio/aidl/vts/radio_voice_indication.cpp index 2c468174e8..d814c1857e 100644 --- a/radio/aidl/vts/radio_voice_indication.cpp +++ b/radio/aidl/vts/radio_voice_indication.cpp @@ -16,7 +16,7 @@ #include "radio_voice_utils.h" -RadioVoiceIndication::RadioVoiceIndication(RadioVoiceTest& parent) : parent_voice(parent) {} +RadioVoiceIndication::RadioVoiceIndication(RadioServiceTest& parent) : parent_voice(parent) {} ndk::ScopedAStatus RadioVoiceIndication::callRing(RadioIndicationType /*type*/, bool /*isGsm*/, const CdmaSignalInfoRecord& /*record*/) { diff --git a/radio/aidl/vts/radio_voice_response.cpp b/radio/aidl/vts/radio_voice_response.cpp index ca350c6660..a491613b60 100644 --- a/radio/aidl/vts/radio_voice_response.cpp +++ b/radio/aidl/vts/radio_voice_response.cpp @@ -16,7 +16,7 @@ #include "radio_voice_utils.h" -RadioVoiceResponse::RadioVoiceResponse(RadioResponseWaiter& parent) : parent_voice(parent) {} +RadioVoiceResponse::RadioVoiceResponse(RadioServiceTest& parent) : parent_voice(parent) {} ndk::ScopedAStatus RadioVoiceResponse::acceptCallResponse(const RadioResponseInfo& /*info*/) { return ndk::ScopedAStatus::ok(); diff --git a/radio/aidl/vts/radio_voice_test.cpp b/radio/aidl/vts/radio_voice_test.cpp index 7a0bedd3ee..717f3f0be9 100644 --- a/radio/aidl/vts/radio_voice_test.cpp +++ b/radio/aidl/vts/radio_voice_test.cpp @@ -45,12 +45,26 @@ void RadioVoiceTest::SetUp() { radio_voice->setResponseFunctions(radioRsp_voice, radioInd_voice); + // Assert IRadioSim exists and SIM is present before testing + radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1"))); + ASSERT_NE(nullptr, radio_sim.get()); + updateSimCardStatus(); + EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState); + // Assert IRadioConfig exists before testing - std::shared_ptr radioConfig = - aidl::android::hardware::radio::config::IRadioConfig::fromBinder( - ndk::SpAIBinder(AServiceManager_waitForService( - "android.hardware.radio.config.IRadioConfig/default"))); - ASSERT_NE(nullptr, radioConfig.get()); + radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default"))); + ASSERT_NE(nullptr, radio_config.get()); + + if (isDsDsEnabled() || isTsTsEnabled()) { + radio_network = IRadioNetwork::fromBinder(ndk::SpAIBinder(AServiceManager_waitForService( + "android.hardware.radio.network.IRadioNetwork/slot1"))); + ASSERT_NE(nullptr, radio_network.get()); + radioRsp_network = ndk::SharedRefBase::make(*this); + radioInd_network = ndk::SharedRefBase::make(*this); + radio_network->setResponseFunctions(radioRsp_network, radioInd_network); + } } ndk::ScopedAStatus RadioVoiceTest::clearPotentialEstablishedCalls() { @@ -113,16 +127,13 @@ TEST_P(RadioVoiceTest, emergencyDial) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } @@ -171,16 +182,13 @@ TEST_P(RadioVoiceTest, emergencyDial_withServices) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState_1_6(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } @@ -228,16 +236,13 @@ TEST_P(RadioVoiceTest, emergencyDial_withEmergencyRouting) { // In DSDS or TSTS, we only check the result if the current slot is IN_SERVICE // or Emergency_Only. if (isDsDsEnabled() || isTsTsEnabled()) { - // TODO(b/210712359): maybe create a local RadioNetwork instance - /** serial = GetRandomSerialNumber(); - radio_v1_6->getVoiceRegistrationState_1_6(serial); + radio_network->getVoiceRegistrationState(serial); EXPECT_EQ(std::cv_status::no_timeout, wait()); - if (isVoiceEmergencyOnly(radioRsp_v1_6->voiceRegResp.regState) || - isVoiceInService(radioRsp_v1_6->voiceRegResp.regState)) { + if (isVoiceEmergencyOnly(radioRsp_network->voiceRegResp.regState) || + isVoiceInService(radioRsp_network->voiceRegResp.regState)) { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } - **/ } else { EXPECT_EQ(RadioError::NONE, rspEmergencyDial); } diff --git a/radio/aidl/vts/radio_voice_utils.h b/radio/aidl/vts/radio_voice_utils.h index a676a7fcbb..d61bf1eee8 100644 --- a/radio/aidl/vts/radio_voice_utils.h +++ b/radio/aidl/vts/radio_voice_utils.h @@ -21,6 +21,7 @@ #include #include "radio_aidl_hal_utils.h" +#include "radio_network_utils.h" using namespace aidl::android::hardware::radio::voice; @@ -29,10 +30,10 @@ class RadioVoiceTest; /* Callback class for radio voice response */ class RadioVoiceResponse : public BnRadioVoiceResponse { protected: - RadioResponseWaiter& parent_voice; + RadioServiceTest& parent_voice; public: - RadioVoiceResponse(RadioResponseWaiter& parent_voice); + RadioVoiceResponse(RadioServiceTest& parent_voice); virtual ~RadioVoiceResponse() = default; RadioResponseInfo rspInfo; @@ -130,10 +131,10 @@ class RadioVoiceResponse : public BnRadioVoiceResponse { /* Callback class for radio voice indication */ class RadioVoiceIndication : public BnRadioVoiceIndication { protected: - RadioVoiceTest& parent_voice; + RadioServiceTest& parent_voice; public: - RadioVoiceIndication(RadioVoiceTest& parent_voice); + RadioVoiceIndication(RadioServiceTest& parent_voice); virtual ~RadioVoiceIndication() = default; virtual ndk::ScopedAStatus callRing(RadioIndicationType type, bool isGsm, @@ -175,10 +176,13 @@ class RadioVoiceIndication : public BnRadioVoiceIndication { }; // The main test class for Radio AIDL Voice. -class RadioVoiceTest : public ::testing::TestWithParam, public RadioResponseWaiter { +class RadioVoiceTest : public ::testing::TestWithParam, public RadioServiceTest { protected: /* Clear Potential Established Calls */ virtual ndk::ScopedAStatus clearPotentialEstablishedCalls(); + std::shared_ptr radio_network; + std::shared_ptr radioRsp_network; + std::shared_ptr radioInd_network; public: virtual void SetUp() override;