blob: 6cb67904538330c7f5c33ed9440e2ec0041ce0ea [file] [log] [blame]
Sarah Chind2a41192021-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/sim/BnRadioSimIndication.h>
20#include <aidl/android/hardware/radio/sim/BnRadioSimResponse.h>
21#include <aidl/android/hardware/radio/sim/IRadioSim.h>
22
23#include "radio_aidl_hal_utils.h"
24
25using namespace aidl::android::hardware::radio::sim;
26
27class RadioSimTest;
28
29/* Callback class for radio SIM response */
30class RadioSimResponse : public BnRadioSimResponse {
31 protected:
32 RadioResponseWaiter& parent_sim;
33
34 public:
35 RadioSimResponse(RadioResponseWaiter& parent_sim);
36 virtual ~RadioSimResponse() = default;
37
38 RadioResponseInfo rspInfo;
39 CarrierRestrictions carrierRestrictionsResp;
40 SimLockMultiSimPolicy multiSimPolicyResp;
41 bool canToggleUiccApplicationsEnablement;
42 bool areUiccApplicationsEnabled;
43 PhonebookCapacity capacity;
44 int32_t updatedRecordIndex;
45
46 virtual ndk::ScopedAStatus acknowledgeRequest(int32_t serial) override;
47
48 virtual ndk::ScopedAStatus areUiccApplicationsEnabledResponse(const RadioResponseInfo& info,
49 bool enabled) override;
50
51 virtual ndk::ScopedAStatus changeIccPin2ForAppResponse(const RadioResponseInfo& info,
52 int32_t remainingRetries) override;
53
54 virtual ndk::ScopedAStatus changeIccPinForAppResponse(const RadioResponseInfo& info,
55 int32_t remainingRetries) override;
56
57 virtual ndk::ScopedAStatus enableUiccApplicationsResponse(
58 const RadioResponseInfo& info) override;
59
60 virtual ndk::ScopedAStatus getAllowedCarriersResponse(
61 const RadioResponseInfo& info, const CarrierRestrictions& carriers,
62 const SimLockMultiSimPolicy multiSimPolicy) override;
63
64 virtual ndk::ScopedAStatus getCdmaSubscriptionResponse(
65 const RadioResponseInfo& info, const std::string& mdn, const std::string& hSid,
66 const std::string& hNid, const std::string& min, const std::string& prl) override;
67
68 virtual ndk::ScopedAStatus getCdmaSubscriptionSourceResponse(
69 const RadioResponseInfo& info, CdmaSubscriptionSource source) override;
70
71 virtual ndk::ScopedAStatus getFacilityLockForAppResponse(const RadioResponseInfo& info,
72 int32_t response) override;
73
74 virtual ndk::ScopedAStatus getIccCardStatusResponse(const RadioResponseInfo& info,
75 const CardStatus& cardStatus) override;
76
77 virtual ndk::ScopedAStatus getImsiForAppResponse(const RadioResponseInfo& info,
78 const std::string& imsi) override;
79
80 virtual ndk::ScopedAStatus getSimPhonebookCapacityResponse(
81 const RadioResponseInfo& info, const PhonebookCapacity& capacity) override;
82
83 virtual ndk::ScopedAStatus getSimPhonebookRecordsResponse(
84 const RadioResponseInfo& info) override;
85
86 virtual ndk::ScopedAStatus iccCloseLogicalChannelResponse(
87 const RadioResponseInfo& info) override;
88
89 virtual ndk::ScopedAStatus iccIoForAppResponse(const RadioResponseInfo& info,
90 const IccIoResult& iccIo) override;
91
92 virtual ndk::ScopedAStatus iccOpenLogicalChannelResponse(
93 const RadioResponseInfo& info, int32_t channelId,
94 const std::vector<uint8_t>& selectResponse) override;
95
96 virtual ndk::ScopedAStatus iccTransmitApduBasicChannelResponse(
97 const RadioResponseInfo& info, const IccIoResult& result) override;
98
99 virtual ndk::ScopedAStatus iccTransmitApduLogicalChannelResponse(
100 const RadioResponseInfo& info, const IccIoResult& result) override;
101
102 virtual ndk::ScopedAStatus reportStkServiceIsRunningResponse(
103 const RadioResponseInfo& info) override;
104
105 virtual ndk::ScopedAStatus requestIccSimAuthenticationResponse(
106 const RadioResponseInfo& info, const IccIoResult& result) override;
107
108 virtual ndk::ScopedAStatus sendEnvelopeResponse(const RadioResponseInfo& info,
109 const std::string& commandResponse) override;
110
111 virtual ndk::ScopedAStatus sendEnvelopeWithStatusResponse(const RadioResponseInfo& info,
112 const IccIoResult& iccIo) override;
113
114 virtual ndk::ScopedAStatus sendTerminalResponseToSimResponse(
115 const RadioResponseInfo& info) override;
116
117 virtual ndk::ScopedAStatus setAllowedCarriersResponse(const RadioResponseInfo& info) override;
118
119 virtual ndk::ScopedAStatus setCarrierInfoForImsiEncryptionResponse(
120 const RadioResponseInfo& info) override;
121
122 virtual ndk::ScopedAStatus setCdmaSubscriptionSourceResponse(
123 const RadioResponseInfo& info) override;
124
125 virtual ndk::ScopedAStatus setFacilityLockForAppResponse(const RadioResponseInfo& info,
126 int32_t retry) override;
127
128 virtual ndk::ScopedAStatus setSimCardPowerResponse(const RadioResponseInfo& info) override;
129
130 virtual ndk::ScopedAStatus setUiccSubscriptionResponse(const RadioResponseInfo& info) override;
131
132 virtual ndk::ScopedAStatus supplyIccPin2ForAppResponse(const RadioResponseInfo& info,
133 int32_t remainingRetries) override;
134
135 virtual ndk::ScopedAStatus supplyIccPinForAppResponse(const RadioResponseInfo& info,
136 int32_t remainingRetries) override;
137
138 virtual ndk::ScopedAStatus supplyIccPuk2ForAppResponse(const RadioResponseInfo& info,
139 int32_t remainingRetries) override;
140
141 virtual ndk::ScopedAStatus supplyIccPukForAppResponse(const RadioResponseInfo& info,
142 int32_t remainingRetries) override;
143
144 virtual ndk::ScopedAStatus supplySimDepersonalizationResponse(
145 const RadioResponseInfo& info, PersoSubstate persoType,
146 int32_t remainingRetries) override;
147
148 virtual ndk::ScopedAStatus updateSimPhonebookRecordsResponse(
149 const RadioResponseInfo& info, int32_t updatedRecordIndex) override;
150};
151
152/* Callback class for radio SIM indication */
153class RadioSimIndication : public BnRadioSimIndication {
154 protected:
155 RadioSimTest& parent_sim;
156
157 public:
158 RadioSimIndication(RadioSimTest& parent_sim);
159 virtual ~RadioSimIndication() = default;
160
161 virtual ndk::ScopedAStatus carrierInfoForImsiEncryption(RadioIndicationType info) override;
162
163 virtual ndk::ScopedAStatus cdmaSubscriptionSourceChanged(
164 RadioIndicationType type, CdmaSubscriptionSource cdmaSource) override;
165
166 virtual ndk::ScopedAStatus simPhonebookChanged(RadioIndicationType type) override;
167
168 virtual ndk::ScopedAStatus simPhonebookRecordsReceived(
169 RadioIndicationType type, PbReceivedStatus status,
170 const std::vector<PhonebookRecordInfo>& records) override;
171
172 virtual ndk::ScopedAStatus simRefresh(RadioIndicationType type,
173 const SimRefreshResult& refreshResult) override;
174
175 virtual ndk::ScopedAStatus simStatusChanged(RadioIndicationType type) override;
176
177 virtual ndk::ScopedAStatus stkEventNotify(RadioIndicationType type,
178 const std::string& cmd) override;
179
180 virtual ndk::ScopedAStatus stkProactiveCommand(RadioIndicationType type,
181 const std::string& cmd) override;
182
183 virtual ndk::ScopedAStatus stkSessionEnd(RadioIndicationType type) override;
184
185 virtual ndk::ScopedAStatus subscriptionStatusChanged(RadioIndicationType type,
186 bool activate) override;
187
188 virtual ndk::ScopedAStatus uiccApplicationsEnablementChanged(RadioIndicationType type,
189 bool enabled) override;
190};
191
192// The main test class for Radio AIDL SIM.
193class RadioSimTest : public ::testing::TestWithParam<std::string>, public RadioResponseWaiter {
194 protected:
195 /* Update Sim Card Status */
196 virtual ndk::ScopedAStatus updateSimCardStatus();
197
198 public:
199 virtual void SetUp() override;
200
201 /* radio SIM service handle */
202 std::shared_ptr<IRadioSim> radio_sim;
203 /* radio SIM response handle */
204 std::shared_ptr<RadioSimResponse> radioRsp_sim;
205 /* radio SIM indication handle */
206 std::shared_ptr<RadioSimIndication> radioInd_sim;
207};