1 /* 2 * Copyright (C) 2019 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 //#define LOG_NDEBUG 0 18 #define LOG_TAG "android.hardware.cas@1.1-TypeConvert" 19 20 #include "TypeConvert.h" 21 #include <utils/Log.h> 22 23 namespace android { 24 namespace hardware { 25 namespace cas { 26 namespace V1_1 { 27 namespace implementation { 28 toStatus(status_t legacyStatus)29Status toStatus(status_t legacyStatus) { 30 Status status; 31 switch (legacyStatus) { 32 case android::OK: 33 status = Status::OK; 34 break; 35 case android::ERROR_CAS_NO_LICENSE: 36 status = Status::ERROR_CAS_NO_LICENSE; 37 break; 38 case android::ERROR_CAS_LICENSE_EXPIRED: 39 status = Status::ERROR_CAS_LICENSE_EXPIRED; 40 break; 41 case android::ERROR_CAS_SESSION_NOT_OPENED: 42 status = Status::ERROR_CAS_SESSION_NOT_OPENED; 43 break; 44 case android::ERROR_CAS_CANNOT_HANDLE: 45 status = Status::ERROR_CAS_CANNOT_HANDLE; 46 break; 47 case android::ERROR_CAS_TAMPER_DETECTED: 48 status = Status::ERROR_CAS_INVALID_STATE; 49 break; 50 case android::BAD_VALUE: 51 status = Status::BAD_VALUE; 52 break; 53 case android::ERROR_CAS_NOT_PROVISIONED: 54 status = Status::ERROR_CAS_NOT_PROVISIONED; 55 break; 56 case android::ERROR_CAS_RESOURCE_BUSY: 57 status = Status::ERROR_CAS_RESOURCE_BUSY; 58 break; 59 case android::ERROR_CAS_INSUFFICIENT_OUTPUT_PROTECTION: 60 status = Status::ERROR_CAS_INSUFFICIENT_OUTPUT_PROTECTION; 61 break; 62 case android::ERROR_CAS_DEVICE_REVOKED: 63 status = Status::ERROR_CAS_DEVICE_REVOKED; 64 break; 65 case android::ERROR_CAS_DECRYPT_UNIT_NOT_INITIALIZED: 66 status = Status::ERROR_CAS_DECRYPT_UNIT_NOT_INITIALIZED; 67 break; 68 case android::ERROR_CAS_DECRYPT: 69 status = Status::ERROR_CAS_DECRYPT; 70 break; 71 default: 72 ALOGW("Unable to convert legacy status: %d, defaulting to UNKNOWN", legacyStatus); 73 status = Status::ERROR_CAS_UNKNOWN; 74 break; 75 } 76 return status; 77 } 78 toStatus_1_2(status_t legacyStatus)79V1_2::Status toStatus_1_2(status_t legacyStatus) { 80 V1_2::Status status = static_cast<V1_2::Status>(toStatus(legacyStatus)); 81 if (status == V1_2::Status::ERROR_CAS_UNKNOWN) { 82 switch (legacyStatus) { 83 case android::ERROR_CAS_NEED_ACTIVATION: 84 status = V1_2::Status::ERROR_CAS_NEED_ACTIVATION; 85 break; 86 case android::ERROR_CAS_NEED_PAIRING: 87 status = V1_2::Status::ERROR_CAS_NEED_PAIRING; 88 break; 89 case android::ERROR_CAS_NO_CARD: 90 status = V1_2::Status::ERROR_CAS_NO_CARD; 91 break; 92 case android::ERROR_CAS_CARD_MUTE: 93 status = V1_2::Status::ERROR_CAS_CARD_MUTE; 94 break; 95 case android::ERROR_CAS_CARD_INVALID: 96 status = V1_2::Status::ERROR_CAS_CARD_INVALID; 97 break; 98 case android::ERROR_CAS_BLACKOUT: 99 status = V1_2::Status::ERROR_CAS_BLACKOUT; 100 break; 101 } 102 } 103 return status; 104 } 105 sessionIdToString(const CasSessionId & sessionId)106String8 sessionIdToString(const CasSessionId& sessionId) { 107 String8 result; 108 for (size_t i = 0; i < sessionId.size(); i++) { 109 result.appendFormat("%02x ", sessionId[i]); 110 } 111 if (result.isEmpty()) { 112 result.append("(null)"); 113 } 114 return result; 115 } 116 117 } // namespace implementation 118 } // namespace V1_1 119 } // namespace cas 120 } // namespace hardware 121 } // namespace android 122