blob: 0c3df7fbbfea6fe25b876315dccd306276dcbc95 [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
Sarah Chinca421a62022-01-28 15:54:36 -080046 virtual ndk::ScopedAStatus cancelPendingUssdResponse(const RadioResponseInfo& info) override;
47
Sarah Chinfc5603b2021-12-21 11:34:00 -080048 virtual ndk::ScopedAStatus conferenceResponse(const RadioResponseInfo& info) override;
49
50 virtual ndk::ScopedAStatus dialResponse(const RadioResponseInfo& info) override;
51
52 virtual ndk::ScopedAStatus emergencyDialResponse(const RadioResponseInfo& info) override;
53
54 virtual ndk::ScopedAStatus exitEmergencyCallbackModeResponse(
55 const RadioResponseInfo& info) override;
56
57 virtual ndk::ScopedAStatus explicitCallTransferResponse(const RadioResponseInfo& info) override;
58
59 virtual ndk::ScopedAStatus getCallForwardStatusResponse(
60 const RadioResponseInfo& info,
61 const std::vector<CallForwardInfo>& call_forwardInfos) override;
62
63 virtual ndk::ScopedAStatus getCallWaitingResponse(const RadioResponseInfo& info, bool enable,
64 int32_t serviceClass) override;
65
66 virtual ndk::ScopedAStatus getClipResponse(const RadioResponseInfo& info,
67 ClipStatus status) override;
68
69 virtual ndk::ScopedAStatus getClirResponse(const RadioResponseInfo& info, int32_t n,
70 int32_t m) override;
71
72 virtual ndk::ScopedAStatus getCurrentCallsResponse(const RadioResponseInfo& info,
73 const std::vector<Call>& calls) override;
74
75 virtual ndk::ScopedAStatus getLastCallFailCauseResponse(
76 const RadioResponseInfo& info, const LastCallFailCauseInfo& failCauseInfo) override;
77
78 virtual ndk::ScopedAStatus getMuteResponse(const RadioResponseInfo& info, bool enable) override;
79
80 virtual ndk::ScopedAStatus getPreferredVoicePrivacyResponse(const RadioResponseInfo& info,
81 bool enable) override;
82
83 virtual ndk::ScopedAStatus getTtyModeResponse(const RadioResponseInfo& info,
84 TtyMode mode) override;
85
86 virtual ndk::ScopedAStatus handleStkCallSetupRequestFromSimResponse(
87 const RadioResponseInfo& info) override;
88
89 virtual ndk::ScopedAStatus hangupConnectionResponse(const RadioResponseInfo& info) override;
90
91 virtual ndk::ScopedAStatus hangupForegroundResumeBackgroundResponse(
92 const RadioResponseInfo& info) override;
93
94 virtual ndk::ScopedAStatus hangupWaitingOrBackgroundResponse(
95 const RadioResponseInfo& info) override;
96
97 virtual ndk::ScopedAStatus isVoNrEnabledResponse(const RadioResponseInfo& info,
98 bool enable) override;
99
100 virtual ndk::ScopedAStatus rejectCallResponse(const RadioResponseInfo& info) override;
101
102 virtual ndk::ScopedAStatus sendBurstDtmfResponse(const RadioResponseInfo& info) override;
103
104 virtual ndk::ScopedAStatus sendCdmaFeatureCodeResponse(const RadioResponseInfo& info) override;
105
106 virtual ndk::ScopedAStatus sendDtmfResponse(const RadioResponseInfo& info) override;
107
Sarah Chinca421a62022-01-28 15:54:36 -0800108 virtual ndk::ScopedAStatus sendUssdResponse(const RadioResponseInfo& info) override;
109
Sarah Chinfc5603b2021-12-21 11:34:00 -0800110 virtual ndk::ScopedAStatus separateConnectionResponse(const RadioResponseInfo& info) override;
111
112 virtual ndk::ScopedAStatus setCallForwardResponse(const RadioResponseInfo& info) override;
113
114 virtual ndk::ScopedAStatus setCallWaitingResponse(const RadioResponseInfo& info) override;
115
116 virtual ndk::ScopedAStatus setClirResponse(const RadioResponseInfo& info) override;
117
118 virtual ndk::ScopedAStatus setMuteResponse(const RadioResponseInfo& info) override;
119
120 virtual ndk::ScopedAStatus setPreferredVoicePrivacyResponse(
121 const RadioResponseInfo& info) override;
122
123 virtual ndk::ScopedAStatus setTtyModeResponse(const RadioResponseInfo& info) override;
124
125 virtual ndk::ScopedAStatus setVoNrEnabledResponse(const RadioResponseInfo& info) override;
126
127 virtual ndk::ScopedAStatus startDtmfResponse(const RadioResponseInfo& info) override;
128
129 virtual ndk::ScopedAStatus stopDtmfResponse(const RadioResponseInfo& info) override;
130
131 virtual ndk::ScopedAStatus switchWaitingOrHoldingAndActiveResponse(
132 const RadioResponseInfo& info) override;
133};
134
135/* Callback class for radio voice indication */
136class RadioVoiceIndication : public BnRadioVoiceIndication {
137 protected:
Sarah Chinc83bce42021-12-29 00:35:12 -0800138 RadioServiceTest& parent_voice;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800139
140 public:
Sarah Chinc83bce42021-12-29 00:35:12 -0800141 RadioVoiceIndication(RadioServiceTest& parent_voice);
Sarah Chinfc5603b2021-12-21 11:34:00 -0800142 virtual ~RadioVoiceIndication() = default;
143
144 virtual ndk::ScopedAStatus callRing(RadioIndicationType type, bool isGsm,
145 const CdmaSignalInfoRecord& record) override;
146
147 virtual ndk::ScopedAStatus callStateChanged(RadioIndicationType type) override;
148
149 virtual ndk::ScopedAStatus cdmaCallWaiting(RadioIndicationType type,
150 const CdmaCallWaiting& callWaitingRecord) override;
151
152 virtual ndk::ScopedAStatus cdmaInfoRec(
153 RadioIndicationType type, const std::vector<CdmaInformationRecord>& records) override;
154
155 virtual ndk::ScopedAStatus cdmaOtaProvisionStatus(RadioIndicationType type,
156 CdmaOtaProvisionStatus status) override;
157
158 virtual ndk::ScopedAStatus currentEmergencyNumberList(
159 RadioIndicationType type,
160 const std::vector<EmergencyNumber>& emergencyNumberList) override;
161
162 virtual ndk::ScopedAStatus enterEmergencyCallbackMode(RadioIndicationType type) override;
163
164 virtual ndk::ScopedAStatus exitEmergencyCallbackMode(RadioIndicationType type) override;
165
166 virtual ndk::ScopedAStatus indicateRingbackTone(RadioIndicationType type, bool start) override;
167
168 virtual ndk::ScopedAStatus onSupplementaryServiceIndication(
169 RadioIndicationType type, const StkCcUnsolSsResult& ss) override;
170
Sarah Chinca421a62022-01-28 15:54:36 -0800171 virtual ndk::ScopedAStatus onUssd(RadioIndicationType type, UssdModeType modeType,
172 const std::string& msg) override;
173
Sarah Chinfc5603b2021-12-21 11:34:00 -0800174 virtual ndk::ScopedAStatus resendIncallMute(RadioIndicationType type) override;
175
176 virtual ndk::ScopedAStatus srvccStateNotify(RadioIndicationType type,
177 SrvccState state) override;
178
179 virtual ndk::ScopedAStatus stkCallControlAlphaNotify(RadioIndicationType type,
180 const std::string& alpha) override;
181
182 virtual ndk::ScopedAStatus stkCallSetup(RadioIndicationType type, int64_t timeout) override;
183};
184
185// The main test class for Radio AIDL Voice.
Sarah Chinc83bce42021-12-29 00:35:12 -0800186class RadioVoiceTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
Sarah Chinfc5603b2021-12-21 11:34:00 -0800187 protected:
188 /* Clear Potential Established Calls */
189 virtual ndk::ScopedAStatus clearPotentialEstablishedCalls();
Sarah Chinc83bce42021-12-29 00:35:12 -0800190 std::shared_ptr<network::IRadioNetwork> radio_network;
191 std::shared_ptr<RadioNetworkResponse> radioRsp_network;
192 std::shared_ptr<RadioNetworkIndication> radioInd_network;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800193
194 public:
195 virtual void SetUp() override;
196
197 /* radio voice service handle */
198 std::shared_ptr<IRadioVoice> radio_voice;
199 /* radio voice response handle */
200 std::shared_ptr<RadioVoiceResponse> radioRsp_voice;
201 /* radio voice indication handle */
202 std::shared_ptr<RadioVoiceIndication> radioInd_voice;
203};