blob: 00db2b87187375649fd11c99d5c108bb02283d29 [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 "structs.h"
18
19#include "commonStructs.h"
20
21#include "collections.h"
22
23#include <android-base/logging.h>
24
25namespace android::hardware::radio::compat {
26
27namespace aidl = ::aidl::android::hardware::radio::sim;
28
29V1_0::IccIo toHidl(const aidl::IccIo& icc) {
30 return {
31 .command = icc.command,
32 .fileId = icc.fileId,
33 .path = icc.path,
34 .p1 = icc.p1,
35 .p2 = icc.p2,
36 .p3 = icc.p3,
37 .data = icc.data,
38 .pin2 = icc.pin2,
39 .aid = icc.aid,
40 };
41}
42
43V1_0::SimApdu toHidl(const aidl::SimApdu& apdu) {
44 return {
45 .sessionId = apdu.sessionId,
46 .cla = apdu.cla,
47 .instruction = apdu.instruction,
48 .p1 = apdu.p1,
49 .p2 = apdu.p2,
50 .p3 = apdu.p3,
51 .data = apdu.data,
52 };
53}
54
55aidl::Carrier toAidl(const V1_0::Carrier& carrier) {
56 return {
57 .mcc = carrier.mcc,
58 .mnc = carrier.mnc,
59 .matchType = static_cast<int32_t>(carrier.matchType),
60 .matchData = carrier.matchData,
61 };
62}
63
64V1_0::Carrier toHidl(const aidl::Carrier& carrier) {
65 return {
66 .mcc = carrier.mcc,
67 .mnc = carrier.mnc,
Tomasz Wasilczykb542add2022-08-08 19:04:26 +000068 .matchType = static_cast<V1_0::CarrierMatchType>(carrier.matchType),
Tomasz Wasilczyk7f51a9a2021-10-28 13:22:47 -070069 .matchData = carrier.matchData,
70 };
71}
72
73aidl::CarrierRestrictions toAidl(const V1_0::CarrierRestrictions& cr) {
74 return {
75 .allowedCarriers = toAidl(cr.allowedCarriers),
76 .excludedCarriers = toAidl(cr.excludedCarriers),
77 .allowedCarriersPrioritized = true,
78 };
79}
80
81aidl::CarrierRestrictions toAidl(const V1_4::CarrierRestrictionsWithPriority& cr) {
82 return {
83 .allowedCarriers = toAidl(cr.allowedCarriers),
84 .excludedCarriers = toAidl(cr.excludedCarriers),
85 .allowedCarriersPrioritized = cr.allowedCarriersPrioritized,
86 };
87}
88
89V1_4::CarrierRestrictionsWithPriority toHidl(const aidl::CarrierRestrictions& cr) {
90 return {
91 .allowedCarriers = toHidl(cr.allowedCarriers),
92 .excludedCarriers = toHidl(cr.excludedCarriers),
93 .allowedCarriersPrioritized = cr.allowedCarriersPrioritized,
94 };
95}
96
97V1_1::ImsiEncryptionInfo toHidl(const aidl::ImsiEncryptionInfo& info) {
98 return {
99 .mcc = info.mcc,
100 .mnc = info.mnc,
101 .carrierKey = info.carrierKey,
102 .keyIdentifier = info.keyIdentifier,
103 .expirationTime = info.expirationTime,
104 };
105}
106
107V1_6::ImsiEncryptionInfo toHidl_1_6(const aidl::ImsiEncryptionInfo& info) {
108 return {
109 .base = toHidl(info),
Tomasz Wasilczykb542add2022-08-08 19:04:26 +0000110 .keyType = static_cast<V1_6::PublicKeyType>(info.keyType),
Tomasz Wasilczyk7f51a9a2021-10-28 13:22:47 -0700111 };
112}
113
114V1_0::SelectUiccSub toHidl(const aidl::SelectUiccSub& sub) {
115 return {
116 .slot = sub.slot,
117 .appIndex = sub.appIndex,
118 .subType = {},
119 .actStatus = {},
120 };
121}
122
123aidl::PhonebookRecordInfo toAidl(const V1_6::PhonebookRecordInfo& info) {
124 return {
125 .recordId = static_cast<int32_t>(info.recordId),
126 .name = info.name,
127 .number = info.number,
128 .emails = toAidl(info.emails),
129 .additionalNumbers = toAidl(info.additionalNumbers),
130 };
131}
132
133V1_6::PhonebookRecordInfo toHidl(const aidl::PhonebookRecordInfo& info) {
134 return {
135 .recordId = static_cast<uint32_t>(info.recordId),
136 .name = info.name,
137 .number = info.number,
138 .emails = toHidl(info.emails),
139 .additionalNumbers = toHidl(info.additionalNumbers),
140 };
141}
142
143aidl::SimRefreshResult toAidl(const V1_0::SimRefreshResult& res) {
144 return {
145 .type = static_cast<int32_t>(res.type),
146 .efId = res.efId,
147 .aid = res.aid,
148 };
149}
150
151aidl::CardStatus toAidl(const V1_0::CardStatus& status) {
152 return toAidl(V1_2::CardStatus{status, 0, "", ""});
153}
154
155aidl::CardStatus toAidl(const V1_2::CardStatus& status) {
156 return toAidl(V1_4::CardStatus{status, ""});
157}
158
159aidl::CardStatus toAidl(const V1_4::CardStatus& status) {
160 auto aidlStatus = toAidl(V1_5::CardStatus{status, {}});
161 aidlStatus.applications = toAidl(status.base.base.applications);
162 return aidlStatus;
163}
164
165aidl::CardStatus toAidl(const V1_5::CardStatus& status) {
166 return {
167 .cardState = static_cast<int32_t>(status.base.base.base.cardState),
168 .universalPinState = aidl::PinState(status.base.base.base.universalPinState),
169 .gsmUmtsSubscriptionAppIndex = status.base.base.base.gsmUmtsSubscriptionAppIndex,
170 .cdmaSubscriptionAppIndex = status.base.base.base.cdmaSubscriptionAppIndex,
171 .imsSubscriptionAppIndex = status.base.base.base.imsSubscriptionAppIndex,
172 .applications = toAidl(status.applications),
173 .atr = status.base.base.atr,
174 .iccid = status.base.base.iccid,
175 .eid = status.base.eid,
Tomasz Wasilczyk7f51a9a2021-10-28 13:22:47 -0700176 .slotMap = {static_cast<int32_t>(status.base.base.physicalSlotId), 0},
177 };
178}
179
180aidl::AppStatus toAidl(const V1_0::AppStatus& status) {
181 return toAidl({status, V1_5::PersoSubstate(status.persoSubstate)});
182}
183
184aidl::AppStatus toAidl(const V1_5::AppStatus& status) {
185 return {
186 .appType = static_cast<int32_t>(status.base.appType),
187 .appState = static_cast<int32_t>(status.base.appState),
188 .persoSubstate = aidl::PersoSubstate(status.persoSubstate),
189 .aidPtr = status.base.aidPtr,
190 .appLabelPtr = status.base.appLabelPtr,
191 .pin1Replaced = (status.base.pin1Replaced != 0),
192 .pin1 = aidl::PinState(status.base.pin1),
193 .pin2 = aidl::PinState(status.base.pin2),
194 };
195}
196
197aidl::PhonebookCapacity toAidl(const V1_6::PhonebookCapacity& c) {
198 return {
199 .maxAdnRecords = c.maxAdnRecords,
200 .usedAdnRecords = c.usedAdnRecords,
201 .maxEmailRecords = c.maxEmailRecords,
202 .usedEmailRecords = c.usedEmailRecords,
203 .maxAdditionalNumberRecords = c.maxAdditionalNumberRecords,
204 .usedAdditionalNumberRecords = c.usedAdditionalNumberRecords,
205 .maxNameLen = c.maxNameLen,
206 .maxNumberLen = c.maxNumberLen,
207 .maxEmailLen = c.maxEmailLen,
208 .maxAdditionalNumberLen = c.maxAdditionalNumberLen,
209 };
210}
211
212aidl::IccIoResult toAidl(const V1_0::IccIoResult& iir) {
213 return {
214 .sw1 = iir.sw1,
215 .sw2 = iir.sw2,
216 .simResponse = iir.simResponse,
217 };
218}
219
220} // namespace android::hardware::radio::compat