diff --git a/radio/1.0/vts/functional/Android.bp b/radio/1.0/vts/functional/Android.bp new file mode 100644 index 0000000000..a01e270dbb --- /dev/null +++ b/radio/1.0/vts/functional/Android.bp @@ -0,0 +1,40 @@ +// +// Copyright (C) 2017 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. +// + +cc_test { + name: "radio_hidl_hal_test", + gtest: true, + srcs: ["radio_hidl_hal_test.cpp", + "radio_response.cpp", + "radio_hidl_hal_icc.cpp", + "radio_hidl_hal_main.cpp"], + shared_libs: [ + "libbase", + "liblog", + "libcutils", + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libnativehelper", + "libutils", + "android.hardware.radio@1.0", + ], + static_libs: ["libgtest"], + cflags: [ + "-O0", + "-g", + ], +} \ No newline at end of file diff --git a/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp new file mode 100644 index 0000000000..9b540e8ace --- /dev/null +++ b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2017 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 + +/* + * Test IRadio.getIccCardStatus() for the response returned. + */ +TEST_F(RadioHidlTest, getIccCardStatus) { + radio->getIccCardStatus(1); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(1, radioRsp->rspInfo.serial); + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE); + + EXPECT_LE(radioRsp->cardStatus.applications.size(), (unsigned int) RadioConst::CARD_MAX_APPS); + EXPECT_LT(radioRsp->cardStatus.gsmUmtsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS); + EXPECT_LT(radioRsp->cardStatus.cdmaSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS); + EXPECT_LT(radioRsp->cardStatus.imsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS); +} + +/* + * Test IRadio.supplyIccPinForApp() for the response returned. + */ +TEST_F(RadioHidlTest, supplyIccPinForApp) { + radio->supplyIccPinForApp(2, hidl_string("test1"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(2, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} + +/* + * Test IRadio.supplyIccPukForApp() for the response returned. + */ +TEST_F(RadioHidlTest, supplyIccPukForApp) { + radio->supplyIccPukForApp(3, hidl_string("test1"), hidl_string("test2"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(3, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} + +/* + * Test IRadio.supplyIccPin2ForApp() for the response returned. + */ +TEST_F(RadioHidlTest, supplyIccPin2ForApp) { + radio->supplyIccPin2ForApp(4, hidl_string("test1"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(4, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} + +/* + * Test IRadio.supplyIccPuk2ForApp() for the response returned. + */ +TEST_F(RadioHidlTest, supplyIccPuk2ForApp) { + radio->supplyIccPuk2ForApp(5, hidl_string("test1"), hidl_string("test2"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(5, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} + +/* + * Test IRadio.changeIccPinForApp() for the response returned. + */ +TEST_F(RadioHidlTest, changeIccPinForApp) { + radio->changeIccPinForApp(6, hidl_string("test1"), hidl_string("test2"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(6, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} + +/* + * Test IRadio.changeIccPin2ForApp() for the response returned. + */ +TEST_F(RadioHidlTest, changeIccPin2ForApp) { + radio->changeIccPin2ForApp(7, hidl_string("test1"), hidl_string("test2"), hidl_string()); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); + EXPECT_EQ(7, radioRsp->rspInfo.serial); + + EXPECT_EQ(radioRsp->rspInfo.error, RadioError::PASSWORD_INCORRECT); +} diff --git a/radio/1.0/vts/functional/radio_hidl_hal_main.cpp b/radio/1.0/vts/functional/radio_hidl_hal_main.cpp new file mode 100644 index 0000000000..d01adf2a23 --- /dev/null +++ b/radio/1.0/vts/functional/radio_hidl_hal_main.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2017 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 + +int main(int argc, char** argv) { + ::testing::AddGlobalTestEnvironment(new RadioHidlEnvironment); + ::testing::InitGoogleTest(&argc, argv); + + int status = RUN_ALL_TESTS(); + LOG(INFO) << "Test result = " << status; + + return status; +} \ No newline at end of file diff --git a/radio/1.0/vts/functional/radio_hidl_hal_test.cpp b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp new file mode 100644 index 0000000000..2a67954ff6 --- /dev/null +++ b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2017 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 + +void RadioHidlTest::SetUp() { + radio = IRadio::getService(hidl_string("rild")); + ASSERT_NE(radio, nullptr); + + radioRsp = new RadioResponse(*this); + ASSERT_NE(radioRsp, nullptr); + + count = 0; + + radioInd = NULL; + radio->setResponseFunctions(radioRsp, radioInd); +} + +void RadioHidlTest::TearDown() { +} + +void RadioHidlTest::notify() { + std::unique_lock lock(mtx); + count++; + cv.notify_one(); +} + +std::cv_status RadioHidlTest::wait() { + std::unique_lock lock(mtx); + + std::cv_status status = std::cv_status::no_timeout; + auto now = std::chrono::system_clock::now(); + while (count == 0) { + status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); + if (status == std::cv_status::timeout) { + return status; + } + } + count--; + return status; +} + diff --git a/radio/1.0/vts/functional/radio_hidl_hal_utils.h b/radio/1.0/vts/functional/radio_hidl_hal_utils.h new file mode 100644 index 0000000000..f0c4504bbc --- /dev/null +++ b/radio/1.0/vts/functional/radio_hidl_hal_utils.h @@ -0,0 +1,451 @@ +/* + * Copyright (C) 2017 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 +#include +#include + +#include +#include +#include +#include + +using ::android::hardware::radio::V1_0::ActivityStatsInfo; +using ::android::hardware::radio::V1_0::CardStatus; +using ::android::hardware::radio::V1_0::Call; +using ::android::hardware::radio::V1_0::CallForwardInfo; +using ::android::hardware::radio::V1_0::CarrierRestrictions; +using ::android::hardware::radio::V1_0::CdmaRoamingType; +using ::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo; +using ::android::hardware::radio::V1_0::CdmaSubscriptionSource; +using ::android::hardware::radio::V1_0::CellInfo; +using ::android::hardware::radio::V1_0::ClipStatus; +using ::android::hardware::radio::V1_0::DataRegStateResult; +using ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo; +using ::android::hardware::radio::V1_0::HardwareConfig; +using ::android::hardware::radio::V1_0::IccIoResult; +using ::android::hardware::radio::V1_0::IRadio; +using ::android::hardware::radio::V1_0::IRadioResponse; +using ::android::hardware::radio::V1_0::IRadioIndication; +using ::android::hardware::radio::V1_0::RadioConst; +using ::android::hardware::radio::V1_0::RadioError; +using ::android::hardware::radio::V1_0::RadioResponseInfo; +using ::android::hardware::radio::V1_0::LastCallFailCauseInfo; +using ::android::hardware::radio::V1_0::LceDataInfo; +using ::android::hardware::radio::V1_0::LceStatusInfo; +using ::android::hardware::radio::V1_0::NeighboringCell; +using ::android::hardware::radio::V1_0::OperatorInfo; +using ::android::hardware::radio::V1_0::PreferredNetworkType; +using ::android::hardware::radio::V1_0::RadioBandMode; +using ::android::hardware::radio::V1_0::RadioCapability; +using ::android::hardware::radio::V1_0::RadioResponseType; +using ::android::hardware::radio::V1_0::RadioTechnology; +using ::android::hardware::radio::V1_0::RadioTechnologyFamily; +using ::android::hardware::radio::V1_0::SendSmsResult; +using ::android::hardware::radio::V1_0::SetupDataCallResult; +using ::android::hardware::radio::V1_0::SignalStrength; +using ::android::hardware::radio::V1_0::TtyMode; +using ::android::hardware::radio::V1_0::VoiceRegStateResult; + +using ::android::hardware::hidl_string; +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::sp; + +#define TIMEOUT_PERIOD 20 + +class RadioHidlTest; + +/* Callback class for radio response */ +class RadioResponse : public IRadioResponse { +private: + RadioHidlTest& parent; + +public: + RadioResponseInfo rspInfo; + CardStatus cardStatus; + + RadioResponse(RadioHidlTest& parent); + + virtual ~RadioResponse() = default; + + Return getIccCardStatusResponse(const RadioResponseInfo& info, + const CardStatus& cardStatus); + + Return supplyIccPinForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return supplyIccPukForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return supplyIccPin2ForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return supplyIccPuk2ForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return changeIccPinForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return changeIccPin2ForAppResponse(const RadioResponseInfo& info, + int32_t remainingRetries); + + Return supplyNetworkDepersonalizationResponse( + const RadioResponseInfo& info, int32_t remainingRetries); + + Return getCurrentCallsResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& calls); + + Return dialResponse(const RadioResponseInfo& info); + + Return getIMSIForAppResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& imsi); + + Return hangupConnectionResponse(const RadioResponseInfo& info); + + Return hangupWaitingOrBackgroundResponse( + const RadioResponseInfo& info); + + Return hangupForegroundResumeBackgroundResponse( + const RadioResponseInfo& info); + + Return switchWaitingOrHoldingAndActiveResponse( + const RadioResponseInfo& info); + + Return conferenceResponse(const RadioResponseInfo& info); + + Return rejectCallResponse(const RadioResponseInfo& info); + + Return getLastCallFailCauseResponse(const RadioResponseInfo& info, + const LastCallFailCauseInfo& failCauseInfo); + + Return getSignalStrengthResponse(const RadioResponseInfo& info, + const SignalStrength& sigStrength); + + Return getVoiceRegistrationStateResponse(const RadioResponseInfo& info, + const VoiceRegStateResult& voiceRegResponse); + + Return getDataRegistrationStateResponse(const RadioResponseInfo& info, + const DataRegStateResult& dataRegResponse); + + Return getOperatorResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& longName, + const ::android::hardware::hidl_string& shortName, + const ::android::hardware::hidl_string& numeric); + + Return setRadioPowerResponse(const RadioResponseInfo& info); + + Return sendDtmfResponse(const RadioResponseInfo& info); + + Return sendSmsResponse(const RadioResponseInfo& info, + const SendSmsResult& sms); + + Return sendSMSExpectMoreResponse(const RadioResponseInfo& info, + const SendSmsResult& sms); + + Return setupDataCallResponse(const RadioResponseInfo& info, + const SetupDataCallResult& dcResponse); + + Return iccIOForAppResponse(const RadioResponseInfo& info, + const IccIoResult& iccIo); + + Return sendUssdResponse(const RadioResponseInfo& info); + + Return cancelPendingUssdResponse(const RadioResponseInfo& info); + + Return getClirResponse(const RadioResponseInfo& info, int32_t n, int32_t m); + + Return setClirResponse(const RadioResponseInfo& info); + + Return getCallForwardStatusResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& call_forwardInfos); + + Return setCallForwardResponse(const RadioResponseInfo& info); + + Return getCallWaitingResponse(const RadioResponseInfo& info, + bool enable, int32_t serviceClass); + + Return setCallWaitingResponse(const RadioResponseInfo& info); + + Return acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& info); + + Return acceptCallResponse(const RadioResponseInfo& info); + + Return deactivateDataCallResponse(const RadioResponseInfo& info); + + Return getFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t response); + + Return setFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t retry); + + Return setBarringPasswordResponse(const RadioResponseInfo& info); + + Return getNetworkSelectionModeResponse(const RadioResponseInfo& info,bool manual); + + Return setNetworkSelectionModeAutomaticResponse(const RadioResponseInfo& info); + + Return setNetworkSelectionModeManualResponse(const RadioResponseInfo& info); + + Return getAvailableNetworksResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& networkInfos); + + Return startDtmfResponse(const RadioResponseInfo& info); + + Return stopDtmfResponse(const RadioResponseInfo& info); + + Return getBasebandVersionResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& version); + + Return separateConnectionResponse(const RadioResponseInfo& info); + + Return setMuteResponse(const RadioResponseInfo& info); + + Return getMuteResponse(const RadioResponseInfo& info, bool enable); + + Return getClipResponse(const RadioResponseInfo& info,ClipStatus status); + + Return getDataCallListResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& dcResponse); + + Return sendOemRilRequestRawResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& data); + + Return sendOemRilRequestStringsResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& data); + + Return sendScreenStateResponse(const RadioResponseInfo& info); + + Return setSuppServiceNotificationsResponse( + const RadioResponseInfo& info); + + Return writeSmsToSimResponse(const RadioResponseInfo& info,int32_t index); + + Return deleteSmsOnSimResponse(const RadioResponseInfo& info); + + Return setBandModeResponse(const RadioResponseInfo& info); + + Return getAvailableBandModesResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& bandModes); + + Return sendEnvelopeResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& commandResponse); + + Return sendTerminalResponseToSimResponse(const RadioResponseInfo& info); + + Return handleStkCallSetupRequestFromSimResponse( + const RadioResponseInfo& info); + + Return explicitCallTransferResponse(const RadioResponseInfo& info); + + Return setPreferredNetworkTypeResponse(const RadioResponseInfo& info); + + Return getPreferredNetworkTypeResponse(const RadioResponseInfo& info, + PreferredNetworkType nwType); + + Return getNeighboringCidsResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& cells); + + Return setLocationUpdatesResponse(const RadioResponseInfo& info); + + Return setCdmaSubscriptionSourceResponse(const RadioResponseInfo& info); + + Return setCdmaRoamingPreferenceResponse(const RadioResponseInfo& info); + + Return getCdmaRoamingPreferenceResponse(const RadioResponseInfo& info, + CdmaRoamingType type); + + Return setTTYModeResponse(const RadioResponseInfo& info); + + Return getTTYModeResponse(const RadioResponseInfo& info, TtyMode mode); + + Return setPreferredVoicePrivacyResponse(const RadioResponseInfo& info); + + Return getPreferredVoicePrivacyResponse(const RadioResponseInfo& info, bool enable); + + Return sendCDMAFeatureCodeResponse(const RadioResponseInfo& info); + + Return sendBurstDtmfResponse(const RadioResponseInfo& info); + + Return sendCdmaSmsResponse(const RadioResponseInfo& info, const SendSmsResult& sms); + + Return acknowledgeLastIncomingCdmaSmsResponse(const RadioResponseInfo& info); + + Return getGsmBroadcastConfigResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& configs); + + Return setGsmBroadcastConfigResponse(const RadioResponseInfo& info); + + Return setGsmBroadcastActivationResponse(const RadioResponseInfo& info); + + Return getCdmaBroadcastConfigResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& configs); + + Return setCdmaBroadcastConfigResponse(const RadioResponseInfo& info); + + Return setCdmaBroadcastActivationResponse(const RadioResponseInfo& info); + + Return getCDMASubscriptionResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& mdn, + const ::android::hardware::hidl_string& hSid, + const ::android::hardware::hidl_string& hNid, + const ::android::hardware::hidl_string& min, + const ::android::hardware::hidl_string& prl); + + Return writeSmsToRuimResponse(const RadioResponseInfo& info, uint32_t index); + + Return deleteSmsOnRuimResponse(const RadioResponseInfo& info); + + Return getDeviceIdentityResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& imei, + const ::android::hardware::hidl_string& imeisv, + const ::android::hardware::hidl_string& esn, + const ::android::hardware::hidl_string& meid); + + Return exitEmergencyCallbackModeResponse(const RadioResponseInfo& info); + + Return getSmscAddressResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& smsc); + + Return setSmscAddressResponse(const RadioResponseInfo& info); + + Return reportSmsMemoryStatusResponse(const RadioResponseInfo& info); + + Return reportStkServiceIsRunningResponse(const RadioResponseInfo& info); + + Return getCdmaSubscriptionSourceResponse(const RadioResponseInfo& info, + CdmaSubscriptionSource source); + + Return requestIsimAuthenticationResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& response); + + Return acknowledgeIncomingGsmSmsWithPduResponse( + const RadioResponseInfo& info); + + Return sendEnvelopeWithStatusResponse(const RadioResponseInfo& info, + const IccIoResult& iccIo); + + Return getVoiceRadioTechnologyResponse(const RadioResponseInfo& info, + RadioTechnology rat); + + Return getCellInfoListResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& cellInfo); + + Return setCellInfoListRateResponse(const RadioResponseInfo& info); + + Return setInitialAttachApnResponse(const RadioResponseInfo& info); + + Return getImsRegistrationStateResponse(const RadioResponseInfo& info, + bool isRegistered, RadioTechnologyFamily ratFamily); + + Return sendImsSmsResponse(const RadioResponseInfo& info, + const SendSmsResult& sms); + + Return iccTransmitApduBasicChannelResponse( + const RadioResponseInfo& info, const IccIoResult& result); + + Return iccOpenLogicalChannelResponse(const RadioResponseInfo& info, + int32_t channelId, const ::android::hardware::hidl_vec& selectResponse); + + Return iccCloseLogicalChannelResponse(const RadioResponseInfo& info); + + Return iccTransmitApduLogicalChannelResponse( + const RadioResponseInfo& info, const IccIoResult& result); + + Return nvReadItemResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& result); + + Return nvWriteItemResponse(const RadioResponseInfo& info); + + Return nvWriteCdmaPrlResponse(const RadioResponseInfo& info); + + Return nvResetConfigResponse(const RadioResponseInfo& info); + + Return setUiccSubscriptionResponse(const RadioResponseInfo& info); + + Return setDataAllowedResponse(const RadioResponseInfo& info); + + Return getHardwareConfigResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& config); + + Return requestIccSimAuthenticationResponse( + const RadioResponseInfo& info, const IccIoResult& result); + + Return setDataProfileResponse(const RadioResponseInfo& info); + + Return requestShutdownResponse(const RadioResponseInfo& info); + + Return getRadioCapabilityResponse(const RadioResponseInfo& info, + const RadioCapability& rc); + + Return setRadioCapabilityResponse(const RadioResponseInfo& info, + const RadioCapability& rc); + + Return startLceServiceResponse(const RadioResponseInfo& info, + const LceStatusInfo& statusInfo); + + Return stopLceServiceResponse(const RadioResponseInfo& info, + const LceStatusInfo& statusInfo); + + Return pullLceDataResponse(const RadioResponseInfo& info, + const LceDataInfo& lceInfo); + + Return getModemActivityInfoResponse(const RadioResponseInfo& info, + const ActivityStatsInfo& activityInfo); + + Return setAllowedCarriersResponse(const RadioResponseInfo& info, + int32_t numAllowed); + + Return getAllowedCarriersResponse(const RadioResponseInfo& info, + bool allAllowed, const CarrierRestrictions& carriers); + + Return sendDeviceStateResponse(const RadioResponseInfo& info); + + Return setIndicationFilterResponse(const RadioResponseInfo& info); + + Return acknowledgeRequest(int32_t serial); +}; + +// The main test class for Radio HIDL. +class RadioHidlTest : public ::testing::Test { +private: + std::mutex mtx; + std::condition_variable cv; + int count; + +public: + virtual void SetUp() override; + + virtual void TearDown() override; + + /* Used as a mechanism to inform the test about data/event callback */ + void notify(); + + /* Test code calls this function to wait for response */ + std::cv_status wait(); + + sp radio; + sp radioRsp; + sp radioInd; +}; + +// A class for test environment setup +class RadioHidlEnvironment : public ::testing::Environment { +public: + virtual void SetUp() {} + virtual void TearDown() {} +}; diff --git a/radio/1.0/vts/functional/radio_response.cpp b/radio/1.0/vts/functional/radio_response.cpp new file mode 100644 index 0000000000..18a02ed62a --- /dev/null +++ b/radio/1.0/vts/functional/radio_response.cpp @@ -0,0 +1,660 @@ +/* + * Copyright (C) 2017 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 + +RadioResponse::RadioResponse(RadioHidlTest& parent) : parent(parent) { +} + +Return RadioResponse::getIccCardStatusResponse( + const RadioResponseInfo& info, const CardStatus& card_status) { + rspInfo = info; + cardStatus = card_status; + parent.notify(); + return Void(); +} + +Return RadioResponse::supplyIccPinForAppResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::supplyIccPukForAppResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::supplyIccPin2ForAppResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::supplyIccPuk2ForAppResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::changeIccPinForAppResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::changeIccPin2ForAppResponse( + const RadioResponseInfo& info, int32_t remaining_retries) { + rspInfo = info; + parent.notify(); + return Void(); +} + +Return RadioResponse::supplyNetworkDepersonalizationResponse( + const RadioResponseInfo& info, int32_t remainingRetries) { + return Void(); +} + +Return RadioResponse::getCurrentCallsResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_vec& calls) { + return Void(); +} + +Return RadioResponse::dialResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getIMSIForAppResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& imsi) { + return Void(); +} + +Return RadioResponse::hangupConnectionResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::hangupWaitingOrBackgroundResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::hangupForegroundResumeBackgroundResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::switchWaitingOrHoldingAndActiveResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::conferenceResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::rejectCallResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getLastCallFailCauseResponse( + const RadioResponseInfo& info, const LastCallFailCauseInfo& failCauseInfo) { + return Void(); +} + +Return RadioResponse::getSignalStrengthResponse( + const RadioResponseInfo& info, const SignalStrength& sig_strength) { + return Void(); +} + +Return RadioResponse::getVoiceRegistrationStateResponse( + const RadioResponseInfo& info, const VoiceRegStateResult& voiceRegResponse) { + return Void(); +} + +Return RadioResponse::getDataRegistrationStateResponse( + const RadioResponseInfo& info, const DataRegStateResult& dataRegResponse) { + return Void(); +} + +Return RadioResponse::getOperatorResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& longName, + const ::android::hardware::hidl_string& shortName, + const ::android::hardware::hidl_string& numeric) { + return Void(); +} + +Return RadioResponse::setRadioPowerResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::sendDtmfResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::sendSmsResponse(const RadioResponseInfo& info, + const SendSmsResult& sms) { + return Void(); +} + +Return RadioResponse::sendSMSExpectMoreResponse( + const RadioResponseInfo& info, const SendSmsResult& sms) { + return Void(); +} + +Return RadioResponse::setupDataCallResponse( + const RadioResponseInfo& info, const SetupDataCallResult& dcResponse) { + return Void(); +} + +Return RadioResponse::iccIOForAppResponse( + const RadioResponseInfo& info, const IccIoResult& iccIo) { + return Void(); +} + +Return RadioResponse::sendUssdResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::cancelPendingUssdResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getClirResponse(const RadioResponseInfo& info, int32_t n, int32_t m) { + return Void(); +} + +Return RadioResponse::setClirResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCallForwardStatusResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_vec& + callForwardInfos) { + return Void(); +} + +Return RadioResponse::setCallForwardResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCallWaitingResponse( + const RadioResponseInfo& info, bool enable, int32_t serviceClass) { + return Void(); +} + +Return RadioResponse::setCallWaitingResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::acceptCallResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::deactivateDataCallResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getFacilityLockForAppResponse(const RadioResponseInfo& info, + int32_t response) { + return Void(); +} + +Return RadioResponse::setFacilityLockForAppResponse(const RadioResponseInfo& info, + int32_t retry) { + return Void(); +} + +Return RadioResponse::setBarringPasswordResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getNetworkSelectionModeResponse( + const RadioResponseInfo& info, bool manual) { + return Void(); +} + +Return RadioResponse::setNetworkSelectionModeAutomaticResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setNetworkSelectionModeManualResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getAvailableNetworksResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& networkInfos) { + return Void(); +} + +Return RadioResponse::startDtmfResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::stopDtmfResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getBasebandVersionResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& version) { + return Void(); +} + +Return RadioResponse::separateConnectionResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setMuteResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getMuteResponse(const RadioResponseInfo& info, bool enable) { + return Void(); +} + +Return RadioResponse::getClipResponse(const RadioResponseInfo& info, ClipStatus status) { + return Void(); +} + +Return RadioResponse::getDataCallListResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& dcResponse) { + return Void(); +} + +Return RadioResponse::sendOemRilRequestRawResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& data) { + return Void(); +} + +Return RadioResponse::sendOemRilRequestStringsResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& data) { + return Void(); +} + +Return RadioResponse::sendScreenStateResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setSuppServiceNotificationsResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::writeSmsToSimResponse( + const RadioResponseInfo& info, int32_t index) { + return Void(); +} + +Return RadioResponse::deleteSmsOnSimResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setBandModeResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getAvailableBandModesResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& bandModes) { + return Void(); +} + +Return RadioResponse::sendEnvelopeResponse(const RadioResponseInfo& info, + const ::android::hardware::hidl_string& commandResponse) { + return Void(); +} + +Return RadioResponse::sendTerminalResponseToSimResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::handleStkCallSetupRequestFromSimResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::explicitCallTransferResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setPreferredNetworkTypeResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getPreferredNetworkTypeResponse( + const RadioResponseInfo& info, PreferredNetworkType nw_type) { + return Void(); +} + +Return RadioResponse::getNeighboringCidsResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& cells) { + return Void(); +} + +Return RadioResponse::setLocationUpdatesResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setCdmaSubscriptionSourceResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setCdmaRoamingPreferenceResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCdmaRoamingPreferenceResponse( + const RadioResponseInfo& info, CdmaRoamingType type) { + return Void(); +} + +Return RadioResponse::setTTYModeResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getTTYModeResponse(const RadioResponseInfo& info, TtyMode mode) { + return Void(); +} + +Return RadioResponse::setPreferredVoicePrivacyResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getPreferredVoicePrivacyResponse( + const RadioResponseInfo& info, bool enable) { + return Void(); +} + +Return RadioResponse::sendCDMAFeatureCodeResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::sendBurstDtmfResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::sendCdmaSmsResponse( + const RadioResponseInfo& info, const SendSmsResult& sms) { + return Void(); +} + +Return RadioResponse::acknowledgeLastIncomingCdmaSmsResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getGsmBroadcastConfigResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& configs) { + return Void(); +} + +Return RadioResponse::setGsmBroadcastConfigResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setGsmBroadcastActivationResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCdmaBroadcastConfigResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& configs) { + return Void(); +} + +Return RadioResponse::setCdmaBroadcastConfigResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setCdmaBroadcastActivationResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCDMASubscriptionResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& mdn, + const ::android::hardware::hidl_string& hSid, const ::android::hardware::hidl_string& hNid, + const ::android::hardware::hidl_string& min, + const ::android::hardware::hidl_string& prl) { + return Void(); +} + +Return RadioResponse::writeSmsToRuimResponse( + const RadioResponseInfo& info, uint32_t index) { + return Void(); +} + +Return RadioResponse::deleteSmsOnRuimResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getDeviceIdentityResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& imei, + const ::android::hardware::hidl_string& imeisv, const ::android::hardware::hidl_string& esn, + const ::android::hardware::hidl_string& meid) { + return Void(); +} + +Return RadioResponse::exitEmergencyCallbackModeResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getSmscAddressResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& smsc) { + return Void(); +} + +Return RadioResponse::setSmscAddressResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::reportSmsMemoryStatusResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::reportStkServiceIsRunningResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getCdmaSubscriptionSourceResponse( + const RadioResponseInfo& info, CdmaSubscriptionSource source) { + return Void(); +} + +Return RadioResponse::requestIsimAuthenticationResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& response) { + return Void(); +} + +Return RadioResponse::acknowledgeIncomingGsmSmsWithPduResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::sendEnvelopeWithStatusResponse( + const RadioResponseInfo& info, const IccIoResult& iccIo) { + return Void(); +} + +Return RadioResponse::getVoiceRadioTechnologyResponse( + const RadioResponseInfo& info, RadioTechnology rat) { + return Void(); +} + +Return RadioResponse::getCellInfoListResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_vec& cellInfo) { + return Void(); +} + +Return RadioResponse::setCellInfoListRateResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setInitialAttachApnResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getImsRegistrationStateResponse( + const RadioResponseInfo& info, bool isRegistered, RadioTechnologyFamily ratFamily) { + return Void(); +} + +Return RadioResponse::sendImsSmsResponse( + const RadioResponseInfo& info, const SendSmsResult& sms) { + return Void(); +} + +Return RadioResponse::iccTransmitApduBasicChannelResponse( + const RadioResponseInfo& info, const IccIoResult& result) { + return Void(); +} + +Return RadioResponse::iccOpenLogicalChannelResponse( + const RadioResponseInfo& info, int32_t channelId, + const ::android::hardware::hidl_vec& selectResponse) { + return Void(); +} + +Return RadioResponse::iccCloseLogicalChannelResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::iccTransmitApduLogicalChannelResponse( + const RadioResponseInfo& info, const IccIoResult& result) { + return Void(); +} + +Return RadioResponse::nvReadItemResponse( + const RadioResponseInfo& info, const ::android::hardware::hidl_string& result) { + return Void(); +} + +Return RadioResponse::nvWriteItemResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::nvWriteCdmaPrlResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::nvResetConfigResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setUiccSubscriptionResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setDataAllowedResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getHardwareConfigResponse( + const RadioResponseInfo& info, + const ::android::hardware::hidl_vec& config) { + return Void(); +} + +Return RadioResponse::requestIccSimAuthenticationResponse( + const RadioResponseInfo& info, const IccIoResult& result) { + return Void(); +} + +Return RadioResponse::setDataProfileResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::requestShutdownResponse(const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::getRadioCapabilityResponse( + const RadioResponseInfo& info, const RadioCapability& rc) { + return Void(); +} + +Return RadioResponse::setRadioCapabilityResponse( + const RadioResponseInfo& info, const RadioCapability& rc) { + return Void(); +} + +Return RadioResponse::startLceServiceResponse( + const RadioResponseInfo& info, const LceStatusInfo& statusInfo) { + return Void(); +} + +Return RadioResponse::stopLceServiceResponse( + const RadioResponseInfo& info, const LceStatusInfo& statusInfo) { + return Void(); +} + +Return RadioResponse::pullLceDataResponse( + const RadioResponseInfo& info, const LceDataInfo& lceInfo) { + return Void(); +} + +Return RadioResponse::getModemActivityInfoResponse( + const RadioResponseInfo& info, const ActivityStatsInfo& activityInfo) { + return Void(); +} + +Return RadioResponse::setAllowedCarriersResponse( + const RadioResponseInfo& info, int32_t numAllowed) { + return Void(); +} + +Return RadioResponse::getAllowedCarriersResponse( + const RadioResponseInfo& info, bool allAllowed, const CarrierRestrictions& carriers) { + return Void(); +} + +Return RadioResponse::sendDeviceStateResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::setIndicationFilterResponse( + const RadioResponseInfo& info) { + return Void(); +} + +Return RadioResponse::acknowledgeRequest(int32_t serial) { + return Void(); +} diff --git a/radio/Android.bp b/radio/Android.bp index bbb3e4bac0..33f70ebae2 100644 --- a/radio/Android.bp +++ b/radio/Android.bp @@ -1,4 +1,5 @@ // This is an autogenerated file, do not edit. subdirs = [ "1.0", + "1.0/vts/functional", ]