Tomasz Wasilczyk | 7f51a9a | 2021-10-28 13:22:47 -0700 | [diff] [blame] | 1 | /* |
| 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 | |
| 25 | namespace android::hardware::radio::compat { |
| 26 | |
| 27 | namespace aidl = ::aidl::android::hardware::radio::sim; |
| 28 | |
| 29 | V1_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 | |
| 43 | V1_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 | |
| 55 | aidl::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 | |
| 64 | V1_0::Carrier toHidl(const aidl::Carrier& carrier) { |
| 65 | return { |
| 66 | .mcc = carrier.mcc, |
| 67 | .mnc = carrier.mnc, |
| 68 | .matchType = V1_0::CarrierMatchType{carrier.matchType}, |
| 69 | .matchData = carrier.matchData, |
| 70 | }; |
| 71 | } |
| 72 | |
| 73 | aidl::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 | |
| 81 | aidl::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 | |
| 89 | V1_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 | |
| 97 | V1_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 | |
| 107 | V1_6::ImsiEncryptionInfo toHidl_1_6(const aidl::ImsiEncryptionInfo& info) { |
| 108 | return { |
| 109 | .base = toHidl(info), |
| 110 | .keyType = V1_6::PublicKeyType{info.keyType}, |
| 111 | }; |
| 112 | } |
| 113 | |
| 114 | V1_0::SelectUiccSub toHidl(const aidl::SelectUiccSub& sub) { |
| 115 | return { |
| 116 | .slot = sub.slot, |
| 117 | .appIndex = sub.appIndex, |
| 118 | .subType = {}, |
| 119 | .actStatus = {}, |
| 120 | }; |
| 121 | } |
| 122 | |
| 123 | aidl::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 | |
| 133 | V1_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 | |
| 143 | aidl::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 | |
| 151 | aidl::CardStatus toAidl(const V1_0::CardStatus& status) { |
| 152 | return toAidl(V1_2::CardStatus{status, 0, "", ""}); |
| 153 | } |
| 154 | |
| 155 | aidl::CardStatus toAidl(const V1_2::CardStatus& status) { |
| 156 | return toAidl(V1_4::CardStatus{status, ""}); |
| 157 | } |
| 158 | |
| 159 | aidl::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 | |
| 165 | aidl::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 Wasilczyk | 7f51a9a | 2021-10-28 13:22:47 -0700 | [diff] [blame] | 176 | .slotMap = {static_cast<int32_t>(status.base.base.physicalSlotId), 0}, |
| 177 | }; |
| 178 | } |
| 179 | |
| 180 | aidl::AppStatus toAidl(const V1_0::AppStatus& status) { |
| 181 | return toAidl({status, V1_5::PersoSubstate(status.persoSubstate)}); |
| 182 | } |
| 183 | |
| 184 | aidl::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 | |
| 197 | aidl::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 | |
| 212 | aidl::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 |