/* * 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 #include using ::android::hardware::radio::V1_0::ActivityStatsInfo; using ::android::hardware::radio::V1_0::AppType; using ::android::hardware::radio::V1_0::CardStatus; using ::android::hardware::radio::V1_0::CardState; using ::android::hardware::radio::V1_0::Call; using ::android::hardware::radio::V1_0::CallForwardInfo; using ::android::hardware::radio::V1_0::CarrierMatchType; 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::DeviceStateType; using ::android::hardware::radio::V1_0::Dial; using ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo; using ::android::hardware::radio::V1_0::HardwareConfig; using ::android::hardware::radio::V1_0::IccIo; 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::NvItem; using ::android::hardware::radio::V1_0::NvWriteItem; 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::ResetNvType; using ::android::hardware::radio::V1_0::SelectUiccSub; 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::SimApdu; using ::android::hardware::radio::V1_0::TtyMode; using ::android::hardware::radio::V1_0::VoiceRegStateResult; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::Return; using ::android::hardware::Void; using ::android::sp; #define TIMEOUT_PERIOD 75 #define RADIO_SERVICE_NAME "slot1" class RadioHidlTest; extern CardStatus cardStatus; /* Callback class for radio response */ class RadioResponse : public IRadioResponse { private: RadioHidlTest& parent; public: RadioResponseInfo rspInfo; hidl_string imsi; IccIoResult iccIoResult; int channelId; // Sms SendSmsResult sendSmsResult; hidl_string smscAddress; uint32_t writeSmsToSimIndex; uint32_t writeSmsToRuimIndex; 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 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 setSimCardPowerResponse(const RadioResponseInfo& info); Return acknowledgeRequest(int32_t serial); }; // The main test class for Radio HIDL. class RadioHidlTest : public ::testing::VtsHalHidlTargetTestBase { 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(); /* Used for checking General Errors */ bool CheckGeneralError(); /* Used for checking OEM Errors */ bool CheckOEMError(); sp radio; sp radioRsp; sp radioInd; }; // A class for test environment setup class RadioHidlEnvironment : public ::testing::Environment { public: virtual void SetUp() {} virtual void TearDown() {} };