blob: d61bf1eee80caeb62698936b941d7df7fa151f90 [file] [log] [blame]
Sarah Chinfc5603b2021-12-21 11:34:00 -08001/*
2 * Copyright (C) 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <aidl/android/hardware/radio/voice/BnRadioVoiceIndication.h>
20#include <aidl/android/hardware/radio/voice/BnRadioVoiceResponse.h>
21#include <aidl/android/hardware/radio/voice/IRadioVoice.h>
22
23#include "radio_aidl_hal_utils.h"
Sarah Chinc83bce42021-12-29 00:35:12 -080024#include "radio_network_utils.h"
Sarah Chinfc5603b2021-12-21 11:34:00 -080025
26using namespace aidl::android::hardware::radio::voice;
27
28class RadioVoiceTest;
29
30/* Callback class for radio voice response */
31class RadioVoiceResponse : public BnRadioVoiceResponse {
32 protected:
Sarah Chinc83bce42021-12-29 00:35:12 -080033 RadioServiceTest& parent_voice;
Sarah Chinfc5603b2021-12-21 11:34:00 -080034
35 public:
Sarah Chinc83bce42021-12-29 00:35:12 -080036 RadioVoiceResponse(RadioServiceTest& parent_voice);
Sarah Chinfc5603b2021-12-21 11:34:00 -080037 virtual ~RadioVoiceResponse() = default;
38
39 RadioResponseInfo rspInfo;
40 std::vector<Call> currentCalls;
41
42 virtual ndk::ScopedAStatus acceptCallResponse(const RadioResponseInfo& info) override;
43
44 virtual ndk::ScopedAStatus acknowledgeRequest(int32_t serial) override;
45
46 virtual ndk::ScopedAStatus conferenceResponse(const RadioResponseInfo& info) override;
47
48 virtual ndk::ScopedAStatus dialResponse(const RadioResponseInfo& info) override;
49
50 virtual ndk::ScopedAStatus emergencyDialResponse(const RadioResponseInfo& info) override;
51
52 virtual ndk::ScopedAStatus exitEmergencyCallbackModeResponse(
53 const RadioResponseInfo& info) override;
54
55 virtual ndk::ScopedAStatus explicitCallTransferResponse(const RadioResponseInfo& info) override;
56
57 virtual ndk::ScopedAStatus getCallForwardStatusResponse(
58 const RadioResponseInfo& info,
59 const std::vector<CallForwardInfo>& call_forwardInfos) override;
60
61 virtual ndk::ScopedAStatus getCallWaitingResponse(const RadioResponseInfo& info, bool enable,
62 int32_t serviceClass) override;
63
64 virtual ndk::ScopedAStatus getClipResponse(const RadioResponseInfo& info,
65 ClipStatus status) override;
66
67 virtual ndk::ScopedAStatus getClirResponse(const RadioResponseInfo& info, int32_t n,
68 int32_t m) override;
69
70 virtual ndk::ScopedAStatus getCurrentCallsResponse(const RadioResponseInfo& info,
71 const std::vector<Call>& calls) override;
72
73 virtual ndk::ScopedAStatus getLastCallFailCauseResponse(
74 const RadioResponseInfo& info, const LastCallFailCauseInfo& failCauseInfo) override;
75
76 virtual ndk::ScopedAStatus getMuteResponse(const RadioResponseInfo& info, bool enable) override;
77
78 virtual ndk::ScopedAStatus getPreferredVoicePrivacyResponse(const RadioResponseInfo& info,
79 bool enable) override;
80
81 virtual ndk::ScopedAStatus getTtyModeResponse(const RadioResponseInfo& info,
82 TtyMode mode) override;
83
84 virtual ndk::ScopedAStatus handleStkCallSetupRequestFromSimResponse(
85 const RadioResponseInfo& info) override;
86
87 virtual ndk::ScopedAStatus hangupConnectionResponse(const RadioResponseInfo& info) override;
88
89 virtual ndk::ScopedAStatus hangupForegroundResumeBackgroundResponse(
90 const RadioResponseInfo& info) override;
91
92 virtual ndk::ScopedAStatus hangupWaitingOrBackgroundResponse(
93 const RadioResponseInfo& info) override;
94
95 virtual ndk::ScopedAStatus isVoNrEnabledResponse(const RadioResponseInfo& info,
96 bool enable) override;
97
98 virtual ndk::ScopedAStatus rejectCallResponse(const RadioResponseInfo& info) override;
99
100 virtual ndk::ScopedAStatus sendBurstDtmfResponse(const RadioResponseInfo& info) override;
101
102 virtual ndk::ScopedAStatus sendCdmaFeatureCodeResponse(const RadioResponseInfo& info) override;
103
104 virtual ndk::ScopedAStatus sendDtmfResponse(const RadioResponseInfo& info) override;
105
106 virtual ndk::ScopedAStatus separateConnectionResponse(const RadioResponseInfo& info) override;
107
108 virtual ndk::ScopedAStatus setCallForwardResponse(const RadioResponseInfo& info) override;
109
110 virtual ndk::ScopedAStatus setCallWaitingResponse(const RadioResponseInfo& info) override;
111
112 virtual ndk::ScopedAStatus setClirResponse(const RadioResponseInfo& info) override;
113
114 virtual ndk::ScopedAStatus setMuteResponse(const RadioResponseInfo& info) override;
115
116 virtual ndk::ScopedAStatus setPreferredVoicePrivacyResponse(
117 const RadioResponseInfo& info) override;
118
119 virtual ndk::ScopedAStatus setTtyModeResponse(const RadioResponseInfo& info) override;
120
121 virtual ndk::ScopedAStatus setVoNrEnabledResponse(const RadioResponseInfo& info) override;
122
123 virtual ndk::ScopedAStatus startDtmfResponse(const RadioResponseInfo& info) override;
124
125 virtual ndk::ScopedAStatus stopDtmfResponse(const RadioResponseInfo& info) override;
126
127 virtual ndk::ScopedAStatus switchWaitingOrHoldingAndActiveResponse(
128 const RadioResponseInfo& info) override;
129};
130
131/* Callback class for radio voice indication */
132class RadioVoiceIndication : public BnRadioVoiceIndication {
133 protected:
Sarah Chinc83bce42021-12-29 00:35:12 -0800134 RadioServiceTest& parent_voice;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800135
136 public:
Sarah Chinc83bce42021-12-29 00:35:12 -0800137 RadioVoiceIndication(RadioServiceTest& parent_voice);
Sarah Chinfc5603b2021-12-21 11:34:00 -0800138 virtual ~RadioVoiceIndication() = default;
139
140 virtual ndk::ScopedAStatus callRing(RadioIndicationType type, bool isGsm,
141 const CdmaSignalInfoRecord& record) override;
142
143 virtual ndk::ScopedAStatus callStateChanged(RadioIndicationType type) override;
144
145 virtual ndk::ScopedAStatus cdmaCallWaiting(RadioIndicationType type,
146 const CdmaCallWaiting& callWaitingRecord) override;
147
148 virtual ndk::ScopedAStatus cdmaInfoRec(
149 RadioIndicationType type, const std::vector<CdmaInformationRecord>& records) override;
150
151 virtual ndk::ScopedAStatus cdmaOtaProvisionStatus(RadioIndicationType type,
152 CdmaOtaProvisionStatus status) override;
153
154 virtual ndk::ScopedAStatus currentEmergencyNumberList(
155 RadioIndicationType type,
156 const std::vector<EmergencyNumber>& emergencyNumberList) override;
157
158 virtual ndk::ScopedAStatus enterEmergencyCallbackMode(RadioIndicationType type) override;
159
160 virtual ndk::ScopedAStatus exitEmergencyCallbackMode(RadioIndicationType type) override;
161
162 virtual ndk::ScopedAStatus indicateRingbackTone(RadioIndicationType type, bool start) override;
163
164 virtual ndk::ScopedAStatus onSupplementaryServiceIndication(
165 RadioIndicationType type, const StkCcUnsolSsResult& ss) override;
166
167 virtual ndk::ScopedAStatus resendIncallMute(RadioIndicationType type) override;
168
169 virtual ndk::ScopedAStatus srvccStateNotify(RadioIndicationType type,
170 SrvccState state) override;
171
172 virtual ndk::ScopedAStatus stkCallControlAlphaNotify(RadioIndicationType type,
173 const std::string& alpha) override;
174
175 virtual ndk::ScopedAStatus stkCallSetup(RadioIndicationType type, int64_t timeout) override;
176};
177
178// The main test class for Radio AIDL Voice.
Sarah Chinc83bce42021-12-29 00:35:12 -0800179class RadioVoiceTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
Sarah Chinfc5603b2021-12-21 11:34:00 -0800180 protected:
181 /* Clear Potential Established Calls */
182 virtual ndk::ScopedAStatus clearPotentialEstablishedCalls();
Sarah Chinc83bce42021-12-29 00:35:12 -0800183 std::shared_ptr<network::IRadioNetwork> radio_network;
184 std::shared_ptr<RadioNetworkResponse> radioRsp_network;
185 std::shared_ptr<RadioNetworkIndication> radioInd_network;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800186
187 public:
188 virtual void SetUp() override;
189
190 /* radio voice service handle */
191 std::shared_ptr<IRadioVoice> radio_voice;
192 /* radio voice response handle */
193 std::shared_ptr<RadioVoiceResponse> radioRsp_voice;
194 /* radio voice indication handle */
195 std::shared_ptr<RadioVoiceIndication> radioInd_voice;
196};