Simple interface for Mbed Cloud Client
Embed:
(wiki syntax)
Show/hide line numbers
arm_uc_error.h
00001 // ---------------------------------------------------------------------------- 00002 // Copyright 2016-2017 ARM Ltd. 00003 // 00004 // SPDX-License-Identifier: Apache-2.0 00005 // 00006 // Licensed under the Apache License, Version 2.0 (the "License"); 00007 // you may not use this file except in compliance with the License. 00008 // You may obtain a copy of the License at 00009 // 00010 // http://www.apache.org/licenses/LICENSE-2.0 00011 // 00012 // Unless required by applicable law or agreed to in writing, software 00013 // distributed under the License is distributed on an "AS IS" BASIS, 00014 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 // See the License for the specific language governing permissions and 00016 // limitations under the License. 00017 // ---------------------------------------------------------------------------- 00018 00019 #ifndef ARM_UPDATE_ERROR_H 00020 #define ARM_UPDATE_ERROR_H 00021 00022 #include <stdint.h> 00023 00024 // Use two characters to form the 16bit module code 00025 #define TWO_CC(A,B) (((A) & 0xFF) | (((B) & 0xFF) << 8)) 00026 00027 #define MANIFEST_MANAGER_PREFIX TWO_CC('M','M') 00028 #define CERTIFICATE_MANAGER_PREFIX TWO_CC('C','M') 00029 #define SOURCE_MANAGER_PREFIX TWO_CC('S','M') 00030 #define SOURCE_PREFIX TWO_CC('S','E') 00031 #define FIRMWARE_MANAGER_PREFIX TWO_CC('F','M') 00032 #define DER_PARSER_PREFIX TWO_CC('D','P') 00033 #define MBED_TLS_ERROR_PREFIX TWO_CC('M','T') 00034 #define UPDATE_CRYPTO_PREFIX TWO_CC('C','U') 00035 #define DEVICE_IDENTITY_PREFIX TWO_CC('D','I') 00036 #define HUB_PREFIX TWO_CC('H','B') 00037 00038 #define ARM_UC_COMMON_ERR_LIST\ 00039 ENUM_FIXED(ERR_NONE,0)\ 00040 ENUM_AUTO(ERR_INVALID_PARAMETER)\ 00041 ENUM_AUTO(ERR_NOT_READY)\ 00042 00043 // Manifest manager 00044 #define ARM_UC_MM_ERR_LIST\ 00045 ENUM_FIXED(MFST_ERR_NONE, MANIFEST_MANAGER_PREFIX << 16)\ 00046 ENUM_AUTO(MFST_ERR_NULL_PTR)\ 00047 ENUM_AUTO(MFST_ERR_PENDING)\ 00048 ENUM_AUTO(MFST_ERR_SIZE)\ 00049 ENUM_AUTO(MFST_ERR_DER_FORMAT)\ 00050 ENUM_AUTO(MFST_ERR_FORMAT)\ 00051 ENUM_AUTO(MFST_ERR_VERSION)\ 00052 ENUM_AUTO(MFST_ERR_ROLLBACK)\ 00053 ENUM_AUTO(MFST_ERR_CRYPTO_MODE)\ 00054 ENUM_AUTO(MFST_ERR_HASH)\ 00055 ENUM_AUTO(MFST_ERR_GUID_VENDOR)\ 00056 ENUM_AUTO(MFST_ERR_GUID_DEVCLASS)\ 00057 ENUM_AUTO(MFST_ERR_GUID_DEVICE)\ 00058 ENUM_AUTO(MFST_ERR_CFG_CREATE_FAILED)\ 00059 ENUM_AUTO(MFST_ERR_KEY_SIZE)\ 00060 ENUM_AUTO(MFST_ERR_CERT_INVALID)\ 00061 ENUM_AUTO(MFST_ERR_CERT_NOT_FOUND)\ 00062 ENUM_AUTO(MFST_ERR_CERT_READ)\ 00063 ENUM_AUTO(MFST_ERR_INVALID_SIGNATURE)\ 00064 ENUM_AUTO(MFST_ERR_INVALID_STATE)\ 00065 ENUM_AUTO(MFST_ERR_BAD_EVENT)\ 00066 ENUM_AUTO(MFST_ERR_EMPTY_FIELD)\ 00067 ENUM_AUTO(MFST_ERR_NO_MANIFEST)\ 00068 ENUM_AUTO(MFST_ERR_SIGNATURE_ALGORITHM)\ 00069 ENUM_AUTO(MFST_ERR_UNSUPPORTED_CONDITION)\ 00070 ENUM_AUTO(MFST_ERR_CTR_IV_SIZE)\ 00071 ENUM_AUTO(MFST_ERR_BAD_KEYTABLE_REF)\ 00072 ENUM_AUTO(MFST_ERR_BAD_KEYTABLE)\ 00073 00074 // Certificate Manager 00075 #define ARM_UC_CM_ERR_LIST\ 00076 ENUM_FIXED(ARM_UC_CM_ERR_NONE, CERTIFICATE_MANAGER_PREFIX << 16)\ 00077 ENUM_AUTO(ARM_UC_CM_ERR_INVALID_PARAMETER)\ 00078 ENUM_AUTO(ARM_UC_CM_ERR_NOT_FOUND)\ 00079 ENUM_AUTO(ARM_UC_CM_ERR_INVALID_CERT)\ 00080 ENUM_AUTO(ARM_UC_CM_ERR_BLACKLISTED)\ 00081 00082 // DER Parser 00083 #define ARM_UC_DP_ERR_LIST\ 00084 ENUM_FIXED(ARM_UC_DP_ERR_NONE, DER_PARSER_PREFIX << 16)\ 00085 ENUM_AUTO(ARM_UC_DP_ERR_UNKNOWN)\ 00086 ENUM_AUTO(ARM_UC_DP_ERR_NOT_FOUND)\ 00087 ENUM_AUTO(ARM_UC_DP_ERR_NO_MORE_ELEMENTS)\ 00088 00089 // Source Manager 00090 #define ARM_UC_SM_ERR_LIST\ 00091 ENUM_FIXED(SOMA_ERR_NONE, SOURCE_MANAGER_PREFIX << 16)\ 00092 ENUM_AUTO(SOMA_ERR_NO_ROUTE_TO_SOURCE)\ 00093 ENUM_AUTO(SOMA_ERR_SOURCE_REGISTRY_FULL)\ 00094 ENUM_AUTO(SOMA_ERR_SOURCE_NOT_FOUND)\ 00095 ENUM_AUTO(SOMA_ERR_INVALID_PARAMETER) 00096 00097 // Source 00098 #define ARM_UC_SRC_ERR_LIST\ 00099 ENUM_FIXED(SRCE_ERR_NONE, SOURCE_PREFIX << 16)\ 00100 ENUM_AUTO(SRCE_ERR_UNINITIALIZED)\ 00101 ENUM_AUTO(SRCE_ERR_INVALID_PARAMETER)\ 00102 ENUM_AUTO(SRCE_ERR_FAILED)\ 00103 ENUM_AUTO(SRCE_ERR_BUSY) 00104 00105 // Firmware Manager 00106 #define ARM_UC_FM_ERR_LIST\ 00107 ENUM_FIXED(FIRM_ERR_NONE, FIRMWARE_MANAGER_PREFIX << 16)\ 00108 ENUM_AUTO(FIRM_ERR_WRITE)\ 00109 ENUM_AUTO(FIRM_ERR_INVALID_PARAMETER)\ 00110 ENUM_AUTO(FIRM_ERR_ACTIVATE)\ 00111 ENUM_AUTO(FIRM_ERR_UNINITIALIZED)\ 00112 ENUM_AUTO(FIRM_ERR_INVALID_HASH) 00113 00114 #define ARM_UC_CU_ERR_LIST\ 00115 ENUM_FIXED(ARM_UC_CU_ERR_NONE, UPDATE_CRYPTO_PREFIX << 16)\ 00116 ENUM_AUTO(ARM_UC_CU_ERR_INVALID_PARAMETER)\ 00117 00118 #define ARM_UC_DI_ERR_LIST\ 00119 ENUM_FIXED(ARM_UC_DI_ERR_NONE, DEVICE_IDENTITY_PREFIX << 16)\ 00120 ENUM_AUTO(ARM_UC_DI_ERR_INVALID_PARAMETER)\ 00121 ENUM_AUTO(ARM_UC_DI_ERR_NOT_READY)\ 00122 ENUM_AUTO(ARM_UC_DI_ERR_NOT_FOUND)\ 00123 ENUM_AUTO(ARM_UC_DI_ERR_SIZE)\ 00124 00125 #define ARM_UC_HB_ERR_LIST\ 00126 ENUM_FIXED(HUB_ERR_NONE, HUB_PREFIX << 16)\ 00127 ENUM_AUTO(HUB_ERR_ROLLBACK_PROTECTION)\ 00128 00129 #define ARM_UC_ERR_LIST\ 00130 ARM_UC_COMMON_ERR_LIST\ 00131 ARM_UC_MM_ERR_LIST\ 00132 ARM_UC_CM_ERR_LIST\ 00133 ARM_UC_DP_ERR_LIST\ 00134 ARM_UC_SM_ERR_LIST\ 00135 ARM_UC_SRC_ERR_LIST\ 00136 ARM_UC_FM_ERR_LIST\ 00137 ARM_UC_CU_ERR_LIST\ 00138 ARM_UC_DI_ERR_LIST\ 00139 ARM_UC_HB_ERR_LIST\ 00140 00141 enum arm_uc_error { 00142 #define ENUM_AUTO(name) name, 00143 #define ENUM_FIXED(name, val) name = val, 00144 ARM_UC_ERR_LIST 00145 #undef ENUM_AUTO 00146 #undef ENUM_FIXED 00147 }; 00148 union arm_uc_error_code { 00149 int32_t code; 00150 struct { 00151 int16_t error; 00152 union { 00153 uint16_t module; 00154 uint8_t modulecc[2]; 00155 }; 00156 }; 00157 }; 00158 00159 typedef union arm_uc_error_code arm_uc_error_t; 00160 00161 #ifndef ARM_UC_ERR_TRACE 00162 #define ARM_UC_ERR_TRACE 0 00163 #endif 00164 00165 #if ARM_UC_ERR_TRACE 00166 #define ARM_UC_SET_ERROR(ERR, CODE) 00167 do {(ERR).code = (CODE);} while (0) 00168 #else 00169 #define ARM_UC_SET_ERROR(ERR, CODE)\ 00170 (ERR).code = (CODE) 00171 #endif 00172 00173 #ifdef __cplusplus 00174 extern "C" { 00175 #endif 00176 00177 const char* ARM_UC_err2Str(arm_uc_error_t err); 00178 00179 #ifdef __cplusplus 00180 } 00181 #endif 00182 #endif // ARM_UPDATE_ERROR_H
Generated on Tue Jul 12 2022 19:01:32 by 1.7.2