blob: 2dfbc50fcd16f18834953a7aa4bfa15e784c3cc7 [file] [log] [blame]
Tomasz Wasilczyk7f51a9a2021-10-28 13:22:47 -07001/*
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#include <libradiocompat/RadioResponse.h>
18
19#include "commonStructs.h"
20#include "debug.h"
21#include "structs.h"
22
23#include "collections.h"
24
25#define RADIO_MODULE "SimResponse"
26
27namespace android::hardware::radio::compat {
28
29namespace aidl = ::aidl::android::hardware::radio::sim;
30
31void RadioResponse::setResponseFunction(std::shared_ptr<aidl::IRadioSimResponse> simCb) {
32 CHECK(simCb);
33 mSimCb = simCb;
34}
35
36Return<void> RadioResponse::areUiccApplicationsEnabledResponse(const V1_0::RadioResponseInfo& info,
37 bool enabled) {
38 LOG_CALL << info.serial;
39 CHECK_CB(mSimCb);
40 mSimCb->areUiccApplicationsEnabledResponse(toAidl(info), enabled);
41 return {};
42}
43
44Return<void> RadioResponse::changeIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info,
45 int32_t remainingRetries) {
46 LOG_CALL << info.serial;
47 CHECK_CB(mSimCb);
48 mSimCb->changeIccPin2ForAppResponse(toAidl(info), remainingRetries);
49 return {};
50}
51
52Return<void> RadioResponse::changeIccPinForAppResponse(const V1_0::RadioResponseInfo& info,
53 int32_t remainingRetries) {
54 LOG_CALL << info.serial;
55 CHECK_CB(mSimCb);
56 mSimCb->changeIccPinForAppResponse(toAidl(info), remainingRetries);
57 return {};
58}
59
60Return<void> RadioResponse::enableUiccApplicationsResponse(const V1_0::RadioResponseInfo& info) {
61 LOG_CALL << info.serial;
62 CHECK_CB(mSimCb);
63 mSimCb->enableUiccApplicationsResponse(toAidl(info));
64 return {};
65}
66
67Return<void> RadioResponse::getAllowedCarriersResponse( //
68 const V1_0::RadioResponseInfo& info, bool allAllowed, const V1_0::CarrierRestrictions& cr) {
69 LOG_CALL << info.serial;
70 CHECK_CB(mSimCb);
71 aidl::CarrierRestrictions aidlCr = toAidl(cr);
72 if (allAllowed) aidlCr = {};
73 mSimCb->getAllowedCarriersResponse(toAidl(info), aidlCr, {});
74 return {};
75}
76
77Return<void> RadioResponse::getAllowedCarriersResponse_1_4(
78 const V1_0::RadioResponseInfo& info, const V1_4::CarrierRestrictionsWithPriority& carriers,
79 V1_4::SimLockMultiSimPolicy multiSimPolicy) {
80 LOG_CALL << info.serial;
81 CHECK_CB(mSimCb);
82 mSimCb->getAllowedCarriersResponse(toAidl(info), toAidl(carriers),
83 aidl::SimLockMultiSimPolicy(multiSimPolicy));
84 return {};
85}
86
87Return<void> RadioResponse::getCDMASubscriptionResponse(
88 const V1_0::RadioResponseInfo& info, const hidl_string& mdn, const hidl_string& hSid,
89 const hidl_string& hNid, const hidl_string& min, const hidl_string& prl) {
90 LOG_CALL << info.serial;
91 CHECK_CB(mSimCb);
92 mSimCb->getCdmaSubscriptionResponse(toAidl(info), mdn, hSid, hNid, min, prl);
93 return {};
94}
95
96Return<void> RadioResponse::getCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info,
97 V1_0::CdmaSubscriptionSource s) {
98 LOG_CALL << info.serial;
99 CHECK_CB(mSimCb);
100 mSimCb->getCdmaSubscriptionSourceResponse(toAidl(info), aidl::CdmaSubscriptionSource(s));
101 return {};
102}
103
104Return<void> RadioResponse::getFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info,
105 int32_t response) {
106 LOG_CALL << info.serial;
107 CHECK_CB(mSimCb);
108 mSimCb->getFacilityLockForAppResponse(toAidl(info), response);
109 return {};
110}
111
112Return<void> RadioResponse::getIccCardStatusResponse(const V1_0::RadioResponseInfo& info,
113 const V1_0::CardStatus& cardStatus) {
114 LOG_CALL << info.serial;
115 CHECK_CB(mSimCb);
116 mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus));
117 return {};
118}
119
120Return<void> RadioResponse::getIccCardStatusResponse_1_2(const V1_0::RadioResponseInfo& info,
121 const V1_2::CardStatus& cardStatus) {
122 LOG_CALL << info.serial;
123 CHECK_CB(mSimCb);
124 mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus));
125 return {};
126}
127
128Return<void> RadioResponse::getIccCardStatusResponse_1_4(const V1_0::RadioResponseInfo& info,
129 const V1_4::CardStatus& cardStatus) {
130 LOG_CALL << info.serial;
131 CHECK_CB(mSimCb);
132 mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus));
133 return {};
134}
135
136Return<void> RadioResponse::getIccCardStatusResponse_1_5(const V1_0::RadioResponseInfo& info,
137 const V1_5::CardStatus& cardStatus) {
138 LOG_CALL << info.serial;
139 CHECK_CB(mSimCb);
140 mSimCb->getIccCardStatusResponse(toAidl(info), toAidl(cardStatus));
141 return {};
142}
143
144Return<void> RadioResponse::getIMSIForAppResponse(const V1_0::RadioResponseInfo& info,
145 const hidl_string& imsi) {
146 LOG_CALL << info.serial;
147 CHECK_CB(mSimCb);
148 mSimCb->getImsiForAppResponse(toAidl(info), imsi);
149 return {};
150}
151
152Return<void> RadioResponse::getSimPhonebookCapacityResponse(
153 const V1_6::RadioResponseInfo& info, const V1_6::PhonebookCapacity& capacity) {
154 LOG_CALL << info.serial;
155 CHECK_CB(mSimCb);
156 mSimCb->getSimPhonebookCapacityResponse(toAidl(info), toAidl(capacity));
157 return {};
158}
159
160Return<void> RadioResponse::getSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info) {
161 LOG_CALL << info.serial;
162 CHECK_CB(mSimCb);
163 mSimCb->getSimPhonebookRecordsResponse(toAidl(info));
164 return {};
165}
166
167Return<void> RadioResponse::iccCloseLogicalChannelResponse(const V1_0::RadioResponseInfo& info) {
168 LOG_CALL << info.serial;
169 CHECK_CB(mSimCb);
170 mSimCb->iccCloseLogicalChannelResponse(toAidl(info));
171 return {};
172}
173
174Return<void> RadioResponse::iccIOForAppResponse(const V1_0::RadioResponseInfo& info,
175 const V1_0::IccIoResult& iccIo) {
176 LOG_CALL << info.serial;
177 CHECK_CB(mSimCb);
178 mSimCb->iccIoForAppResponse(toAidl(info), toAidl(iccIo));
179 return {};
180}
181
182Return<void> RadioResponse::iccOpenLogicalChannelResponse( //
183 const V1_0::RadioResponseInfo& info, int32_t chanId, const hidl_vec<int8_t>& selectResp) {
184 LOG_CALL << info.serial;
185 CHECK_CB(mSimCb);
186 mSimCb->iccOpenLogicalChannelResponse(toAidl(info), chanId, toAidl(selectResp));
187 return {};
188}
189
190Return<void> RadioResponse::iccTransmitApduBasicChannelResponse(const V1_0::RadioResponseInfo& info,
191 const V1_0::IccIoResult& result) {
192 LOG_CALL << info.serial;
193 CHECK_CB(mSimCb);
194 mSimCb->iccTransmitApduBasicChannelResponse(toAidl(info), toAidl(result));
195 return {};
196}
197
198Return<void> RadioResponse::iccTransmitApduLogicalChannelResponse(
199 const V1_0::RadioResponseInfo& info, const V1_0::IccIoResult& result) {
200 LOG_CALL << info.serial;
201 CHECK_CB(mSimCb);
202 mSimCb->iccTransmitApduLogicalChannelResponse(toAidl(info), toAidl(result));
203 return {};
204}
205
206Return<void> RadioResponse::reportStkServiceIsRunningResponse(const V1_0::RadioResponseInfo& info) {
207 LOG_CALL << info.serial;
208 CHECK_CB(mSimCb);
209 mSimCb->reportStkServiceIsRunningResponse(toAidl(info));
210 return {};
211}
212
213Return<void> RadioResponse::requestIccSimAuthenticationResponse(const V1_0::RadioResponseInfo& info,
214 const V1_0::IccIoResult& result) {
215 LOG_CALL << info.serial;
216 CHECK_CB(mSimCb);
217 mSimCb->requestIccSimAuthenticationResponse(toAidl(info), toAidl(result));
218 return {};
219}
220
221Return<void> RadioResponse::requestIsimAuthenticationResponse(const V1_0::RadioResponseInfo& info,
222 const hidl_string&) {
223 LOG_CALL << info.serial;
224 LOG(ERROR) << "requestIsimAuthenticationResponse is not supposed to be called";
225 return {};
226}
227
228Return<void> RadioResponse::sendEnvelopeResponse(const V1_0::RadioResponseInfo& info,
229 const hidl_string& commandResponse) {
230 LOG_CALL << info.serial;
231 CHECK_CB(mSimCb);
232 mSimCb->sendEnvelopeResponse(toAidl(info), commandResponse);
233 return {};
234}
235
236Return<void> RadioResponse::sendEnvelopeWithStatusResponse(const V1_0::RadioResponseInfo& info,
237 const V1_0::IccIoResult& iccIo) {
238 LOG_CALL << info.serial;
239 CHECK_CB(mSimCb);
240 mSimCb->sendEnvelopeWithStatusResponse(toAidl(info), toAidl(iccIo));
241 return {};
242}
243
244Return<void> RadioResponse::sendTerminalResponseToSimResponse(const V1_0::RadioResponseInfo& info) {
245 LOG_CALL << info.serial;
246 CHECK_CB(mSimCb);
247 mSimCb->sendTerminalResponseToSimResponse(toAidl(info));
248 return {};
249}
250
251Return<void> RadioResponse::setAllowedCarriersResponse(const V1_0::RadioResponseInfo& info,
252 int32_t numAllowed) {
253 LOG_CALL << info.serial << ' ' << numAllowed;
254 CHECK_CB(mSimCb);
255 mSimCb->setAllowedCarriersResponse(toAidl(info));
256 return {};
257}
258
259Return<void> RadioResponse::setAllowedCarriersResponse_1_4(const V1_0::RadioResponseInfo& info) {
260 LOG_CALL << info.serial;
261 CHECK_CB(mSimCb);
262 mSimCb->setAllowedCarriersResponse(toAidl(info));
263 return {};
264}
265
266Return<void> RadioResponse::setCarrierInfoForImsiEncryptionResponse(
267 const V1_0::RadioResponseInfo& info) {
268 LOG_CALL << info.serial;
269 CHECK_CB(mSimCb);
270 mSimCb->setCarrierInfoForImsiEncryptionResponse(toAidl(info));
271 return {};
272}
273
274Return<void> RadioResponse::setCdmaSubscriptionSourceResponse(const V1_0::RadioResponseInfo& info) {
275 LOG_CALL << info.serial;
276 CHECK_CB(mSimCb);
277 mSimCb->setCdmaSubscriptionSourceResponse(toAidl(info));
278 return {};
279}
280
281Return<void> RadioResponse::setFacilityLockForAppResponse(const V1_0::RadioResponseInfo& info,
282 int32_t retry) {
283 LOG_CALL << info.serial;
284 CHECK_CB(mSimCb);
285 mSimCb->setFacilityLockForAppResponse(toAidl(info), retry);
286 return {};
287}
288
289Return<void> RadioResponse::setSimCardPowerResponse(const V1_0::RadioResponseInfo& info) {
290 LOG_CALL << info.serial;
291 CHECK_CB(mSimCb);
292 mSimCb->setSimCardPowerResponse(toAidl(info));
293 return {};
294}
295
296Return<void> RadioResponse::setSimCardPowerResponse_1_1(const V1_0::RadioResponseInfo& info) {
297 LOG_CALL << info.serial;
298 CHECK_CB(mSimCb);
299 mSimCb->setSimCardPowerResponse(toAidl(info));
300 return {};
301}
302
303Return<void> RadioResponse::setSimCardPowerResponse_1_6(const V1_6::RadioResponseInfo& info) {
304 LOG_CALL << info.serial;
305 CHECK_CB(mSimCb);
306 mSimCb->setSimCardPowerResponse(toAidl(info));
307 return {};
308}
309
310Return<void> RadioResponse::setUiccSubscriptionResponse(const V1_0::RadioResponseInfo& info) {
311 LOG_CALL << info.serial;
312 CHECK_CB(mSimCb);
313 mSimCb->setUiccSubscriptionResponse(toAidl(info));
314 return {};
315}
316
317Return<void> RadioResponse::supplyIccPin2ForAppResponse(const V1_0::RadioResponseInfo& info,
318 int32_t remainingRetries) {
319 LOG_CALL << info.serial;
320 CHECK_CB(mSimCb);
321 mSimCb->supplyIccPin2ForAppResponse(toAidl(info), remainingRetries);
322 return {};
323}
324
325Return<void> RadioResponse::supplyIccPinForAppResponse(const V1_0::RadioResponseInfo& info,
326 int32_t remainingRetries) {
327 LOG_CALL << info.serial;
328 CHECK_CB(mSimCb);
329 mSimCb->supplyIccPinForAppResponse(toAidl(info), remainingRetries);
330 return {};
331}
332
333Return<void> RadioResponse::supplyIccPuk2ForAppResponse(const V1_0::RadioResponseInfo& info,
334 int32_t remainingRetries) {
335 LOG_CALL << info.serial;
336 CHECK_CB(mSimCb);
337 mSimCb->supplyIccPuk2ForAppResponse(toAidl(info), remainingRetries);
338 return {};
339}
340
341Return<void> RadioResponse::supplyIccPukForAppResponse(const V1_0::RadioResponseInfo& info,
342 int32_t remainingRetries) {
343 LOG_CALL << info.serial;
344 CHECK_CB(mSimCb);
345 mSimCb->supplyIccPukForAppResponse(toAidl(info), remainingRetries);
346 return {};
347}
348
349Return<void> RadioResponse::supplySimDepersonalizationResponse(const V1_0::RadioResponseInfo& info,
350 V1_5::PersoSubstate persoType,
351 int32_t rRet) {
352 LOG_CALL << info.serial;
353 CHECK_CB(mSimCb);
354 mSimCb->supplySimDepersonalizationResponse(toAidl(info), aidl::PersoSubstate(persoType), rRet);
355 return {};
356}
357
358Return<void> RadioResponse::updateSimPhonebookRecordsResponse(const V1_6::RadioResponseInfo& info,
359 int32_t updatedRecordIndex) {
360 LOG_CALL << info.serial;
361 CHECK_CB(mSimCb);
362 mSimCb->updateSimPhonebookRecordsResponse(toAidl(info), updatedRecordIndex);
363 return {};
364}
365
366} // namespace android::hardware::radio::compat