blob: 7cbcc58fd1722b2ed84751cba2f31c5878edaeb1 [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/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:
Sarah Chinc83bce42021-12-29 00:35:12 -080032 RadioServiceTest& parent_sim;
Sarah Chinfc5603b2021-12-21 11:34:00 -080033
34 public:
Sarah Chinc83bce42021-12-29 00:35:12 -080035 RadioSimResponse(RadioServiceTest& parent_sim);
Sarah Chinfc5603b2021-12-21 11:34:00 -080036 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;
Sarah Chin912bdf32022-01-28 01:02:16 -080045 std::string imsi;
Sarah Chinfc5603b2021-12-21 11:34:00 -080046
47 virtual ndk::ScopedAStatus acknowledgeRequest(int32_t serial) override;
48
49 virtual ndk::ScopedAStatus areUiccApplicationsEnabledResponse(const RadioResponseInfo& info,
50 bool enabled) override;
51
52 virtual ndk::ScopedAStatus changeIccPin2ForAppResponse(const RadioResponseInfo& info,
53 int32_t remainingRetries) override;
54
55 virtual ndk::ScopedAStatus changeIccPinForAppResponse(const RadioResponseInfo& info,
56 int32_t remainingRetries) override;
57
58 virtual ndk::ScopedAStatus enableUiccApplicationsResponse(
59 const RadioResponseInfo& info) override;
60
61 virtual ndk::ScopedAStatus getAllowedCarriersResponse(
62 const RadioResponseInfo& info, const CarrierRestrictions& carriers,
63 const SimLockMultiSimPolicy multiSimPolicy) override;
64
65 virtual ndk::ScopedAStatus getCdmaSubscriptionResponse(
66 const RadioResponseInfo& info, const std::string& mdn, const std::string& hSid,
67 const std::string& hNid, const std::string& min, const std::string& prl) override;
68
69 virtual ndk::ScopedAStatus getCdmaSubscriptionSourceResponse(
70 const RadioResponseInfo& info, CdmaSubscriptionSource source) override;
71
72 virtual ndk::ScopedAStatus getFacilityLockForAppResponse(const RadioResponseInfo& info,
73 int32_t response) override;
74
75 virtual ndk::ScopedAStatus getIccCardStatusResponse(const RadioResponseInfo& info,
76 const CardStatus& cardStatus) override;
77
78 virtual ndk::ScopedAStatus getImsiForAppResponse(const RadioResponseInfo& info,
79 const std::string& imsi) override;
80
81 virtual ndk::ScopedAStatus getSimPhonebookCapacityResponse(
82 const RadioResponseInfo& info, const PhonebookCapacity& capacity) override;
83
84 virtual ndk::ScopedAStatus getSimPhonebookRecordsResponse(
85 const RadioResponseInfo& info) override;
86
87 virtual ndk::ScopedAStatus iccCloseLogicalChannelResponse(
88 const RadioResponseInfo& info) override;
89
Muralidhar Reddyc13d0d62023-01-18 18:45:14 +000090 virtual ndk::ScopedAStatus iccCloseLogicalChannelWithSessionInfoResponse(
91 const RadioResponseInfo& info) override;
92
Sarah Chinfc5603b2021-12-21 11:34:00 -080093 virtual ndk::ScopedAStatus iccIoForAppResponse(const RadioResponseInfo& info,
94 const IccIoResult& iccIo) override;
95
96 virtual ndk::ScopedAStatus iccOpenLogicalChannelResponse(
97 const RadioResponseInfo& info, int32_t channelId,
98 const std::vector<uint8_t>& selectResponse) override;
99
100 virtual ndk::ScopedAStatus iccTransmitApduBasicChannelResponse(
101 const RadioResponseInfo& info, const IccIoResult& result) override;
102
103 virtual ndk::ScopedAStatus iccTransmitApduLogicalChannelResponse(
104 const RadioResponseInfo& info, const IccIoResult& result) override;
105
106 virtual ndk::ScopedAStatus reportStkServiceIsRunningResponse(
107 const RadioResponseInfo& info) override;
108
109 virtual ndk::ScopedAStatus requestIccSimAuthenticationResponse(
110 const RadioResponseInfo& info, const IccIoResult& result) override;
111
112 virtual ndk::ScopedAStatus sendEnvelopeResponse(const RadioResponseInfo& info,
113 const std::string& commandResponse) override;
114
115 virtual ndk::ScopedAStatus sendEnvelopeWithStatusResponse(const RadioResponseInfo& info,
116 const IccIoResult& iccIo) override;
117
118 virtual ndk::ScopedAStatus sendTerminalResponseToSimResponse(
119 const RadioResponseInfo& info) override;
120
121 virtual ndk::ScopedAStatus setAllowedCarriersResponse(const RadioResponseInfo& info) override;
122
123 virtual ndk::ScopedAStatus setCarrierInfoForImsiEncryptionResponse(
124 const RadioResponseInfo& info) override;
125
126 virtual ndk::ScopedAStatus setCdmaSubscriptionSourceResponse(
127 const RadioResponseInfo& info) override;
128
129 virtual ndk::ScopedAStatus setFacilityLockForAppResponse(const RadioResponseInfo& info,
130 int32_t retry) override;
131
132 virtual ndk::ScopedAStatus setSimCardPowerResponse(const RadioResponseInfo& info) override;
133
134 virtual ndk::ScopedAStatus setUiccSubscriptionResponse(const RadioResponseInfo& info) override;
135
136 virtual ndk::ScopedAStatus supplyIccPin2ForAppResponse(const RadioResponseInfo& info,
137 int32_t remainingRetries) override;
138
139 virtual ndk::ScopedAStatus supplyIccPinForAppResponse(const RadioResponseInfo& info,
140 int32_t remainingRetries) override;
141
142 virtual ndk::ScopedAStatus supplyIccPuk2ForAppResponse(const RadioResponseInfo& info,
143 int32_t remainingRetries) override;
144
145 virtual ndk::ScopedAStatus supplyIccPukForAppResponse(const RadioResponseInfo& info,
146 int32_t remainingRetries) override;
147
148 virtual ndk::ScopedAStatus supplySimDepersonalizationResponse(
149 const RadioResponseInfo& info, PersoSubstate persoType,
150 int32_t remainingRetries) override;
151
152 virtual ndk::ScopedAStatus updateSimPhonebookRecordsResponse(
153 const RadioResponseInfo& info, int32_t updatedRecordIndex) override;
154};
155
156/* Callback class for radio SIM indication */
157class RadioSimIndication : public BnRadioSimIndication {
158 protected:
Sarah Chinc83bce42021-12-29 00:35:12 -0800159 RadioServiceTest& parent_sim;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800160
161 public:
Sarah Chinc83bce42021-12-29 00:35:12 -0800162 RadioSimIndication(RadioServiceTest& parent_sim);
Sarah Chinfc5603b2021-12-21 11:34:00 -0800163 virtual ~RadioSimIndication() = default;
164
165 virtual ndk::ScopedAStatus carrierInfoForImsiEncryption(RadioIndicationType info) override;
166
167 virtual ndk::ScopedAStatus cdmaSubscriptionSourceChanged(
168 RadioIndicationType type, CdmaSubscriptionSource cdmaSource) override;
169
170 virtual ndk::ScopedAStatus simPhonebookChanged(RadioIndicationType type) override;
171
172 virtual ndk::ScopedAStatus simPhonebookRecordsReceived(
173 RadioIndicationType type, PbReceivedStatus status,
174 const std::vector<PhonebookRecordInfo>& records) override;
175
176 virtual ndk::ScopedAStatus simRefresh(RadioIndicationType type,
177 const SimRefreshResult& refreshResult) override;
178
179 virtual ndk::ScopedAStatus simStatusChanged(RadioIndicationType type) override;
180
181 virtual ndk::ScopedAStatus stkEventNotify(RadioIndicationType type,
182 const std::string& cmd) override;
183
184 virtual ndk::ScopedAStatus stkProactiveCommand(RadioIndicationType type,
185 const std::string& cmd) override;
186
187 virtual ndk::ScopedAStatus stkSessionEnd(RadioIndicationType type) override;
188
189 virtual ndk::ScopedAStatus subscriptionStatusChanged(RadioIndicationType type,
190 bool activate) override;
191
192 virtual ndk::ScopedAStatus uiccApplicationsEnablementChanged(RadioIndicationType type,
193 bool enabled) override;
194};
195
196// The main test class for Radio AIDL SIM.
Sarah China1efe7a2023-05-02 21:11:41 -0700197class RadioSimTest : public RadioServiceTest {
Sarah Chinfc5603b2021-12-21 11:34:00 -0800198 public:
Sarah China1efe7a2023-05-02 21:11:41 -0700199 void SetUp() override;
Sarah Chinfc5603b2021-12-21 11:34:00 -0800200
Sarah Chinc83bce42021-12-29 00:35:12 -0800201 /* Override updateSimCardStatus in RadioServiceTest to not call setResponseFunctions */
202 void updateSimCardStatus();
203
204 /* radio SIM service handle in RadioServiceTest */
Sarah Chinfc5603b2021-12-21 11:34:00 -0800205 /* radio SIM response handle */
206 std::shared_ptr<RadioSimResponse> radioRsp_sim;
207 /* radio SIM indication handle */
208 std::shared_ptr<RadioSimIndication> radioInd_sim;
209};