Toyomasa Watarai
/
Mbed-example-WS-W27
Mbed Cloud example program for workshop in W27 2018.
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 00071 // Certificate Manager 00072 #define ARM_UC_CM_ERR_LIST\ 00073 ENUM_FIXED(ARM_UC_CM_ERR_NONE, CERTIFICATE_MANAGER_PREFIX << 16)\ 00074 ENUM_AUTO(ARM_UC_CM_ERR_INVALID_PARAMETER)\ 00075 ENUM_AUTO(ARM_UC_CM_ERR_NOT_FOUND)\ 00076 ENUM_AUTO(ARM_UC_CM_ERR_INVALID_CERT)\ 00077 ENUM_AUTO(ARM_UC_CM_ERR_BLACKLISTED)\ 00078 00079 // DER Parser 00080 #define ARM_UC_DP_ERR_LIST\ 00081 ENUM_FIXED(ARM_UC_DP_ERR_NONE, DER_PARSER_PREFIX << 16)\ 00082 ENUM_AUTO(ARM_UC_DP_ERR_UNKNOWN)\ 00083 ENUM_AUTO(ARM_UC_DP_ERR_NOT_FOUND)\ 00084 ENUM_AUTO(ARM_UC_DP_ERR_NO_MORE_ELEMENTS)\ 00085 00086 // Source Manager 00087 #define ARM_UC_SM_ERR_LIST\ 00088 ENUM_FIXED(SOMA_ERR_NONE, SOURCE_MANAGER_PREFIX << 16)\ 00089 ENUM_AUTO(SOMA_ERR_NO_ROUTE_TO_SOURCE)\ 00090 ENUM_AUTO(SOMA_ERR_SOURCE_REGISTRY_FULL)\ 00091 ENUM_AUTO(SOMA_ERR_SOURCE_NOT_FOUND)\ 00092 ENUM_AUTO(SOMA_ERR_INVALID_PARAMETER) 00093 00094 // Source 00095 #define ARM_UC_SRC_ERR_LIST\ 00096 ENUM_FIXED(SRCE_ERR_NONE, SOURCE_PREFIX << 16)\ 00097 ENUM_AUTO(SRCE_ERR_UNINITIALIZED)\ 00098 ENUM_AUTO(SRCE_ERR_INVALID_PARAMETER)\ 00099 ENUM_AUTO(SRCE_ERR_FAILED)\ 00100 ENUM_AUTO(SRCE_ERR_BUSY) 00101 00102 // Firmware Manager 00103 #define ARM_UC_FM_ERR_LIST\ 00104 ENUM_FIXED(FIRM_ERR_NONE, FIRMWARE_MANAGER_PREFIX << 16)\ 00105 ENUM_AUTO(FIRM_ERR_WRITE)\ 00106 ENUM_AUTO(FIRM_ERR_INVALID_PARAMETER)\ 00107 ENUM_AUTO(FIRM_ERR_ACTIVATE)\ 00108 ENUM_AUTO(FIRM_ERR_UNINITIALIZED)\ 00109 ENUM_AUTO(FIRM_ERR_INVALID_HASH) 00110 00111 #define ARM_UC_CU_ERR_LIST\ 00112 ENUM_FIXED(ARM_UC_CU_ERR_NONE, UPDATE_CRYPTO_PREFIX << 16)\ 00113 ENUM_AUTO(ARM_UC_CU_ERR_INVALID_PARAMETER)\ 00114 00115 #define ARM_UC_DI_ERR_LIST\ 00116 ENUM_FIXED(ARM_UC_DI_ERR_NONE, DEVICE_IDENTITY_PREFIX << 16)\ 00117 ENUM_AUTO(ARM_UC_DI_ERR_INVALID_PARAMETER)\ 00118 ENUM_AUTO(ARM_UC_DI_ERR_NOT_READY)\ 00119 ENUM_AUTO(ARM_UC_DI_ERR_NOT_FOUND)\ 00120 ENUM_AUTO(ARM_UC_DI_ERR_SIZE)\ 00121 00122 #define ARM_UC_HB_ERR_LIST\ 00123 ENUM_FIXED(HUB_ERR_NONE, HUB_PREFIX << 16)\ 00124 ENUM_AUTO(HUB_ERR_ROLLBACK_PROTECTION)\ 00125 00126 #define ARM_UC_ERR_LIST\ 00127 ARM_UC_COMMON_ERR_LIST\ 00128 ARM_UC_MM_ERR_LIST\ 00129 ARM_UC_CM_ERR_LIST\ 00130 ARM_UC_DP_ERR_LIST\ 00131 ARM_UC_SM_ERR_LIST\ 00132 ARM_UC_SRC_ERR_LIST\ 00133 ARM_UC_FM_ERR_LIST\ 00134 ARM_UC_CU_ERR_LIST\ 00135 ARM_UC_DI_ERR_LIST\ 00136 ARM_UC_HB_ERR_LIST\ 00137 00138 enum arm_uc_error { 00139 #define ENUM_AUTO(name) name, 00140 #define ENUM_FIXED(name, val) name = val, 00141 ARM_UC_ERR_LIST 00142 #undef ENUM_AUTO 00143 #undef ENUM_FIXED 00144 }; 00145 union arm_uc_error_code { 00146 int32_t code; 00147 struct { 00148 int16_t error; 00149 union { 00150 uint16_t module; 00151 uint8_t modulecc[2]; 00152 }; 00153 }; 00154 }; 00155 00156 typedef union arm_uc_error_code arm_uc_error_t; 00157 00158 #ifndef ARM_UC_ERR_TRACE 00159 #define ARM_UC_ERR_TRACE 0 00160 #endif 00161 00162 #if ARM_UC_ERR_TRACE 00163 #define ARM_UC_SET_ERROR(ERR, CODE) 00164 do {(ERR).code = (CODE);} while (0) 00165 #else 00166 #define ARM_UC_SET_ERROR(ERR, CODE)\ 00167 (ERR).code = (CODE) 00168 #endif 00169 00170 #ifdef __cplusplus 00171 extern "C" { 00172 #endif 00173 00174 const char* ARM_UC_err2Str(arm_uc_error_t err); 00175 00176 #ifdef __cplusplus 00177 } 00178 #endif 00179 #endif // ARM_UPDATE_ERROR_H
Generated on Tue Jul 12 2022 16:22:03 by 1.7.2