blob: e829e43f90b30c44e73b70ffa2020ef7b8b0f75a [file] [log] [blame]
Hunsuk Choi9d4f38c2021-12-16 21:50:04 +00001/*
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/ims/BnRadioImsIndication.h>
20#include <aidl/android/hardware/radio/ims/BnRadioImsResponse.h>
21#include <aidl/android/hardware/radio/ims/IRadioIms.h>
22
23#include "radio_aidl_hal_utils.h"
24
25using namespace aidl::android::hardware::radio::ims;
26
27class RadioImsTest;
28
29/* Callback class for radio ims response */
30class RadioImsResponse : public BnRadioImsResponse {
31 protected:
32 RadioServiceTest& parent_ims;
33
34 public:
35 RadioImsResponse(RadioServiceTest& parent_ims);
36 virtual ~RadioImsResponse() = default;
37
38 RadioResponseInfo rspInfo;
Hunsuk Choif3ef4ff2022-03-29 03:10:35 +000039 std::optional<ConnectionFailureInfo> startImsTrafficResp;
Hunsuk Choi9d4f38c2021-12-16 21:50:04 +000040
41 virtual ndk::ScopedAStatus setSrvccCallInfoResponse(const RadioResponseInfo& info) override;
42
43 virtual ndk::ScopedAStatus updateImsRegistrationInfoResponse(
44 const RadioResponseInfo& info) override;
45
Hunsuk Choif3ef4ff2022-03-29 03:10:35 +000046 virtual ndk::ScopedAStatus startImsTrafficResponse(const RadioResponseInfo& info,
47 const std::optional<ConnectionFailureInfo>& response) override;
Hunsuk Choi9d4f38c2021-12-16 21:50:04 +000048
Hunsuk Choif3ef4ff2022-03-29 03:10:35 +000049 virtual ndk::ScopedAStatus stopImsTrafficResponse(const RadioResponseInfo& info) override;
Hwayoung1ec992a2022-02-15 09:48:07 +000050
Hwayoung1ec992a2022-02-15 09:48:07 +000051 virtual ndk::ScopedAStatus sendAnbrQueryResponse(const RadioResponseInfo& info) override;
Hunsuk Choi9d4f38c2021-12-16 21:50:04 +000052};
53
54/* Callback class for radio ims indication */
55class RadioImsIndication : public BnRadioImsIndication {
56 protected:
57 RadioServiceTest& parent_ims;
58
59 public:
60 RadioImsIndication(RadioServiceTest& parent_ims);
61 virtual ~RadioImsIndication() = default;
62
Hunsuk Choif3ef4ff2022-03-29 03:10:35 +000063 virtual ndk::ScopedAStatus onConnectionSetupFailure(RadioIndicationType type,
64 const std::string& token, const ConnectionFailureInfo& info) override;
Hwayoung1ec992a2022-02-15 09:48:07 +000065
Helenc112be12022-04-26 01:02:40 +000066 virtual ndk::ScopedAStatus notifyAnbr(RadioIndicationType type, ImsStreamType mediaType,
Hwayoung1ec992a2022-02-15 09:48:07 +000067 ImsStreamDirection direction, int bitsPerSecond) override;
Hunsuk Choidb17f4f2022-04-12 06:26:48 +000068
Hunsuk Choi2456ad42022-09-02 03:52:53 +000069 virtual ndk::ScopedAStatus triggerImsDeregistration(RadioIndicationType type,
70 ImsDeregistrationReason reason) override;
Hunsuk Choi9d4f38c2021-12-16 21:50:04 +000071};
72
73// The main test class for Radio AIDL Ims.
74class RadioImsTest : public ::testing::TestWithParam<std::string>, public RadioServiceTest {
75 protected:
76 virtual void verifyError(RadioError resp);
77
78 public:
79 virtual void SetUp() override;
80
81 /* radio ims service handle */
82 std::shared_ptr<IRadioIms> radio_ims;
83 /* radio ims response handle */
84 std::shared_ptr<RadioImsResponse> radioRsp_ims;
85 /* radio ims indication handle */
86 std::shared_ptr<RadioImsIndication> radioInd_ims;
87};