226 lines
10 KiB
C++
226 lines
10 KiB
C++
/*
|
|
* 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 <aidl/android/hardware/radio/network/BnRadioNetworkIndication.h>
|
|
#include <aidl/android/hardware/radio/network/BnRadioNetworkResponse.h>
|
|
#include <aidl/android/hardware/radio/network/IRadioNetwork.h>
|
|
|
|
#include "radio_aidl_hal_utils.h"
|
|
|
|
using namespace aidl::android::hardware::radio::network;
|
|
|
|
class RadioNetworkTest;
|
|
|
|
/* Callback class for radio network response */
|
|
class RadioNetworkResponse : public BnRadioNetworkResponse {
|
|
protected:
|
|
RadioServiceTest& parent_network;
|
|
|
|
public:
|
|
RadioNetworkResponse(RadioServiceTest& parent_network);
|
|
virtual ~RadioNetworkResponse() = default;
|
|
|
|
RadioResponseInfo rspInfo;
|
|
std::vector<RadioBandMode> radioBandModes;
|
|
std::vector<OperatorInfo> networkInfos;
|
|
bool isNrDualConnectivityEnabled;
|
|
int networkTypeBitmapResponse;
|
|
RegStateResult voiceRegResp;
|
|
RegStateResult dataRegResp;
|
|
CellIdentity barringCellIdentity;
|
|
std::vector<BarringInfo> barringInfoList;
|
|
UsageSetting usageSetting;
|
|
std::vector<RadioAccessSpecifier> specifiers;
|
|
|
|
virtual ndk::ScopedAStatus acknowledgeRequest(int32_t serial) override;
|
|
|
|
virtual ndk::ScopedAStatus getAllowedNetworkTypesBitmapResponse(
|
|
const RadioResponseInfo& info, const int32_t networkTypeBitmap) override;
|
|
|
|
virtual ndk::ScopedAStatus getAvailableBandModesResponse(
|
|
const RadioResponseInfo& info, const std::vector<RadioBandMode>& bandModes) override;
|
|
|
|
virtual ndk::ScopedAStatus getAvailableNetworksResponse(
|
|
const RadioResponseInfo& info, const std::vector<OperatorInfo>& networkInfos) override;
|
|
|
|
virtual ndk::ScopedAStatus getBarringInfoResponse(
|
|
const RadioResponseInfo& info, const CellIdentity& cellIdentity,
|
|
const std::vector<BarringInfo>& barringInfos) override;
|
|
|
|
virtual ndk::ScopedAStatus getCdmaRoamingPreferenceResponse(const RadioResponseInfo& info,
|
|
CdmaRoamingType type) override;
|
|
|
|
virtual ndk::ScopedAStatus getCellInfoListResponse(
|
|
const RadioResponseInfo& info, const std::vector<CellInfo>& cellInfo) override;
|
|
|
|
virtual ndk::ScopedAStatus getDataRegistrationStateResponse(
|
|
const RadioResponseInfo& info, const RegStateResult& dataRegResponse) override;
|
|
|
|
virtual ndk::ScopedAStatus getImsRegistrationStateResponse(
|
|
const RadioResponseInfo& info, bool isRegistered,
|
|
RadioTechnologyFamily ratFamily) override;
|
|
|
|
virtual ndk::ScopedAStatus getNetworkSelectionModeResponse(const RadioResponseInfo& info,
|
|
bool manual) override;
|
|
|
|
virtual ndk::ScopedAStatus getOperatorResponse(const RadioResponseInfo& info,
|
|
const std::string& longName,
|
|
const std::string& shortName,
|
|
const std::string& numeric) override;
|
|
|
|
virtual ndk::ScopedAStatus getSignalStrengthResponse(
|
|
const RadioResponseInfo& info, const SignalStrength& sigStrength) override;
|
|
|
|
virtual ndk::ScopedAStatus getSystemSelectionChannelsResponse(
|
|
const RadioResponseInfo& info,
|
|
const std::vector<RadioAccessSpecifier>& specifier) override;
|
|
|
|
virtual ndk::ScopedAStatus getUsageSettingResponse(const RadioResponseInfo& info,
|
|
UsageSetting usageSetting) override;
|
|
|
|
virtual ndk::ScopedAStatus getVoiceRadioTechnologyResponse(const RadioResponseInfo& info,
|
|
RadioTechnology rat) override;
|
|
|
|
virtual ndk::ScopedAStatus getVoiceRegistrationStateResponse(
|
|
const RadioResponseInfo& info, const RegStateResult& voiceRegResponse) override;
|
|
|
|
virtual ndk::ScopedAStatus isNrDualConnectivityEnabledResponse(const RadioResponseInfo& info,
|
|
bool isEnabled) override;
|
|
|
|
virtual ndk::ScopedAStatus setAllowedNetworkTypesBitmapResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setBandModeResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setBarringPasswordResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setCdmaRoamingPreferenceResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setCellInfoListRateResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setIndicationFilterResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setLinkCapacityReportingCriteriaResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setLocationUpdatesResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setNetworkSelectionModeAutomaticResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setNetworkSelectionModeManualResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setNrDualConnectivityStateResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setSignalStrengthReportingCriteriaResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setSuppServiceNotificationsResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setSystemSelectionChannelsResponse(
|
|
const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus setUsageSettingResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus startNetworkScanResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus stopNetworkScanResponse(const RadioResponseInfo& info) override;
|
|
|
|
virtual ndk::ScopedAStatus supplyNetworkDepersonalizationResponse(
|
|
const RadioResponseInfo& info, int32_t remainingRetries) override;
|
|
};
|
|
|
|
/* Callback class for radio network indication */
|
|
class RadioNetworkIndication : public BnRadioNetworkIndication {
|
|
protected:
|
|
RadioServiceTest& parent_network;
|
|
|
|
public:
|
|
RadioNetworkIndication(RadioServiceTest& parent_network);
|
|
virtual ~RadioNetworkIndication() = default;
|
|
|
|
virtual ndk::ScopedAStatus barringInfoChanged(
|
|
RadioIndicationType type, const CellIdentity& cellIdentity,
|
|
const std::vector<BarringInfo>& barringInfos) override;
|
|
|
|
virtual ndk::ScopedAStatus cdmaPrlChanged(RadioIndicationType type, int32_t version) override;
|
|
|
|
virtual ndk::ScopedAStatus cellInfoList(RadioIndicationType type,
|
|
const std::vector<CellInfo>& records) override;
|
|
|
|
virtual ndk::ScopedAStatus currentLinkCapacityEstimate(
|
|
RadioIndicationType type, const LinkCapacityEstimate& lce) override;
|
|
|
|
virtual ndk::ScopedAStatus currentPhysicalChannelConfigs(
|
|
RadioIndicationType type, const std::vector<PhysicalChannelConfig>& configs) override;
|
|
|
|
virtual ndk::ScopedAStatus currentSignalStrength(RadioIndicationType type,
|
|
const SignalStrength& signalStrength) override;
|
|
|
|
virtual ndk::ScopedAStatus imsNetworkStateChanged(RadioIndicationType type) override;
|
|
|
|
virtual ndk::ScopedAStatus networkScanResult(RadioIndicationType type,
|
|
const NetworkScanResult& result) override;
|
|
|
|
virtual ndk::ScopedAStatus networkStateChanged(RadioIndicationType type) override;
|
|
|
|
virtual ndk::ScopedAStatus nitzTimeReceived(RadioIndicationType type,
|
|
const std::string& nitzTime, int64_t receivedTimeMs,
|
|
int64_t ageMs) override;
|
|
|
|
virtual ndk::ScopedAStatus registrationFailed(RadioIndicationType type,
|
|
const CellIdentity& cellIdentity,
|
|
const std::string& chosenPlmn, int32_t domain,
|
|
int32_t causeCode,
|
|
int32_t additionalCauseCode) override;
|
|
|
|
virtual ndk::ScopedAStatus restrictedStateChanged(RadioIndicationType type,
|
|
PhoneRestrictedState state) override;
|
|
|
|
virtual ndk::ScopedAStatus suppSvcNotify(RadioIndicationType type,
|
|
const SuppSvcNotification& suppSvc) override;
|
|
|
|
virtual ndk::ScopedAStatus voiceRadioTechChanged(RadioIndicationType type,
|
|
RadioTechnology rat) override;
|
|
};
|
|
|
|
// The main test class for Radio AIDL Network.
|
|
class RadioNetworkTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
|
|
public:
|
|
virtual void SetUp() override;
|
|
|
|
/* radio network service handle */
|
|
std::shared_ptr<IRadioNetwork> radio_network;
|
|
/* radio network response handle */
|
|
std::shared_ptr<RadioNetworkResponse> radioRsp_network;
|
|
/* radio network indication handle */
|
|
std::shared_ptr<RadioNetworkIndication> radioInd_network;
|
|
|
|
void invokeAndExpectResponse(std::function<ndk::ScopedAStatus(int32_t serial)> request,
|
|
std::vector<RadioError> errors_to_check);
|
|
|
|
// Helper function to reduce copy+paste
|
|
void testSetUsageSetting_InvalidValues(std::vector<RadioError> errors);
|
|
|
|
void stopNetworkScan();
|
|
};
|