Modified for BG96
Fork of mbed-dev by
platform/mbed_error.h@186:707f6e361f3e, 2018-06-22 (annotated)
- Committer:
- Anna Bridge
- Date:
- Fri Jun 22 16:45:37 2018 +0100
- Revision:
- 186:707f6e361f3e
- Parent:
- 178:79309dc6340a
- Child:
- 187:0387e8f68319
mbed-dev library. Release version 162
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
<> | 149:156823d33999 | 1 | /** \addtogroup platform */ |
<> | 149:156823d33999 | 2 | /** @{*/ |
AnnaBridge | 178:79309dc6340a | 3 | /** |
AnnaBridge | 178:79309dc6340a | 4 | * \defgroup platform_error Error functions |
AnnaBridge | 178:79309dc6340a | 5 | * @{ |
AnnaBridge | 178:79309dc6340a | 6 | */ |
<> | 149:156823d33999 | 7 | /* mbed Microcontroller Library |
<> | 149:156823d33999 | 8 | * Copyright (c) 2006-2013 ARM Limited |
<> | 149:156823d33999 | 9 | * |
<> | 149:156823d33999 | 10 | * Licensed under the Apache License, Version 2.0 (the "License"); |
<> | 149:156823d33999 | 11 | * you may not use this file except in compliance with the License. |
<> | 149:156823d33999 | 12 | * You may obtain a copy of the License at |
<> | 149:156823d33999 | 13 | * |
<> | 149:156823d33999 | 14 | * http://www.apache.org/licenses/LICENSE-2.0 |
<> | 149:156823d33999 | 15 | * |
<> | 149:156823d33999 | 16 | * Unless required by applicable law or agreed to in writing, software |
<> | 149:156823d33999 | 17 | * distributed under the License is distributed on an "AS IS" BASIS, |
<> | 149:156823d33999 | 18 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
<> | 149:156823d33999 | 19 | * See the License for the specific language governing permissions and |
<> | 149:156823d33999 | 20 | * limitations under the License. |
<> | 149:156823d33999 | 21 | */ |
<> | 149:156823d33999 | 22 | #ifndef MBED_ERROR_H |
<> | 149:156823d33999 | 23 | #define MBED_ERROR_H |
<> | 149:156823d33999 | 24 | |
Anna Bridge |
186:707f6e361f3e | 25 | #include "platform/mbed_retarget.h" |
Anna Bridge |
186:707f6e361f3e | 26 | #include "platform/mbed_toolchain.h" |
AnnaBridge | 167:e84263d55307 | 27 | |
Anna Bridge |
186:707f6e361f3e | 28 | #ifdef __cplusplus |
Anna Bridge |
186:707f6e361f3e | 29 | extern "C" { |
Anna Bridge |
186:707f6e361f3e | 30 | #endif |
Anna Bridge |
186:707f6e361f3e | 31 | |
Anna Bridge |
186:707f6e361f3e | 32 | /** Define this macro to include filenames in error context. For release builds, do not include filename to save memory. |
Anna Bridge |
186:707f6e361f3e | 33 | * MBED_CONF_ERROR_FILENAME_CAPTURE_ENABLED |
Anna Bridge |
186:707f6e361f3e | 34 | */ |
Anna Bridge |
186:707f6e361f3e | 35 | |
Anna Bridge |
186:707f6e361f3e | 36 | /** Define this macro to disable error logging, note that the first and last error capture will still be active by default. |
Anna Bridge |
186:707f6e361f3e | 37 | * MBED_CONF_ERROR_HIST_DISABLED |
Anna Bridge |
186:707f6e361f3e | 38 | */ |
Anna Bridge |
186:707f6e361f3e | 39 | |
Anna Bridge |
186:707f6e361f3e | 40 | #ifndef MBED_CONF_MAX_ERROR_FILENAME_LEN |
Anna Bridge |
186:707f6e361f3e | 41 | #define MBED_CONF_MAX_ERROR_FILENAME_LEN 16 |
Anna Bridge |
186:707f6e361f3e | 42 | #endif |
Anna Bridge |
186:707f6e361f3e | 43 | |
Anna Bridge |
186:707f6e361f3e | 44 | #define MBED_ERROR_STATUS_CODE_MASK (0x0000FFFF) |
Anna Bridge |
186:707f6e361f3e | 45 | #define MBED_ERROR_STATUS_CODE_POS (0) |
Anna Bridge |
186:707f6e361f3e | 46 | #define MBED_ERROR_STATUS_CODE_FIELD_SIZE (16) |
Anna Bridge |
186:707f6e361f3e | 47 | |
Anna Bridge |
186:707f6e361f3e | 48 | #define MBED_ERROR_STATUS_MODULE_MASK (0x00FF0000) |
Anna Bridge |
186:707f6e361f3e | 49 | #define MBED_ERROR_STATUS_MODULE_POS (16) |
Anna Bridge |
186:707f6e361f3e | 50 | #define MBED_ERROR_STATUS_MODULE_FIELD_SIZE (8) |
Anna Bridge |
186:707f6e361f3e | 51 | |
Anna Bridge |
186:707f6e361f3e | 52 | #define MBED_ERROR_STATUS_TYPE_MASK (0x60000000) |
Anna Bridge |
186:707f6e361f3e | 53 | #define MBED_ERROR_STATUS_TYPE_POS (29) |
Anna Bridge |
186:707f6e361f3e | 54 | #define MBED_ERROR_STATUS_TYPE_FIELD_SIZE (2) |
Anna Bridge |
186:707f6e361f3e | 55 | |
Anna Bridge |
186:707f6e361f3e | 56 | /* mbed_error_status_t Status Encoding */ |
Anna Bridge |
186:707f6e361f3e | 57 | //|31(1 bit) Always Negative|30-29(2 bits) |28-24 | 23-16(8 bits) | 15-0(16 bits) | |
Anna Bridge |
186:707f6e361f3e | 58 | //|-1 |TYPE |(unused/reserved) | MODULE TYPE | ERROR CODE | |
Anna Bridge |
186:707f6e361f3e | 59 | |
Anna Bridge |
186:707f6e361f3e | 60 | #define MAKE_MBED_ERROR(type, module, error_code) (mbed_error_status_t) \ |
Anna Bridge |
186:707f6e361f3e | 61 | ((0x80000000) | \ |
Anna Bridge |
186:707f6e361f3e | 62 | (MBED_ERROR_STATUS_CODE_MASK & (error_code << MBED_ERROR_STATUS_CODE_POS)) | \ |
Anna Bridge |
186:707f6e361f3e | 63 | (MBED_ERROR_STATUS_MODULE_MASK & (module << MBED_ERROR_STATUS_MODULE_POS)) | \ |
Anna Bridge |
186:707f6e361f3e | 64 | (MBED_ERROR_STATUS_TYPE_MASK & (type << MBED_ERROR_STATUS_TYPE_POS))) |
Anna Bridge |
186:707f6e361f3e | 65 | |
Anna Bridge |
186:707f6e361f3e | 66 | #define MBED_GET_ERROR_TYPE( error_status ) ((error_status & MBED_ERROR_STATUS_TYPE_MASK) >> MBED_ERROR_STATUS_TYPE_POS) |
Anna Bridge |
186:707f6e361f3e | 67 | #define MBED_GET_ERROR_MODULE( error_status ) ((error_status & MBED_ERROR_STATUS_MODULE_MASK) >> MBED_ERROR_STATUS_MODULE_POS) |
Anna Bridge |
186:707f6e361f3e | 68 | #define MBED_GET_ERROR_CODE( error_status ) (int)((MBED_GET_ERROR_TYPE( error_status ) == MBED_ERROR_TYPE_POSIX)?(-error_status):((error_status & MBED_ERROR_STATUS_CODE_MASK) >> MBED_ERROR_STATUS_CODE_POS)) |
Anna Bridge |
186:707f6e361f3e | 69 | |
Anna Bridge |
186:707f6e361f3e | 70 | /** mbed_error_status_t description |
Anna Bridge |
186:707f6e361f3e | 71 | * |
Anna Bridge |
186:707f6e361f3e | 72 | * mbed_error_status_t type represents the error status values under MbedOS. mbed_error_status_t values are signed integers and always be negative.\n |
Anna Bridge |
186:707f6e361f3e | 73 | * Internally its encoded as below with bit-fields representing error type, module and error code:\n\n |
Anna Bridge |
186:707f6e361f3e | 74 | * mbed_error_status_t Status Encoding:\n |
Anna Bridge |
186:707f6e361f3e | 75 | * |
Anna Bridge |
186:707f6e361f3e | 76 | \verbatim |
Anna Bridge |
186:707f6e361f3e | 77 | | 31 Always Negative | 30-29(2 bits) | 28-24 | 23-16(8 bits) | 15-0(16 bits) | |
Anna Bridge |
186:707f6e361f3e | 78 | | -1 | TYPE | (unused/reserved) | MODULE TYPE | ERROR CODE | |
Anna Bridge |
186:707f6e361f3e | 79 | \endverbatim |
Anna Bridge |
186:707f6e361f3e | 80 | * |
Anna Bridge |
186:707f6e361f3e | 81 | * The error status value range for each error type is as follows:\n |
Anna Bridge |
186:707f6e361f3e | 82 | * Posix Error Status-es - 0xFFFFFFFF to 0xFFFFFF01(-1 -255) - This corresponds to Posix error codes represented as negative.\n |
Anna Bridge |
186:707f6e361f3e | 83 | * System Error Status-es - 0x80XX0100 to 0x80XX0FFF - This corresponds to System error codes range(all values are negative). Bits 23-16 will be module type(marked with XX)\n |
Anna Bridge |
186:707f6e361f3e | 84 | * Custom Error Status-es - 0xA0XX1000 to 0xA0XXFFFF - This corresponds to Custom error codes range(all values are negative). Bits 23-16 will be module type(marked with XX)\n\n |
Anna Bridge |
186:707f6e361f3e | 85 | * |
Anna Bridge |
186:707f6e361f3e | 86 | * The ERROR CODE(values encoded into ERROR CODE bit-field in mbed_error_status_t) value range for each error type is also seperated as below:\n |
Anna Bridge |
186:707f6e361f3e | 87 | * Posix Error Codes - 1 to 255.\n |
Anna Bridge |
186:707f6e361f3e | 88 | * System Error Codes - 256 to 4095.\n |
Anna Bridge |
186:707f6e361f3e | 89 | * Custom Error Codes - 4096 to 65535.\n |
Anna Bridge |
186:707f6e361f3e | 90 | * |
Anna Bridge |
186:707f6e361f3e | 91 | * @note Posix error codes are always encoded as negative of their actual value. For example, EPERM is encoded as -EPERM. |
Anna Bridge |
186:707f6e361f3e | 92 | * And, the MODULE TYPE for Posix error codes are always encoded as MBED_MODULE_UNKNOWN.\n |
Anna Bridge |
186:707f6e361f3e | 93 | * This is to enable easy injection of Posix error codes into MbedOS error handling system without altering the actual Posix error values.\n |
Anna Bridge |
186:707f6e361f3e | 94 | * Accordingly, Posix error codes are represented as -1 to -255 under MbedOS error status representation. |
Anna Bridge |
186:707f6e361f3e | 95 | */ |
Anna Bridge |
186:707f6e361f3e | 96 | typedef int mbed_error_status_t; |
Anna Bridge |
186:707f6e361f3e | 97 | |
Anna Bridge |
186:707f6e361f3e | 98 | /** |
Anna Bridge |
186:707f6e361f3e | 99 | * Macro for defining a Posix error status. This macro is mainly used to define Posix error values in mbed_error_code_t enumeration. |
Anna Bridge |
186:707f6e361f3e | 100 | * @param error_name Name of the error without the ERROR_ prefix |
Anna Bridge |
186:707f6e361f3e | 101 | * @param error_code Error code value to be used, must be between 1 and 255(inclusive). |
Anna Bridge |
186:707f6e361f3e | 102 | * |
Anna Bridge |
186:707f6e361f3e | 103 | */ |
Anna Bridge |
186:707f6e361f3e | 104 | #define MBED_DEFINE_POSIX_ERROR( error_name, error_code ) \ |
Anna Bridge |
186:707f6e361f3e | 105 | MBED_ERROR_CODE_##error_name = error_code, \ |
Anna Bridge |
186:707f6e361f3e | 106 | MBED_ERROR_##error_name = -(MBED_POSIX_ERROR_BASE + error_code) |
Anna Bridge |
186:707f6e361f3e | 107 | |
Anna Bridge |
186:707f6e361f3e | 108 | /** |
Anna Bridge |
186:707f6e361f3e | 109 | * Macro for defining a System error status. This macro is used to define System error values in mbed_error_code_t enumeration. |
Anna Bridge |
186:707f6e361f3e | 110 | * @param error_name Name of the error without the ERROR_ prefix |
Anna Bridge |
186:707f6e361f3e | 111 | * @param error_code Error code value to be used, must be between 256 and 4096(inclusive). |
Anna Bridge |
186:707f6e361f3e | 112 | * |
Anna Bridge |
186:707f6e361f3e | 113 | */ |
Anna Bridge |
186:707f6e361f3e | 114 | #define MBED_DEFINE_SYSTEM_ERROR( error_name, error_code ) \ |
Anna Bridge |
186:707f6e361f3e | 115 | MBED_ERROR_CODE_##error_name = MBED_SYSTEM_ERROR_BASE + error_code, \ |
Anna Bridge |
186:707f6e361f3e | 116 | MBED_ERROR_##error_name = MAKE_MBED_ERROR(MBED_ERROR_TYPE_SYSTEM, MBED_MODULE_UNKNOWN, MBED_ERROR_CODE_##error_name) |
Anna Bridge |
186:707f6e361f3e | 117 | |
Anna Bridge |
186:707f6e361f3e | 118 | /** |
Anna Bridge |
186:707f6e361f3e | 119 | * Macro for defining a Custom error status. This macro is used to define custom error values in mbed_error_code_t enumeration. |
Anna Bridge |
186:707f6e361f3e | 120 | * @param error_name Name of the error without the ERROR_ prefix |
Anna Bridge |
186:707f6e361f3e | 121 | * @param error_code Error code value to be used, must be between 4097 and 65535(inclusive). |
Anna Bridge |
186:707f6e361f3e | 122 | * |
Anna Bridge |
186:707f6e361f3e | 123 | */ |
Anna Bridge |
186:707f6e361f3e | 124 | #define MBED_DEFINE_CUSTOM_ERROR( error_name, error_code ) \ |
Anna Bridge |
186:707f6e361f3e | 125 | MBED_ERROR_CODE_##error_name = MBED_CUSTOM_ERROR_BASE + error_code, \ |
Anna Bridge |
186:707f6e361f3e | 126 | MBED_ERROR_##error_name = MAKE_MBED_ERROR(MBED_ERROR_TYPE_CUSTOM, MBED_MODULE_UNKNOWN, MBED_ERROR_CODE_##error_name) |
Anna Bridge |
186:707f6e361f3e | 127 | |
Anna Bridge |
186:707f6e361f3e | 128 | |
Anna Bridge |
186:707f6e361f3e | 129 | /** |
Anna Bridge |
186:707f6e361f3e | 130 | * Macros for setting a system warning. These macros will log the error, Its a wrapper for calling mbed_warning API. |
Anna Bridge |
186:707f6e361f3e | 131 | * There are 2 versions of this macro. MBED_WARNING takes status and message. MBED_WARNING1 takes an additional context specific argument |
Anna Bridge |
186:707f6e361f3e | 132 | * @param error_status mbed_error_status_t status to be set(See mbed_error_status_t enum above for available error status values). |
Anna Bridge |
186:707f6e361f3e | 133 | * @param error_msg The error message to be printed out to STDIO/Serial. |
Anna Bridge |
186:707f6e361f3e | 134 | * @param error_value Value associated with the error status. This would depend on error code/error scenario. |
Anna Bridge |
186:707f6e361f3e | 135 | * |
Anna Bridge |
186:707f6e361f3e | 136 | * @code |
Anna Bridge |
186:707f6e361f3e | 137 | * |
Anna Bridge |
186:707f6e361f3e | 138 | * MBED_WARNING( ERROR_INVALID_SIZE, "MyDriver: Invalid size in read" ) |
Anna Bridge |
186:707f6e361f3e | 139 | * MBED_WARNING1( ERROR_INVALID_SIZE, "MyDriver: Invalid size in read", size_val ) |
Anna Bridge |
186:707f6e361f3e | 140 | * |
Anna Bridge |
186:707f6e361f3e | 141 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 142 | * @note The macro calls mbed_warning API with filename and line number info without caller explicitly passing them. |
Anna Bridge |
186:707f6e361f3e | 143 | * Since this macro is a wrapper for mbed_warning API callers should process the return value from this macro which is the return value from calling mbed_error API. |
Anna Bridge |
186:707f6e361f3e | 144 | * |
Anna Bridge |
186:707f6e361f3e | 145 | */ |
Anna Bridge |
186:707f6e361f3e | 146 | #ifdef NDEBUG |
Anna Bridge |
186:707f6e361f3e | 147 | #define MBED_WARNING1( error_status, error_msg, error_value ) mbed_warning( error_status, (const char *)NULL, (uint32_t)error_value, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 148 | #define MBED_WARNING( error_status, error_msg ) mbed_warning( error_status, (const char *)NULL, (uint32_t)0, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 149 | #else |
Anna Bridge |
186:707f6e361f3e | 150 | #if defined(MBED_CONF_ERROR_FILENAME_CAPTURE_ENABLED) |
Anna Bridge |
186:707f6e361f3e | 151 | #define MBED_WARNING1( error_status, error_msg, error_value ) mbed_warning( error_status, (const char *)error_msg, (uint32_t)error_value, (const char *)MBED_FILENAME, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 152 | #define MBED_WARNING( error_status, error_msg ) mbed_warning( error_status, (const char *)error_msg, (uint32_t)0 , (const char *)MBED_FILENAME, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 153 | #else |
Anna Bridge |
186:707f6e361f3e | 154 | #define MBED_WARNING1( error_status, error_msg, error_value ) mbed_warning( error_status, (const char *)error_msg, (uint32_t)error_value, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 155 | #define MBED_WARNING( error_status, error_msg ) mbed_warning( error_status, (const char *)error_msg, (uint32_t)0, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 156 | #endif |
Anna Bridge |
186:707f6e361f3e | 157 | #endif |
Anna Bridge |
186:707f6e361f3e | 158 | |
Anna Bridge |
186:707f6e361f3e | 159 | /** |
Anna Bridge |
186:707f6e361f3e | 160 | * Macros for setting a fatal system error. These macros will log the error, prints the error report and halts the system. Its a wrapper for calling mbed_error API. |
Anna Bridge |
186:707f6e361f3e | 161 | * There are 2 versions of this macro. MBED_ERROR takes status and message. MBED_ERROR1 takes an additional context specific argument |
Anna Bridge |
186:707f6e361f3e | 162 | * @param error_status mbed_error_status_t status to be set(See mbed_error_status_t enum above for available error status values). |
Anna Bridge |
186:707f6e361f3e | 163 | * @param error_msg The error message to be printed out to STDIO/Serial. |
Anna Bridge |
186:707f6e361f3e | 164 | * @param error_value Value associated with the error status. This would depend on error code/error scenario. Only available with MBED_ERROR1 |
Anna Bridge |
186:707f6e361f3e | 165 | * @return 0 or MBED_SUCCESS. |
Anna Bridge |
186:707f6e361f3e | 166 | * MBED_ERROR_INVALID_ARGUMENT if called with invalid error status/codes |
Anna Bridge |
186:707f6e361f3e | 167 | * |
Anna Bridge |
186:707f6e361f3e | 168 | * @code |
Anna Bridge |
186:707f6e361f3e | 169 | * |
Anna Bridge |
186:707f6e361f3e | 170 | * MBED_ERROR( MBED_ERROR_MUTEX_LOCK_FAILED, "MyDriver: Can't lock driver Mutex" ) |
Anna Bridge |
186:707f6e361f3e | 171 | * MBED_ERROR1( MBED_ERROR_MUTEX_LOCK_FAILED, "MyDriver: Can't lock driver Mutex", &my_mutex ) |
Anna Bridge |
186:707f6e361f3e | 172 | * |
Anna Bridge |
186:707f6e361f3e | 173 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 174 | * @note The macro calls mbed_error API with filename and line number info without caller explicitly passing them. |
Anna Bridge |
186:707f6e361f3e | 175 | * Since this macro is a wrapper for mbed_error API callers should process the return value from this macro which is the return value from calling mbed_error API. |
Anna Bridge |
186:707f6e361f3e | 176 | * |
Anna Bridge |
186:707f6e361f3e | 177 | */ |
Anna Bridge |
186:707f6e361f3e | 178 | #ifdef NDEBUG |
Anna Bridge |
186:707f6e361f3e | 179 | #define MBED_ERROR1( error_status, error_msg, error_value ) mbed_error( error_status, (const char *)NULL, (uint32_t)error_value, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 180 | #define MBED_ERROR( error_status, error_msg ) mbed_error( error_status, (const char *)NULL, (uint32_t)0 , NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 181 | #else |
Anna Bridge |
186:707f6e361f3e | 182 | #if defined(MBED_CONF_ERROR_FILENAME_CAPTURE_ENABLED) |
Anna Bridge |
186:707f6e361f3e | 183 | #define MBED_ERROR1( error_status, error_msg, error_value ) mbed_error( error_status, (const char *)error_msg, (uint32_t)error_value, (const char *)MBED_FILENAME, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 184 | #define MBED_ERROR( error_status, error_msg ) mbed_error( error_status, (const char *)error_msg, (uint32_t)0 , (const char *)MBED_FILENAME, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 185 | #else |
Anna Bridge |
186:707f6e361f3e | 186 | #define MBED_ERROR1( error_status, error_msg, error_value ) mbed_error( error_status, (const char *)error_msg, (uint32_t)error_value, NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 187 | #define MBED_ERROR( error_status, error_msg ) mbed_error( error_status, (const char *)error_msg, (uint32_t)0 , NULL, 0 ) |
Anna Bridge |
186:707f6e361f3e | 188 | #endif |
Anna Bridge |
186:707f6e361f3e | 189 | #endif |
Anna Bridge |
186:707f6e361f3e | 190 | |
Anna Bridge |
186:707f6e361f3e | 191 | //Error Type definition |
Anna Bridge |
186:707f6e361f3e | 192 | /** mbed_error_type_t definition |
Anna Bridge |
186:707f6e361f3e | 193 | * @note |
Anna Bridge |
186:707f6e361f3e | 194 | * This enumeration defines the Error types supported. The value of these enum values will be encoded into mbed_error_status_t TYPE field.\n |
Anna Bridge |
186:707f6e361f3e | 195 | * See mbed_error_status_t description for more info.\n |
Anna Bridge |
186:707f6e361f3e | 196 | * MBED_ERROR_TYPE_SYSTEM - Used to indicate that the error status is of System defined Error type.\n |
Anna Bridge |
186:707f6e361f3e | 197 | * MBED_ERROR_TYPE_CUSTOM - Used to indicate that the error status is of Custom defined Error type.\n |
Anna Bridge |
186:707f6e361f3e | 198 | * MBED_ERROR_TYPE_POSIX - Used to indicate that the error status is of Posix error type.\n |
Anna Bridge |
186:707f6e361f3e | 199 | * |
Anna Bridge |
186:707f6e361f3e | 200 | */ |
Anna Bridge |
186:707f6e361f3e | 201 | typedef enum _mbed_error_type_t |
Anna Bridge |
186:707f6e361f3e | 202 | { |
Anna Bridge |
186:707f6e361f3e | 203 | MBED_ERROR_TYPE_SYSTEM = 0, |
Anna Bridge |
186:707f6e361f3e | 204 | MBED_ERROR_TYPE_CUSTOM = 1, |
Anna Bridge |
186:707f6e361f3e | 205 | //2 is reserved |
Anna Bridge |
186:707f6e361f3e | 206 | //Use 3 for POSIX because we are mapping -1 to -255 to POSIX error codes |
Anna Bridge |
186:707f6e361f3e | 207 | //and thus we must use 3 to match the type bits in error status representation which are from 0xFFFFFFFF to 0xFFFFFF00 |
Anna Bridge |
186:707f6e361f3e | 208 | MBED_ERROR_TYPE_POSIX = 3 |
Anna Bridge |
186:707f6e361f3e | 209 | } mbed_error_type_t; |
Anna Bridge |
186:707f6e361f3e | 210 | |
Anna Bridge |
186:707f6e361f3e | 211 | //Module type/id definitions |
Anna Bridge |
186:707f6e361f3e | 212 | /** mbed_module_type_t definition |
Anna Bridge |
186:707f6e361f3e | 213 | * @note |
Anna Bridge |
186:707f6e361f3e | 214 | * This enumeration defines the module types. The value of these enum values will be encoded into mbed_error_status_t MODULE field.\n\n |
Anna Bridge |
186:707f6e361f3e | 215 | * See mbed_error_status_t description for more info.\n |
Anna Bridge |
186:707f6e361f3e | 216 | * MBED_MODULE_UNKNOWN - This module type can be used if caller of the mbed_error/mbed_warning doesn't know who is the actual originator of the error.\n |
Anna Bridge |
186:707f6e361f3e | 217 | * Other module values can be used to provide more info on who/where the error originated from.\n\n |
Anna Bridge |
186:707f6e361f3e | 218 | * For example, if I2C driver is the component originating the error you can use MBED_MODULE_DRIVER_I2C to provide more info.\n |
Anna Bridge |
186:707f6e361f3e | 219 | * Its used in call to MBED_MAKE_ERROR/MBED_MAKE_SYSTEM_ERROR/MBED_MAKE_CUSTOM_ERROR macros.\n |
Anna Bridge |
186:707f6e361f3e | 220 | * |
Anna Bridge |
186:707f6e361f3e | 221 | * @code |
Anna Bridge |
186:707f6e361f3e | 222 | * Example: mbed_error_status_t i2c_driver_error = MBED_MAKE_ERROR( MBED_MODULE_DRIVER_I2C, MBED_ERROR_CONFIG_UNSUPPORTED ); |
Anna Bridge |
186:707f6e361f3e | 223 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 224 | * |
Anna Bridge |
186:707f6e361f3e | 225 | * @note |
Anna Bridge |
186:707f6e361f3e | 226 | * \n Below are the module code mappings:\n |
Anna Bridge |
186:707f6e361f3e | 227 | \verbatim |
Anna Bridge |
186:707f6e361f3e | 228 | MBED_MODULE_APPLICATION 0 Application |
Anna Bridge |
186:707f6e361f3e | 229 | MBED_MODULE_PLATFORM 1 Platform |
Anna Bridge |
186:707f6e361f3e | 230 | MODULE_KERNEL 2 RTX Kernel |
Anna Bridge |
186:707f6e361f3e | 231 | MBED_MODULE_NETWORK_STACK 3 Network stack |
Anna Bridge |
186:707f6e361f3e | 232 | MBED_MODULE_HAL 4 HAL - Hardware Abstraction Layer |
Anna Bridge |
186:707f6e361f3e | 233 | MBED_MODULE_NETWORK_STACKMODULE_MEMORY_SUBSYSTEM 5 Memory Subsystem |
Anna Bridge |
186:707f6e361f3e | 234 | MBED_MODULE_FILESYSTEM 6 Filesystem |
Anna Bridge |
186:707f6e361f3e | 235 | MBED_MODULE_BLOCK_DEVICE 7 Block device |
Anna Bridge |
186:707f6e361f3e | 236 | MBED_MODULE_DRIVER 8 Driver |
Anna Bridge |
186:707f6e361f3e | 237 | MBED_MODULE_DRIVER_SERIAL 9 Serial Driver |
Anna Bridge |
186:707f6e361f3e | 238 | MBED_MODULE_DRIVER_RTC 10 RTC Driver |
Anna Bridge |
186:707f6e361f3e | 239 | MBED_MODULE_DRIVER_I2C 11 I2C Driver |
Anna Bridge |
186:707f6e361f3e | 240 | MODULE_DRIVER_SPI 12 SPI Driver |
Anna Bridge |
186:707f6e361f3e | 241 | MODULE_DRIVER_GPIO 13 GPIO Driver |
Anna Bridge |
186:707f6e361f3e | 242 | MODULE_DRIVER_ANALOG 14 Analog Driver |
Anna Bridge |
186:707f6e361f3e | 243 | MODULE_DRIVER_DIGITAL 15 DigitalIO Driver |
Anna Bridge |
186:707f6e361f3e | 244 | MODULE_DRIVER_CAN 16 CAN Driver |
Anna Bridge |
186:707f6e361f3e | 245 | MODULE_DRIVER_ETHERNET 17 Ethernet Driver |
Anna Bridge |
186:707f6e361f3e | 246 | MODULE_DRIVER_CRC 18 CRC Module |
Anna Bridge |
186:707f6e361f3e | 247 | MODULE_DRIVER_PWM 19 PWM Driver |
Anna Bridge |
186:707f6e361f3e | 248 | MODULE_DRIVER_QSPI 20 QSPI Driver |
Anna Bridge |
186:707f6e361f3e | 249 | MODULE_DRIVER_USB 21 USB Driver |
Anna Bridge |
186:707f6e361f3e | 250 | MODULE_TARGET_SDK 22 SDK |
Anna Bridge |
186:707f6e361f3e | 251 | |
Anna Bridge |
186:707f6e361f3e | 252 | MBED_MODULE_UNKNOWN 255 Unknown module |
Anna Bridge |
186:707f6e361f3e | 253 | \endverbatim |
Anna Bridge |
186:707f6e361f3e | 254 | * |
Anna Bridge |
186:707f6e361f3e | 255 | */ |
Anna Bridge |
186:707f6e361f3e | 256 | typedef enum _mbed_module_type |
Anna Bridge |
186:707f6e361f3e | 257 | { |
Anna Bridge |
186:707f6e361f3e | 258 | MBED_MODULE_APPLICATION = 0, |
Anna Bridge |
186:707f6e361f3e | 259 | MBED_MODULE_PLATFORM, |
Anna Bridge |
186:707f6e361f3e | 260 | MBED_MODULE_KERNEL, |
Anna Bridge |
186:707f6e361f3e | 261 | MBED_MODULE_NETWORK_STACK, |
Anna Bridge |
186:707f6e361f3e | 262 | MBED_MODULE_HAL, |
Anna Bridge |
186:707f6e361f3e | 263 | MBED_MODULE_NETWORK_STACKMODULE_MEMORY_SUBSYSTEM, |
Anna Bridge |
186:707f6e361f3e | 264 | MBED_MODULE_FILESYSTEM, |
Anna Bridge |
186:707f6e361f3e | 265 | MBED_MODULE_BLOCK_DEVICE, |
Anna Bridge |
186:707f6e361f3e | 266 | MBED_MODULE_DRIVER, |
Anna Bridge |
186:707f6e361f3e | 267 | MBED_MODULE_DRIVER_SERIAL, |
Anna Bridge |
186:707f6e361f3e | 268 | MBED_MODULE_DRIVER_RTC, |
Anna Bridge |
186:707f6e361f3e | 269 | MBED_MODULE_DRIVER_I2C, |
Anna Bridge |
186:707f6e361f3e | 270 | MBED_MODULE_DRIVER_SPI, |
Anna Bridge |
186:707f6e361f3e | 271 | MBED_MODULE_DRIVER_GPIO, |
Anna Bridge |
186:707f6e361f3e | 272 | MBED_MODULE_DRIVER_ANALOG, |
Anna Bridge |
186:707f6e361f3e | 273 | MBED_MODULE_DRIVER_DIGITAL, |
Anna Bridge |
186:707f6e361f3e | 274 | MBED_MODULE_DRIVER_CAN, |
Anna Bridge |
186:707f6e361f3e | 275 | MBED_MODULE_DRIVER_ETHERNET, |
Anna Bridge |
186:707f6e361f3e | 276 | MBED_MODULE_DRIVER_CRC, |
Anna Bridge |
186:707f6e361f3e | 277 | MBED_MODULE_DRIVER_PWM, |
Anna Bridge |
186:707f6e361f3e | 278 | MBED_MODULE_DRIVER_QSPI, |
Anna Bridge |
186:707f6e361f3e | 279 | MBED_MODULE_DRIVER_USB, |
Anna Bridge |
186:707f6e361f3e | 280 | MBED_MODULE_TARGET_SDK, |
Anna Bridge |
186:707f6e361f3e | 281 | /* Add More entities here as required */ |
Anna Bridge |
186:707f6e361f3e | 282 | |
Anna Bridge |
186:707f6e361f3e | 283 | MBED_MODULE_UNKNOWN = 255, |
Anna Bridge |
186:707f6e361f3e | 284 | MBED_MODULE_MAX = MBED_MODULE_UNKNOWN |
Anna Bridge |
186:707f6e361f3e | 285 | } mbed_module_type_t; |
Anna Bridge |
186:707f6e361f3e | 286 | |
Anna Bridge |
186:707f6e361f3e | 287 | //Use MBED_SUCCESS(=0) or any postive number for successful returns |
Anna Bridge |
186:707f6e361f3e | 288 | #define MBED_SUCCESS 0 |
Anna Bridge |
186:707f6e361f3e | 289 | |
Anna Bridge |
186:707f6e361f3e | 290 | #define MBED_POSIX_ERROR_BASE 0 |
Anna Bridge |
186:707f6e361f3e | 291 | #define MBED_SYSTEM_ERROR_BASE 256 |
Anna Bridge |
186:707f6e361f3e | 292 | #define MBED_CUSTOM_ERROR_BASE 4096 |
Anna Bridge |
186:707f6e361f3e | 293 | |
Anna Bridge |
186:707f6e361f3e | 294 | //Error Code definitions |
Anna Bridge |
186:707f6e361f3e | 295 | /** mbed_error_code_t definition |
Anna Bridge |
186:707f6e361f3e | 296 | * |
Anna Bridge |
186:707f6e361f3e | 297 | * mbed_error_code_t enumeration defines the Error codes and Error status values for MBED_MODULE_UNKNOWN.\n |
Anna Bridge |
186:707f6e361f3e | 298 | * It defines all of Posix Error Codes/Statuses and Mbed System Error Codes/Statuses.\n\n |
Anna Bridge |
186:707f6e361f3e | 299 | * |
Anna Bridge |
186:707f6e361f3e | 300 | * @note |
Anna Bridge |
186:707f6e361f3e | 301 | * Posix Error codes are defined using the macro MBED_DEFINE_POSIX_ERROR\n |
Anna Bridge |
186:707f6e361f3e | 302 | * For example MBED_DEFINE_POSIX_ERROR( EPERM, EPERM ). This effectively defines the following values:\n |
Anna Bridge |
186:707f6e361f3e | 303 | * ERROR_CODE_EPERM = EPERM\n |
Anna Bridge |
186:707f6e361f3e | 304 | * ERROR_EPERM = -EPERM\n |
Anna Bridge |
186:707f6e361f3e | 305 | * |
Anna Bridge |
186:707f6e361f3e | 306 | * Posix Error codes are defined using the macro MBED_DEFINE_POSIX_ERROR\n |
Anna Bridge |
186:707f6e361f3e | 307 | * For example MBED_DEFINE_POSIX_ERROR( EPERM, EPERM ). This macro defines the following values:\n |
Anna Bridge |
186:707f6e361f3e | 308 | * ERROR_CODE_EPERM = MBED_POSIX_ERROR_BASE+EPERM\n |
Anna Bridge |
186:707f6e361f3e | 309 | * ERROR_EPERM = -(MBED_POSIX_ERROR_BASE+EPERM)\n |
Anna Bridge |
186:707f6e361f3e | 310 | * Its effectively equivalent to:\n |
Anna Bridge |
186:707f6e361f3e | 311 | * ERROR_CODE_EPERM = 1\n |
Anna Bridge |
186:707f6e361f3e | 312 | * ERROR_EPERM = -1\n |
Anna Bridge |
186:707f6e361f3e | 313 | * All Posix error codes currently supported by MbedOS(defined in mbed_retarget.h) are defined using the MBED_DEFINE_POSIX_ERROR macro.\n\n |
Anna Bridge |
186:707f6e361f3e | 314 | * Below are the Posic error codes and the description:\n |
Anna Bridge |
186:707f6e361f3e | 315 | * \verbatim |
Anna Bridge |
186:707f6e361f3e | 316 | EPERM 1 Operation not permitted |
Anna Bridge |
186:707f6e361f3e | 317 | ENOENT 2 No such file or directory |
Anna Bridge |
186:707f6e361f3e | 318 | ESRCH 3 No such process |
Anna Bridge |
186:707f6e361f3e | 319 | EINTR 4 Interrupted system call |
Anna Bridge |
186:707f6e361f3e | 320 | EIO 5 I/O error |
Anna Bridge |
186:707f6e361f3e | 321 | ENXIO 6 No such device or address |
Anna Bridge |
186:707f6e361f3e | 322 | E2BIG 7 Argument list too long |
Anna Bridge |
186:707f6e361f3e | 323 | ENOEXEC 8 Exec format error |
Anna Bridge |
186:707f6e361f3e | 324 | EBADF 9 Bad file number |
Anna Bridge |
186:707f6e361f3e | 325 | ECHILD 10 No child processes |
Anna Bridge |
186:707f6e361f3e | 326 | EAGAIN 11 Try again |
Anna Bridge |
186:707f6e361f3e | 327 | ENOMEM 12 Out of memory |
Anna Bridge |
186:707f6e361f3e | 328 | EACCES 13 Permission denied |
Anna Bridge |
186:707f6e361f3e | 329 | EFAULT 14 Bad address |
Anna Bridge |
186:707f6e361f3e | 330 | ENOTBLK 15 Block device required |
Anna Bridge |
186:707f6e361f3e | 331 | EBUSY 16 Device or resource busy |
Anna Bridge |
186:707f6e361f3e | 332 | EEXIST 17 File exists |
Anna Bridge |
186:707f6e361f3e | 333 | EXDEV 18 Cross-device link |
Anna Bridge |
186:707f6e361f3e | 334 | ENODEV 19 No such device |
Anna Bridge |
186:707f6e361f3e | 335 | ENOTDIR 20 Not a directory |
Anna Bridge |
186:707f6e361f3e | 336 | EISDIR 21 Is a directory |
Anna Bridge |
186:707f6e361f3e | 337 | EINVAL 22 Invalid argument |
Anna Bridge |
186:707f6e361f3e | 338 | ENFILE 23 File table overflow |
Anna Bridge |
186:707f6e361f3e | 339 | EMFILE 24 Too many open files |
Anna Bridge |
186:707f6e361f3e | 340 | ENOTTY 25 Not a typewriter |
Anna Bridge |
186:707f6e361f3e | 341 | ETXTBSY 26 Text file busy |
Anna Bridge |
186:707f6e361f3e | 342 | EFBIG 27 File too large |
Anna Bridge |
186:707f6e361f3e | 343 | ENOSPC 28 No space left on device |
Anna Bridge |
186:707f6e361f3e | 344 | ESPIPE 29 Illegal seek |
Anna Bridge |
186:707f6e361f3e | 345 | EROFS 30 Read-only file system |
Anna Bridge |
186:707f6e361f3e | 346 | EMLINK 31 Too many links |
Anna Bridge |
186:707f6e361f3e | 347 | EPIPE 32 Broken pipe |
Anna Bridge |
186:707f6e361f3e | 348 | EDOM 33 Math argument out of domain of func |
Anna Bridge |
186:707f6e361f3e | 349 | ERANGE 34 Math result not representable |
Anna Bridge |
186:707f6e361f3e | 350 | EDEADLK 35 Resource deadlock would occur |
Anna Bridge |
186:707f6e361f3e | 351 | ENAMETOOLONG 36 File name too long |
Anna Bridge |
186:707f6e361f3e | 352 | ENOLCK 37 No record locks available |
Anna Bridge |
186:707f6e361f3e | 353 | ENOSYS 38 Function not implemented |
Anna Bridge |
186:707f6e361f3e | 354 | ENOTEMPTY 39 Directory not empty |
Anna Bridge |
186:707f6e361f3e | 355 | ELOOP 40 Too many symbolic links encountered |
Anna Bridge |
186:707f6e361f3e | 356 | EWOULDBLOCK EAGAIN Operation would block |
Anna Bridge |
186:707f6e361f3e | 357 | ENOMSG 42 No message of desired type |
Anna Bridge |
186:707f6e361f3e | 358 | EIDRM 43 Identifier removed |
Anna Bridge |
186:707f6e361f3e | 359 | ECHRNG 44 Channel number out of range |
Anna Bridge |
186:707f6e361f3e | 360 | EL2NSYNC 45 Level 2 not synchronized |
Anna Bridge |
186:707f6e361f3e | 361 | EL3HLT 46 Level 3 halted |
Anna Bridge |
186:707f6e361f3e | 362 | EL3RST 47 Level 3 reset |
Anna Bridge |
186:707f6e361f3e | 363 | ELNRNG 48 Link number out of range |
Anna Bridge |
186:707f6e361f3e | 364 | EUNATCH 49 Protocol driver not attached |
Anna Bridge |
186:707f6e361f3e | 365 | ENOCSI 50 No CSI structure available |
Anna Bridge |
186:707f6e361f3e | 366 | EL2HLT 51 Level 2 halted |
Anna Bridge |
186:707f6e361f3e | 367 | EBADE 52 Invalid exchange |
Anna Bridge |
186:707f6e361f3e | 368 | EBADR 53 Invalid request descriptor |
Anna Bridge |
186:707f6e361f3e | 369 | EXFULL 54 Exchange full |
Anna Bridge |
186:707f6e361f3e | 370 | ENOANO 55 No anode |
Anna Bridge |
186:707f6e361f3e | 371 | EBADRQC 56 Invalid request code |
Anna Bridge |
186:707f6e361f3e | 372 | EBADSLT 57 Invalid slot |
Anna Bridge |
186:707f6e361f3e | 373 | EDEADLOCK EDEADLK Resource deadlock would occur |
Anna Bridge |
186:707f6e361f3e | 374 | EBFONT 59 Bad font file format |
Anna Bridge |
186:707f6e361f3e | 375 | ENOSTR 60 Device not a stream |
Anna Bridge |
186:707f6e361f3e | 376 | ENODATA 61 No data available |
Anna Bridge |
186:707f6e361f3e | 377 | ETIME 62 Timer expired |
Anna Bridge |
186:707f6e361f3e | 378 | ENOSR 63 Out of streams resources |
Anna Bridge |
186:707f6e361f3e | 379 | ENONET 64 Machine is not on the network |
Anna Bridge |
186:707f6e361f3e | 380 | ENOPKG 65 Package not installed |
Anna Bridge |
186:707f6e361f3e | 381 | EREMOTE 66 Object is remote |
Anna Bridge |
186:707f6e361f3e | 382 | ENOLINK 67 Link has been severed |
Anna Bridge |
186:707f6e361f3e | 383 | EADV 68 Advertise error |
Anna Bridge |
186:707f6e361f3e | 384 | ESRMNT 69 Srmount error |
Anna Bridge |
186:707f6e361f3e | 385 | ECOMM 70 Communication error on send |
Anna Bridge |
186:707f6e361f3e | 386 | EPROTO 71 Protocol error |
Anna Bridge |
186:707f6e361f3e | 387 | EMULTIHOP 72 Multihop attempted |
Anna Bridge |
186:707f6e361f3e | 388 | EDOTDOT 73 RFS specific error |
Anna Bridge |
186:707f6e361f3e | 389 | EBADMSG 74 Not a data message |
Anna Bridge |
186:707f6e361f3e | 390 | EOVERFLOW 75 Value too large for defined data type |
Anna Bridge |
186:707f6e361f3e | 391 | ENOTUNIQ 76 Name not unique on network |
Anna Bridge |
186:707f6e361f3e | 392 | EBADFD 77 File descriptor in bad state |
Anna Bridge |
186:707f6e361f3e | 393 | EREMCHG 78 Remote address changed |
Anna Bridge |
186:707f6e361f3e | 394 | ELIBACC 79 Can not access a needed shared library |
Anna Bridge |
186:707f6e361f3e | 395 | ELIBBAD 80 Accessing a corrupted shared library |
Anna Bridge |
186:707f6e361f3e | 396 | ELIBSCN 81 .lib section in a.out corrupted |
Anna Bridge |
186:707f6e361f3e | 397 | ELIBMAX 82 Attempting to link in too many shared libraries |
Anna Bridge |
186:707f6e361f3e | 398 | ELIBEXEC 83 Cannot exec a shared library directly |
Anna Bridge |
186:707f6e361f3e | 399 | EILSEQ 84 Illegal byte sequence |
Anna Bridge |
186:707f6e361f3e | 400 | ERESTART 85 Interrupted system call should be restarted |
Anna Bridge |
186:707f6e361f3e | 401 | ESTRPIPE 86 Streams pipe error |
Anna Bridge |
186:707f6e361f3e | 402 | EUSERS 87 Too many users |
Anna Bridge |
186:707f6e361f3e | 403 | ENOTSOCK 88 Socket operation on non-socket |
Anna Bridge |
186:707f6e361f3e | 404 | EDESTADDRREQ 89 Destination address required |
Anna Bridge |
186:707f6e361f3e | 405 | EMSGSIZE 90 Message too long |
Anna Bridge |
186:707f6e361f3e | 406 | EPROTOTYPE 91 Protocol wrong type for socket |
Anna Bridge |
186:707f6e361f3e | 407 | ENOPROTOOPT 92 Protocol not available |
Anna Bridge |
186:707f6e361f3e | 408 | EPROTONOSUPPORT 93 Protocol not supported |
Anna Bridge |
186:707f6e361f3e | 409 | ESOCKTNOSUPPORT 94 Socket type not supported |
Anna Bridge |
186:707f6e361f3e | 410 | EOPNOTSUPP 95 Operation not supported on transport endpoint |
Anna Bridge |
186:707f6e361f3e | 411 | EPFNOSUPPORT 96 Protocol family not supported |
Anna Bridge |
186:707f6e361f3e | 412 | EAFNOSUPPORT 97 Address family not supported by protocol |
Anna Bridge |
186:707f6e361f3e | 413 | EADDRINUSE 98 Address already in use |
Anna Bridge |
186:707f6e361f3e | 414 | EADDRNOTAVAIL 99 Cannot assign requested address |
Anna Bridge |
186:707f6e361f3e | 415 | ENETDOWN 100 Network is down |
Anna Bridge |
186:707f6e361f3e | 416 | ENETUNREACH 101 Network is unreachable |
Anna Bridge |
186:707f6e361f3e | 417 | ENETRESET 102 Network dropped connection because of reset |
Anna Bridge |
186:707f6e361f3e | 418 | ECONNABORTED 103 Software caused connection abort |
Anna Bridge |
186:707f6e361f3e | 419 | ECONNRESET 104 Connection reset by peer |
Anna Bridge |
186:707f6e361f3e | 420 | ENOBUFS 105 No buffer space available |
Anna Bridge |
186:707f6e361f3e | 421 | EISCONN 106 Transport endpoint is already connected |
Anna Bridge |
186:707f6e361f3e | 422 | ENOTCONN 107 Transport endpoint is not connected |
Anna Bridge |
186:707f6e361f3e | 423 | ESHUTDOWN 108 Cannot send after transport endpoint shutdown |
Anna Bridge |
186:707f6e361f3e | 424 | ETOOMANYREFS 109 Too many references: cannot splice |
Anna Bridge |
186:707f6e361f3e | 425 | ETIMEDOUT 110 Connection timed out |
Anna Bridge |
186:707f6e361f3e | 426 | ECONNREFUSED 111 Connection refused |
Anna Bridge |
186:707f6e361f3e | 427 | EHOSTDOWN 112 Host is down |
Anna Bridge |
186:707f6e361f3e | 428 | EHOSTUNREACH 113 No route to host |
Anna Bridge |
186:707f6e361f3e | 429 | EALREADY 114 Operation already in progress |
Anna Bridge |
186:707f6e361f3e | 430 | EINPROGRESS 115 Operation now in progress |
Anna Bridge |
186:707f6e361f3e | 431 | ESTALE 116 Stale NFS file handle |
Anna Bridge |
186:707f6e361f3e | 432 | EUCLEAN 117 Structure needs cleaning |
Anna Bridge |
186:707f6e361f3e | 433 | ENOTNAM 118 Not a XENIX named type file |
Anna Bridge |
186:707f6e361f3e | 434 | ENAVAIL 119 No XENIX semaphores available |
Anna Bridge |
186:707f6e361f3e | 435 | EISNAM 120 Is a named type file |
Anna Bridge |
186:707f6e361f3e | 436 | EREMOTEIO 121 Remote I/O error |
Anna Bridge |
186:707f6e361f3e | 437 | EDQUOT 122 Quota exceeded |
Anna Bridge |
186:707f6e361f3e | 438 | ENOMEDIUM 123 No medium found |
Anna Bridge |
186:707f6e361f3e | 439 | EMEDIUMTYPE 124 Wrong medium type |
Anna Bridge |
186:707f6e361f3e | 440 | ECANCELED 125 Operation Canceled |
Anna Bridge |
186:707f6e361f3e | 441 | ENOKEY 126 Required key not available |
Anna Bridge |
186:707f6e361f3e | 442 | EKEYEXPIRED 127 Key has expired |
Anna Bridge |
186:707f6e361f3e | 443 | EKEYREVOKED 128 Key has been revoked |
Anna Bridge |
186:707f6e361f3e | 444 | EKEYREJECTED 129 Key was rejected by service |
Anna Bridge |
186:707f6e361f3e | 445 | EOWNERDEAD 130 Owner died |
Anna Bridge |
186:707f6e361f3e | 446 | ENOTRECOVERABLE 131 State not recoverable |
Anna Bridge |
186:707f6e361f3e | 447 | \endverbatim |
Anna Bridge |
186:707f6e361f3e | 448 | * |
Anna Bridge |
186:707f6e361f3e | 449 | * @note |
Anna Bridge |
186:707f6e361f3e | 450 | * MbedOS System Error codes are defined using the macro MBED_DEFINE_SYSTEM_ERROR\n |
Anna Bridge |
186:707f6e361f3e | 451 | * For example MBED_DEFINE_SYSTEM_ERROR( INVALID_ARGUMENT ,1 ) macro defines the following values:\n |
Anna Bridge |
186:707f6e361f3e | 452 | * ERROR_CODE_INVALID_ARGUMENT = MBED_SYSTEM_ERROR_BASE+1\n |
Anna Bridge |
186:707f6e361f3e | 453 | * ERROR_INVALID_ARGUMENT = MAKE_MBED_ERROR(ERROR_TYPE_SYSTEM, MBED_MODULE_UNKNOWN, ERROR_CODE_INVALID_ARGUMENT)\n |
Anna Bridge |
186:707f6e361f3e | 454 | * Its effectively equivalent to:\n |
Anna Bridge |
186:707f6e361f3e | 455 | * ERROR_CODE_INVALID_ARGUMENT = 1\n |
Anna Bridge |
186:707f6e361f3e | 456 | * ERROR_INVALID_ARGUMENT = 0x80FF0001\n (Note that MODULE field is set to MBED_MODULE_UNKNOWN) |
Anna Bridge |
186:707f6e361f3e | 457 | * New System Error codes should be defined using MBED_DEFINE_SYSTEM_ERROR macro and must have an unique error code value\n |
Anna Bridge |
186:707f6e361f3e | 458 | * passed as the second argument in the MBED_DEFINE_SYSTEM_ERROR macro.\n\n |
Anna Bridge |
186:707f6e361f3e | 459 | * Below are the Mbed System error codes and the description: |
Anna Bridge |
186:707f6e361f3e | 460 | * \verbatim |
Anna Bridge |
186:707f6e361f3e | 461 | UNKNOWN 256 Unknown error |
Anna Bridge |
186:707f6e361f3e | 462 | INVALID_ARGUMENT 257 Invalid Argument |
Anna Bridge |
186:707f6e361f3e | 463 | INVALID_DATA 258 Invalid data |
Anna Bridge |
186:707f6e361f3e | 464 | INVALID_FORMAT 259 Invalid format |
Anna Bridge |
186:707f6e361f3e | 465 | INVALID_INDEX 260 Invalid Index |
Anna Bridge |
186:707f6e361f3e | 466 | INVALID_SIZE 261 Inavlid Size |
Anna Bridge |
186:707f6e361f3e | 467 | INVALID_OPERATION 262 Invalid Operation |
Anna Bridge |
186:707f6e361f3e | 468 | NOT_FOUND 263 Not Found |
Anna Bridge |
186:707f6e361f3e | 469 | ACCESS_DENIED 264 Access Denied |
Anna Bridge |
186:707f6e361f3e | 470 | NOT_SUPPORTED 265 Not supported |
Anna Bridge |
186:707f6e361f3e | 471 | BUFFER_FULL 266 Buffer Full |
Anna Bridge |
186:707f6e361f3e | 472 | MEDIA_FULL 267 Media/Disk Full |
Anna Bridge |
186:707f6e361f3e | 473 | ALREADY_IN_USE 268 Already in use |
Anna Bridge |
186:707f6e361f3e | 474 | TIMEOUT 269 Timeout error |
Anna Bridge |
186:707f6e361f3e | 475 | NOT_READY 270 Not Ready |
Anna Bridge |
186:707f6e361f3e | 476 | FAILED_OPERATION 271 Requested Operation failed |
Anna Bridge |
186:707f6e361f3e | 477 | OPERATION_PROHIBITED 272 Operation prohibited |
Anna Bridge |
186:707f6e361f3e | 478 | OPERATION_ABORTED 273 Operation failed |
Anna Bridge |
186:707f6e361f3e | 479 | WRITE_PROTECTED 274 Attempt to write to write-protected resource |
Anna Bridge |
186:707f6e361f3e | 480 | NO_RESPONSE 275 No response |
Anna Bridge |
186:707f6e361f3e | 481 | SEMAPHORE_LOCK_FAILED 276 Sempahore lock failed |
Anna Bridge |
186:707f6e361f3e | 482 | MUTEX_LOCK_FAILED 277 Mutex lock failed |
Anna Bridge |
186:707f6e361f3e | 483 | SEMAPHORE_UNLOCK_FAILED 278 Sempahore unlock failed |
Anna Bridge |
186:707f6e361f3e | 484 | MUTEX_UNLOCK_FAILED 279 Mutex unlock failed |
Anna Bridge |
186:707f6e361f3e | 485 | CRC_ERROR 280 CRC error or mismatch |
Anna Bridge |
186:707f6e361f3e | 486 | OPEN_FAILED 281 Open failed |
Anna Bridge |
186:707f6e361f3e | 487 | CLOSE_FAILED 282 Close failed |
Anna Bridge |
186:707f6e361f3e | 488 | READ_FAILED 283 Read failed |
Anna Bridge |
186:707f6e361f3e | 489 | WRITE_FAILED 284 Write failed |
Anna Bridge |
186:707f6e361f3e | 490 | INITIALIZATION_FAILED 285 Initialization failed |
Anna Bridge |
186:707f6e361f3e | 491 | BOOT_FAILURE 286 Boot failure |
Anna Bridge |
186:707f6e361f3e | 492 | OUT_OF_MEMORY 287 Out of memory |
Anna Bridge |
186:707f6e361f3e | 493 | OUT_OF_RESOURCES 288 Out of resources |
Anna Bridge |
186:707f6e361f3e | 494 | ALLOC_FAILED 289 Alloc failed |
Anna Bridge |
186:707f6e361f3e | 495 | FREE_FAILED 290 Free failed |
Anna Bridge |
186:707f6e361f3e | 496 | OVERFLOW 291 Overflow error |
Anna Bridge |
186:707f6e361f3e | 497 | UNDERFLOW 292 Underflow error |
Anna Bridge |
186:707f6e361f3e | 498 | STACK_OVERFLOW 293 Stack overflow error |
Anna Bridge |
186:707f6e361f3e | 499 | ISR_QUEUE_OVERFLOW 294 ISR queue overflow |
Anna Bridge |
186:707f6e361f3e | 500 | TIMER_QUEUE_OVERFLOW 295 Timer Queue overflow |
Anna Bridge |
186:707f6e361f3e | 501 | CLIB_SPACE_UNAVAILABLE 296 Standard library error - Space unavailable |
Anna Bridge |
186:707f6e361f3e | 502 | CLIB_EXCEPTION 297 Standard library error - Exception |
Anna Bridge |
186:707f6e361f3e | 503 | CLIB_MUTEX_INIT_FAILURE 298 Standard library error - Mutex Init failure |
Anna Bridge |
186:707f6e361f3e | 504 | CREATE_FAILED 299 Create failed |
Anna Bridge |
186:707f6e361f3e | 505 | DELETE_FAILED 300 Delete failed |
Anna Bridge |
186:707f6e361f3e | 506 | THREAD_CREATE_FAILED 301 Thread Create failed |
Anna Bridge |
186:707f6e361f3e | 507 | THREAD_DELETE_FAILED 302 Thread Delete failed |
Anna Bridge |
186:707f6e361f3e | 508 | PROHIBITED_IN_ISR_CONTEXT 303 Operation Prohibited in ISR context |
Anna Bridge |
186:707f6e361f3e | 509 | PINMAP_INVALID 304 Pinmap Invalid |
Anna Bridge |
186:707f6e361f3e | 510 | RTOS_EVENT 305 Unknown Rtos Error |
Anna Bridge |
186:707f6e361f3e | 511 | RTOS_THREAD_EVENT 306 Rtos Thread Error |
Anna Bridge |
186:707f6e361f3e | 512 | RTOS_MUTEX_EVENT 307 Rtos Mutex Error |
Anna Bridge |
186:707f6e361f3e | 513 | RTOS_SEMAPHORE_EVENT 308 Rtos Semaphore Error |
Anna Bridge |
186:707f6e361f3e | 514 | RTOS_MEMORY_POOL_EVENT 309 Rtos Memory Pool Error |
Anna Bridge |
186:707f6e361f3e | 515 | RTOS_TIMER_EVENT 310 Rtos Timer Error |
Anna Bridge |
186:707f6e361f3e | 516 | RTOS_EVENT_FLAGS_EVENT 311 Rtos Event flags Error |
Anna Bridge |
186:707f6e361f3e | 517 | RTOS_MESSAGE_QUEUE_EVENT 312 Rtos Message queue Error |
Anna Bridge |
186:707f6e361f3e | 518 | DEVICE_BUSY 313 Device Busy |
Anna Bridge |
186:707f6e361f3e | 519 | CONFIG_UNSUPPORTED 314 Configuration not supported |
Anna Bridge |
186:707f6e361f3e | 520 | CONFIG_MISMATCH 315 Configuration mismatch |
Anna Bridge |
186:707f6e361f3e | 521 | ALREADY_INITIALIZED 316 Already initialzied |
Anna Bridge |
186:707f6e361f3e | 522 | HARDFAULT_EXCEPTION 317 HardFault exception |
Anna Bridge |
186:707f6e361f3e | 523 | MEMMANAGE_EXCEPTION 318 MemManage exception |
Anna Bridge |
186:707f6e361f3e | 524 | BUSFAULT_EXCEPTION 319 BusFault exception |
Anna Bridge |
186:707f6e361f3e | 525 | USAGEFAULT_EXCEPTION 320 UsageFault exception |
Anna Bridge |
186:707f6e361f3e | 526 | \endverbatim |
Anna Bridge |
186:707f6e361f3e | 527 | * |
Anna Bridge |
186:707f6e361f3e | 528 | * @note |
Anna Bridge |
186:707f6e361f3e | 529 | * Custom Error codes can be defined using the macro DEFINE_CUSTOM_ERROR\n |
Anna Bridge |
186:707f6e361f3e | 530 | * This is mainly meant to capture non-generic error codes specific to a device. |
Anna Bridge |
186:707f6e361f3e | 531 | * For example DEFINE_CUSTOM_ERROR( MY_CUSTOM_ERROR ,1 ) macro defines the following values:\n |
Anna Bridge |
186:707f6e361f3e | 532 | * ERROR_CODE_MY_CUSTOM_ERROR = MBED_CUSTOM_ERROR_BASE+1\n |
Anna Bridge |
186:707f6e361f3e | 533 | * ERROR_MY_CUSTOM_ERROR = MAKE_MBED_ERROR(ERROR_TYPE_CUSTOM, MBED_MODULE_UNKNOWN, ERROR_CODE_MY_CUSTOM_ERROR)\n |
Anna Bridge |
186:707f6e361f3e | 534 | * Its effectively equivalent to:\n |
Anna Bridge |
186:707f6e361f3e | 535 | * ERROR_CODE_MY_CUSTOM_ERROR = 4097\n |
Anna Bridge |
186:707f6e361f3e | 536 | * ERROR_MY_CUSTOM_ERROR = 0xA0FF1001\n (Note that MODULE field is set to MBED_MODULE_UNKNOWN) \n\n |
Anna Bridge |
186:707f6e361f3e | 537 | * |
Anna Bridge |
186:707f6e361f3e | 538 | * @note |
Anna Bridge |
186:707f6e361f3e | 539 | * **Using error codes:** \n |
Anna Bridge |
186:707f6e361f3e | 540 | * Posix error codes may be used in modules/functions currently using Posix error codes and switching them to Mbed-OS error codes |
Anna Bridge |
186:707f6e361f3e | 541 | * may cause interoperability issues. For example, some of the filesystem, network stack implementations may need to use |
Anna Bridge |
186:707f6e361f3e | 542 | * Posix error codes in order to keep them compatible with other modules interfacing with them, and may continue to use Posix error codes. |
Anna Bridge |
186:707f6e361f3e | 543 | * |
Anna Bridge |
186:707f6e361f3e | 544 | * In all other cases, like for any native development of Mbed-OS modules Mbed-OS error codes should be used. |
Anna Bridge |
186:707f6e361f3e | 545 | * This makes it easy to use Mbed-OS error reporting/logging infrastructure and makes debugging error scenarios |
Anna Bridge |
186:707f6e361f3e | 546 | * much more efficient. |
Anna Bridge |
186:707f6e361f3e | 547 | * |
Anna Bridge |
186:707f6e361f3e | 548 | * @note |
Anna Bridge |
186:707f6e361f3e | 549 | * **Searching for error codes in mbed-os source tree:** \n |
Anna Bridge |
186:707f6e361f3e | 550 | * If you get an error report as below which you want to search for in mbed-os source tree, first take note of "Error Code" number. \n |
Anna Bridge |
186:707f6e361f3e | 551 | * For example, the below error report has an error code of \b 259. Find the error name associated with the error code and in this case its \b INVALID_FORMAT. \n |
Anna Bridge |
186:707f6e361f3e | 552 | * Use that error name(\b INVALID_FORMAT) to search the source tree for code locations setting that specific error code. \n |
Anna Bridge |
186:707f6e361f3e | 553 | * If the Error module reported is not 255(which indicates unknown module), you can also use that to narrow down to the specific component reporting the error. |
Anna Bridge |
186:707f6e361f3e | 554 | * See mbed_module_type_t enum above for module mapping. \n |
Anna Bridge |
186:707f6e361f3e | 555 | * |
Anna Bridge |
186:707f6e361f3e | 556 | * \verbatim |
Anna Bridge |
186:707f6e361f3e | 557 | ++ MbedOS Error Info ++ |
Anna Bridge |
186:707f6e361f3e | 558 | Error Status: 0x80040103 |
Anna Bridge |
186:707f6e361f3e | 559 | Error Code: 259 |
Anna Bridge |
186:707f6e361f3e | 560 | Error Module: 04 |
Anna Bridge |
186:707f6e361f3e | 561 | Error Message: HAL Module error |
Anna Bridge |
186:707f6e361f3e | 562 | Error Location: 0x000067C7 |
Anna Bridge |
186:707f6e361f3e | 563 | Error Value: 0x00005566 |
Anna Bridge |
186:707f6e361f3e | 564 | Current Thread: Id: 0x200024A8 EntryFn: 0x0000FB0D StackSize: 0x00001000 StackMem: 0x200014A8 SP: 0x2002FFD8 |
Anna Bridge |
186:707f6e361f3e | 565 | -- MbedOS Error Info -- |
Anna Bridge |
186:707f6e361f3e | 566 | \endverbatim |
Anna Bridge |
186:707f6e361f3e | 567 | */ |
Anna Bridge |
186:707f6e361f3e | 568 | |
Anna Bridge |
186:707f6e361f3e | 569 | typedef enum _mbed_error_code |
Anna Bridge |
186:707f6e361f3e | 570 | { |
Anna Bridge |
186:707f6e361f3e | 571 | //Below are POSIX ERROR CODE definitions, which starts at MBED_POSIX_ERROR_BASE(=0) |
Anna Bridge |
186:707f6e361f3e | 572 | //POSIX ERROR CODE definitions starts at offset 0(MBED_POSIX_ERROR_BASE) to align them with actual Posix Error Code |
Anna Bridge |
186:707f6e361f3e | 573 | //defintions in mbed_retarget.h |
Anna Bridge |
186:707f6e361f3e | 574 | // Error Name Error Code |
Anna Bridge |
186:707f6e361f3e | 575 | MBED_DEFINE_POSIX_ERROR( EPERM ,EPERM ), /* 1 Operation not permitted */ |
Anna Bridge |
186:707f6e361f3e | 576 | MBED_DEFINE_POSIX_ERROR( ENOENT ,ENOENT ), /* 2 No such file or directory */ |
Anna Bridge |
186:707f6e361f3e | 577 | MBED_DEFINE_POSIX_ERROR( ESRCH ,ESRCH ), /* 3 No such process */ |
Anna Bridge |
186:707f6e361f3e | 578 | MBED_DEFINE_POSIX_ERROR( EINTR ,EINTR ), /* 4 Interrupted system call */ |
Anna Bridge |
186:707f6e361f3e | 579 | MBED_DEFINE_POSIX_ERROR( EIO ,EIO ), /* 5 I/O error */ |
Anna Bridge |
186:707f6e361f3e | 580 | MBED_DEFINE_POSIX_ERROR( ENXIO ,ENXIO ), /* 6 No such device or address */ |
Anna Bridge |
186:707f6e361f3e | 581 | MBED_DEFINE_POSIX_ERROR( E2BIG ,E2BIG ), /* 7 Argument list too long */ |
Anna Bridge |
186:707f6e361f3e | 582 | MBED_DEFINE_POSIX_ERROR( ENOEXEC ,ENOEXEC ), /* 8 Exec format error */ |
Anna Bridge |
186:707f6e361f3e | 583 | MBED_DEFINE_POSIX_ERROR( EBADF ,EBADF ), /* 9 Bad file number */ |
Anna Bridge |
186:707f6e361f3e | 584 | MBED_DEFINE_POSIX_ERROR( ECHILD ,ECHILD ), /* 10 No child processes */ |
Anna Bridge |
186:707f6e361f3e | 585 | MBED_DEFINE_POSIX_ERROR( EAGAIN ,EAGAIN ), /* 11 Try again */ |
Anna Bridge |
186:707f6e361f3e | 586 | MBED_DEFINE_POSIX_ERROR( ENOMEM ,ENOMEM ), /* 12 Out of memory */ |
Anna Bridge |
186:707f6e361f3e | 587 | MBED_DEFINE_POSIX_ERROR( EACCES ,EACCES ), /* 13 Permission denied */ |
Anna Bridge |
186:707f6e361f3e | 588 | MBED_DEFINE_POSIX_ERROR( EFAULT ,EFAULT ), /* 14 Bad address */ |
Anna Bridge |
186:707f6e361f3e | 589 | MBED_DEFINE_POSIX_ERROR( ENOTBLK ,ENOTBLK ), /* 15 Block device required */ |
Anna Bridge |
186:707f6e361f3e | 590 | MBED_DEFINE_POSIX_ERROR( EBUSY ,EBUSY ), /* 16 Device or resource busy */ |
Anna Bridge |
186:707f6e361f3e | 591 | MBED_DEFINE_POSIX_ERROR( EEXIST ,EEXIST ), /* 17 File exists */ |
Anna Bridge |
186:707f6e361f3e | 592 | MBED_DEFINE_POSIX_ERROR( EXDEV ,EXDEV ), /* 18 Cross-device link */ |
Anna Bridge |
186:707f6e361f3e | 593 | MBED_DEFINE_POSIX_ERROR( ENODEV ,ENODEV ), /* 19 No such device */ |
Anna Bridge |
186:707f6e361f3e | 594 | MBED_DEFINE_POSIX_ERROR( ENOTDIR ,ENOTDIR ), /* 20 Not a directory */ |
Anna Bridge |
186:707f6e361f3e | 595 | MBED_DEFINE_POSIX_ERROR( EISDIR ,EISDIR ), /* 21 Is a directory */ |
Anna Bridge |
186:707f6e361f3e | 596 | MBED_DEFINE_POSIX_ERROR( EINVAL ,EINVAL ), /* 22 Invalid argument */ |
Anna Bridge |
186:707f6e361f3e | 597 | MBED_DEFINE_POSIX_ERROR( ENFILE ,ENFILE ), /* 23 File table overflow */ |
Anna Bridge |
186:707f6e361f3e | 598 | MBED_DEFINE_POSIX_ERROR( EMFILE ,EMFILE ), /* 24 Too many open files */ |
Anna Bridge |
186:707f6e361f3e | 599 | MBED_DEFINE_POSIX_ERROR( ENOTTY ,ENOTTY ), /* 25 Not a typewriter */ |
Anna Bridge |
186:707f6e361f3e | 600 | MBED_DEFINE_POSIX_ERROR( ETXTBSY ,ETXTBSY ), /* 26 Text file busy */ |
Anna Bridge |
186:707f6e361f3e | 601 | MBED_DEFINE_POSIX_ERROR( EFBIG ,EFBIG ), /* 27 File too large */ |
Anna Bridge |
186:707f6e361f3e | 602 | MBED_DEFINE_POSIX_ERROR( ENOSPC ,ENOSPC ), /* 28 No space left on device */ |
Anna Bridge |
186:707f6e361f3e | 603 | MBED_DEFINE_POSIX_ERROR( ESPIPE ,ESPIPE ), /* 29 Illegal seek */ |
Anna Bridge |
186:707f6e361f3e | 604 | MBED_DEFINE_POSIX_ERROR( EROFS ,EROFS ), /* 30 Read-only file system */ |
Anna Bridge |
186:707f6e361f3e | 605 | MBED_DEFINE_POSIX_ERROR( EMLINK ,EMLINK ), /* 31 Too many links */ |
Anna Bridge |
186:707f6e361f3e | 606 | MBED_DEFINE_POSIX_ERROR( EPIPE ,EPIPE ), /* 32 Broken pipe */ |
Anna Bridge |
186:707f6e361f3e | 607 | MBED_DEFINE_POSIX_ERROR( EDOM ,EDOM ), /* 33 Math argument out of domain of func */ |
Anna Bridge |
186:707f6e361f3e | 608 | MBED_DEFINE_POSIX_ERROR( ERANGE ,ERANGE ), /* 34 Math result not representable */ |
Anna Bridge |
186:707f6e361f3e | 609 | MBED_DEFINE_POSIX_ERROR( EDEADLK ,EDEADLK ), /* 35 Resource deadlock would occur */ |
Anna Bridge |
186:707f6e361f3e | 610 | MBED_DEFINE_POSIX_ERROR( ENAMETOOLONG ,ENAMETOOLONG ), /* 36 File name too long */ |
Anna Bridge |
186:707f6e361f3e | 611 | MBED_DEFINE_POSIX_ERROR( ENOLCK ,ENOLCK ), /* 37 No record locks available */ |
Anna Bridge |
186:707f6e361f3e | 612 | MBED_DEFINE_POSIX_ERROR( ENOSYS ,ENOSYS ), /* 38 Function not implemented */ |
Anna Bridge |
186:707f6e361f3e | 613 | MBED_DEFINE_POSIX_ERROR( ENOTEMPTY ,ENOTEMPTY ), /* 39 Directory not empty */ |
Anna Bridge |
186:707f6e361f3e | 614 | MBED_DEFINE_POSIX_ERROR( ELOOP ,ELOOP ), /* 40 Too many symbolic links encountered */ |
Anna Bridge |
186:707f6e361f3e | 615 | MBED_DEFINE_POSIX_ERROR( EWOULDBLOCK ,EAGAIN ), /* EAGAIN Operation would block */ |
Anna Bridge |
186:707f6e361f3e | 616 | MBED_DEFINE_POSIX_ERROR( ENOMSG ,ENOMSG ), /* 42 No message of desired type */ |
Anna Bridge |
186:707f6e361f3e | 617 | MBED_DEFINE_POSIX_ERROR( EIDRM ,EIDRM ), /* 43 Identifier removed */ |
Anna Bridge |
186:707f6e361f3e | 618 | MBED_DEFINE_POSIX_ERROR( ECHRNG ,ECHRNG ), /* 44 Channel number out of range */ |
Anna Bridge |
186:707f6e361f3e | 619 | MBED_DEFINE_POSIX_ERROR( EL2NSYNC ,EL2NSYNC ), /* 45 Level 2 not synchronized */ |
Anna Bridge |
186:707f6e361f3e | 620 | MBED_DEFINE_POSIX_ERROR( EL3HLT ,EL3HLT ), /* 46 Level 3 halted */ |
Anna Bridge |
186:707f6e361f3e | 621 | MBED_DEFINE_POSIX_ERROR( EL3RST ,EL3RST ), /* 47 Level 3 reset */ |
Anna Bridge |
186:707f6e361f3e | 622 | MBED_DEFINE_POSIX_ERROR( ELNRNG ,ELNRNG ), /* 48 Link number out of range */ |
Anna Bridge |
186:707f6e361f3e | 623 | MBED_DEFINE_POSIX_ERROR( EUNATCH ,EUNATCH ), /* 49 Protocol driver not attached */ |
Anna Bridge |
186:707f6e361f3e | 624 | MBED_DEFINE_POSIX_ERROR( ENOCSI ,ENOCSI ), /* 50 No CSI structure available */ |
Anna Bridge |
186:707f6e361f3e | 625 | MBED_DEFINE_POSIX_ERROR( EL2HLT ,EL2HLT ), /* 51 Level 2 halted */ |
Anna Bridge |
186:707f6e361f3e | 626 | MBED_DEFINE_POSIX_ERROR( EBADE ,EBADE ), /* 52 Invalid exchange */ |
Anna Bridge |
186:707f6e361f3e | 627 | MBED_DEFINE_POSIX_ERROR( EBADR ,EBADR ), /* 53 Invalid request descriptor */ |
Anna Bridge |
186:707f6e361f3e | 628 | MBED_DEFINE_POSIX_ERROR( EXFULL ,EXFULL ), /* 54 Exchange full */ |
Anna Bridge |
186:707f6e361f3e | 629 | MBED_DEFINE_POSIX_ERROR( ENOANO ,ENOANO ), /* 55 No anode */ |
Anna Bridge |
186:707f6e361f3e | 630 | MBED_DEFINE_POSIX_ERROR( EBADRQC ,EBADRQC ), /* 56 Invalid request code */ |
Anna Bridge |
186:707f6e361f3e | 631 | MBED_DEFINE_POSIX_ERROR( EBADSLT ,EBADSLT ), /* 57 Invalid slot */ |
Anna Bridge |
186:707f6e361f3e | 632 | MBED_DEFINE_POSIX_ERROR( EDEADLOCK ,EDEADLK ), /* EDEADLK Resource deadlock would occur */ |
Anna Bridge |
186:707f6e361f3e | 633 | MBED_DEFINE_POSIX_ERROR( EBFONT ,EBFONT ), /* 59 Bad font file format */ |
Anna Bridge |
186:707f6e361f3e | 634 | MBED_DEFINE_POSIX_ERROR( ENOSTR ,ENOSTR ), /* 60 Device not a stream */ |
Anna Bridge |
186:707f6e361f3e | 635 | MBED_DEFINE_POSIX_ERROR( ENODATA ,ENODATA ), /* 61 No data available */ |
Anna Bridge |
186:707f6e361f3e | 636 | MBED_DEFINE_POSIX_ERROR( ETIME ,ETIME ), /* 62 Timer expired */ |
Anna Bridge |
186:707f6e361f3e | 637 | MBED_DEFINE_POSIX_ERROR( ENOSR ,ENOSR ), /* 63 Out of streams resources */ |
Anna Bridge |
186:707f6e361f3e | 638 | MBED_DEFINE_POSIX_ERROR( ENONET ,ENONET ), /* 64 Machine is not on the network */ |
Anna Bridge |
186:707f6e361f3e | 639 | MBED_DEFINE_POSIX_ERROR( ENOPKG ,ENOPKG ), /* 65 Package not installed */ |
Anna Bridge |
186:707f6e361f3e | 640 | MBED_DEFINE_POSIX_ERROR( EREMOTE ,EREMOTE ), /* 66 Object is remote */ |
Anna Bridge |
186:707f6e361f3e | 641 | MBED_DEFINE_POSIX_ERROR( ENOLINK ,ENOLINK ), /* 67 Link has been severed */ |
Anna Bridge |
186:707f6e361f3e | 642 | MBED_DEFINE_POSIX_ERROR( EADV ,EADV ), /* 68 Advertise error */ |
Anna Bridge |
186:707f6e361f3e | 643 | MBED_DEFINE_POSIX_ERROR( ESRMNT ,ESRMNT ), /* 69 Srmount error */ |
Anna Bridge |
186:707f6e361f3e | 644 | MBED_DEFINE_POSIX_ERROR( ECOMM ,ECOMM ), /* 70 Communication error on send */ |
Anna Bridge |
186:707f6e361f3e | 645 | MBED_DEFINE_POSIX_ERROR( EPROTO ,EPROTO ), /* 71 Protocol error */ |
Anna Bridge |
186:707f6e361f3e | 646 | MBED_DEFINE_POSIX_ERROR( EMULTIHOP ,EMULTIHOP ), /* 72 Multihop attempted */ |
Anna Bridge |
186:707f6e361f3e | 647 | MBED_DEFINE_POSIX_ERROR( EDOTDOT ,EDOTDOT ), /* 73 RFS specific error */ |
Anna Bridge |
186:707f6e361f3e | 648 | MBED_DEFINE_POSIX_ERROR( EBADMSG ,EBADMSG ), /* 74 Not a data message */ |
Anna Bridge |
186:707f6e361f3e | 649 | MBED_DEFINE_POSIX_ERROR( EOVERFLOW ,EOVERFLOW ), /* 75 Value too large for defined data type */ |
Anna Bridge |
186:707f6e361f3e | 650 | MBED_DEFINE_POSIX_ERROR( ENOTUNIQ ,ENOTUNIQ ), /* 76 Name not unique on network */ |
Anna Bridge |
186:707f6e361f3e | 651 | MBED_DEFINE_POSIX_ERROR( EBADFD ,EBADFD ), /* 77 File descriptor in bad state */ |
Anna Bridge |
186:707f6e361f3e | 652 | MBED_DEFINE_POSIX_ERROR( EREMCHG ,EREMCHG ), /* 78 Remote address changed */ |
Anna Bridge |
186:707f6e361f3e | 653 | MBED_DEFINE_POSIX_ERROR( ELIBACC ,ELIBACC ), /* 79 Can not access a needed shared library */ |
Anna Bridge |
186:707f6e361f3e | 654 | MBED_DEFINE_POSIX_ERROR( ELIBBAD ,ELIBBAD ), /* 80 Accessing a corrupted shared library */ |
Anna Bridge |
186:707f6e361f3e | 655 | MBED_DEFINE_POSIX_ERROR( ELIBSCN ,ELIBSCN ), /* 81 .lib section in a.out corrupted */ |
Anna Bridge |
186:707f6e361f3e | 656 | MBED_DEFINE_POSIX_ERROR( ELIBMAX ,ELIBMAX ), /* 82 Attempting to link in too many shared libraries */ |
Anna Bridge |
186:707f6e361f3e | 657 | MBED_DEFINE_POSIX_ERROR( ELIBEXEC ,ELIBEXEC ), /* 83 Cannot exec a shared library directly */ |
Anna Bridge |
186:707f6e361f3e | 658 | MBED_DEFINE_POSIX_ERROR( EILSEQ ,EILSEQ ), /* 84 Illegal byte sequence */ |
Anna Bridge |
186:707f6e361f3e | 659 | MBED_DEFINE_POSIX_ERROR( ERESTART ,ERESTART ), /* 85 Interrupted system call should be restarted */ |
Anna Bridge |
186:707f6e361f3e | 660 | MBED_DEFINE_POSIX_ERROR( ESTRPIPE ,ESTRPIPE ), /* 86 Streams pipe error */ |
Anna Bridge |
186:707f6e361f3e | 661 | MBED_DEFINE_POSIX_ERROR( EUSERS ,EUSERS ), /* 87 Too many users */ |
Anna Bridge |
186:707f6e361f3e | 662 | MBED_DEFINE_POSIX_ERROR( ENOTSOCK ,ENOTSOCK ), /* 88 Socket operation on non-socket */ |
Anna Bridge |
186:707f6e361f3e | 663 | MBED_DEFINE_POSIX_ERROR( EDESTADDRREQ ,EDESTADDRREQ ), /* 89 Destination address required */ |
Anna Bridge |
186:707f6e361f3e | 664 | MBED_DEFINE_POSIX_ERROR( EMSGSIZE ,EMSGSIZE ), /* 90 Message too long */ |
Anna Bridge |
186:707f6e361f3e | 665 | MBED_DEFINE_POSIX_ERROR( EPROTOTYPE ,EPROTOTYPE ), /* 91 Protocol wrong type for socket */ |
Anna Bridge |
186:707f6e361f3e | 666 | MBED_DEFINE_POSIX_ERROR( ENOPROTOOPT ,ENOPROTOOPT ), /* 92 Protocol not available */ |
Anna Bridge |
186:707f6e361f3e | 667 | MBED_DEFINE_POSIX_ERROR( EPROTONOSUPPORT ,EPROTONOSUPPORT ), /* 93 Protocol not supported */ |
Anna Bridge |
186:707f6e361f3e | 668 | MBED_DEFINE_POSIX_ERROR( ESOCKTNOSUPPORT ,ESOCKTNOSUPPORT ), /* 94 Socket type not supported */ |
Anna Bridge |
186:707f6e361f3e | 669 | MBED_DEFINE_POSIX_ERROR( EOPNOTSUPP ,EOPNOTSUPP ), /* 95 Operation not supported on transport endpoint */ |
Anna Bridge |
186:707f6e361f3e | 670 | MBED_DEFINE_POSIX_ERROR( EPFNOSUPPORT ,EPFNOSUPPORT ), /* 96 Protocol family not supported */ |
Anna Bridge |
186:707f6e361f3e | 671 | MBED_DEFINE_POSIX_ERROR( EAFNOSUPPORT ,EAFNOSUPPORT ), /* 97 Address family not supported by protocol */ |
Anna Bridge |
186:707f6e361f3e | 672 | MBED_DEFINE_POSIX_ERROR( EADDRINUSE ,EADDRINUSE ), /* 98 Address already in use */ |
Anna Bridge |
186:707f6e361f3e | 673 | MBED_DEFINE_POSIX_ERROR( EADDRNOTAVAIL ,EADDRNOTAVAIL ), /* 99 Cannot assign requested address */ |
Anna Bridge |
186:707f6e361f3e | 674 | MBED_DEFINE_POSIX_ERROR( ENETDOWN ,ENETDOWN ), /* 100 Network is down */ |
Anna Bridge |
186:707f6e361f3e | 675 | MBED_DEFINE_POSIX_ERROR( ENETUNREACH ,ENETUNREACH ), /* 101 Network is unreachable */ |
Anna Bridge |
186:707f6e361f3e | 676 | MBED_DEFINE_POSIX_ERROR( ENETRESET ,ENETRESET ), /* 102 Network dropped connection because of reset */ |
Anna Bridge |
186:707f6e361f3e | 677 | MBED_DEFINE_POSIX_ERROR( ECONNABORTED ,ECONNABORTED ), /* 103 Software caused connection abort */ |
Anna Bridge |
186:707f6e361f3e | 678 | MBED_DEFINE_POSIX_ERROR( ECONNRESET ,ECONNRESET ), /* 104 Connection reset by peer */ |
Anna Bridge |
186:707f6e361f3e | 679 | MBED_DEFINE_POSIX_ERROR( ENOBUFS ,ENOBUFS ), /* 105 No buffer space available */ |
Anna Bridge |
186:707f6e361f3e | 680 | MBED_DEFINE_POSIX_ERROR( EISCONN ,EISCONN ), /* 106 Transport endpoint is already connected */ |
Anna Bridge |
186:707f6e361f3e | 681 | MBED_DEFINE_POSIX_ERROR( ENOTCONN ,ENOTCONN ), /* 107 Transport endpoint is not connected */ |
Anna Bridge |
186:707f6e361f3e | 682 | MBED_DEFINE_POSIX_ERROR( ESHUTDOWN ,ESHUTDOWN ), /* 108 Cannot send after transport endpoint shutdown */ |
Anna Bridge |
186:707f6e361f3e | 683 | MBED_DEFINE_POSIX_ERROR( ETOOMANYREFS ,ETOOMANYREFS ), /* 109 Too many references: cannot splice */ |
Anna Bridge |
186:707f6e361f3e | 684 | MBED_DEFINE_POSIX_ERROR( ETIMEDOUT ,ETIMEDOUT ), /* 110 Connection timed out */ |
Anna Bridge |
186:707f6e361f3e | 685 | MBED_DEFINE_POSIX_ERROR( ECONNREFUSED ,ECONNREFUSED ), /* 111 Connection refused */ |
Anna Bridge |
186:707f6e361f3e | 686 | MBED_DEFINE_POSIX_ERROR( EHOSTDOWN ,EHOSTDOWN ), /* 112 Host is down */ |
Anna Bridge |
186:707f6e361f3e | 687 | MBED_DEFINE_POSIX_ERROR( EHOSTUNREACH ,EHOSTUNREACH ), /* 113 No route to host */ |
Anna Bridge |
186:707f6e361f3e | 688 | MBED_DEFINE_POSIX_ERROR( EALREADY ,EALREADY ), /* 114 Operation already in progress */ |
Anna Bridge |
186:707f6e361f3e | 689 | MBED_DEFINE_POSIX_ERROR( EINPROGRESS ,EINPROGRESS ), /* 115 Operation now in progress */ |
Anna Bridge |
186:707f6e361f3e | 690 | MBED_DEFINE_POSIX_ERROR( ESTALE ,ESTALE ), /* 116 Stale NFS file handle */ |
Anna Bridge |
186:707f6e361f3e | 691 | MBED_DEFINE_POSIX_ERROR( EUCLEAN ,EUCLEAN ), /* 117 Structure needs cleaning */ |
Anna Bridge |
186:707f6e361f3e | 692 | MBED_DEFINE_POSIX_ERROR( ENOTNAM ,ENOTNAM ), /* 118 Not a XENIX named type file */ |
Anna Bridge |
186:707f6e361f3e | 693 | MBED_DEFINE_POSIX_ERROR( ENAVAIL ,ENAVAIL ), /* 119 No XENIX semaphores available */ |
Anna Bridge |
186:707f6e361f3e | 694 | MBED_DEFINE_POSIX_ERROR( EISNAM ,EISNAM ), /* 120 Is a named type file */ |
Anna Bridge |
186:707f6e361f3e | 695 | MBED_DEFINE_POSIX_ERROR( EREMOTEIO ,EREMOTEIO ), /* 121 Remote I/O error */ |
Anna Bridge |
186:707f6e361f3e | 696 | MBED_DEFINE_POSIX_ERROR( EDQUOT ,EDQUOT ), /* 122 Quota exceeded */ |
Anna Bridge |
186:707f6e361f3e | 697 | MBED_DEFINE_POSIX_ERROR( ENOMEDIUM ,ENOMEDIUM ), /* 123 No medium found */ |
Anna Bridge |
186:707f6e361f3e | 698 | MBED_DEFINE_POSIX_ERROR( EMEDIUMTYPE ,EMEDIUMTYPE ), /* 124 Wrong medium type */ |
Anna Bridge |
186:707f6e361f3e | 699 | MBED_DEFINE_POSIX_ERROR( ECANCELED ,ECANCELED ), /* 125 Operation Canceled */ |
Anna Bridge |
186:707f6e361f3e | 700 | MBED_DEFINE_POSIX_ERROR( ENOKEY ,ENOKEY ), /* 126 Required key not available */ |
Anna Bridge |
186:707f6e361f3e | 701 | MBED_DEFINE_POSIX_ERROR( EKEYEXPIRED ,EKEYEXPIRED ), /* 127 Key has expired */ |
Anna Bridge |
186:707f6e361f3e | 702 | MBED_DEFINE_POSIX_ERROR( EKEYREVOKED ,EKEYREVOKED ), /* 128 Key has been revoked */ |
Anna Bridge |
186:707f6e361f3e | 703 | MBED_DEFINE_POSIX_ERROR( EKEYREJECTED ,EKEYREJECTED ), /* 129 Key was rejected by service */ |
Anna Bridge |
186:707f6e361f3e | 704 | MBED_DEFINE_POSIX_ERROR( EOWNERDEAD ,EOWNERDEAD ), /* 130 Owner died */ |
Anna Bridge |
186:707f6e361f3e | 705 | MBED_DEFINE_POSIX_ERROR( ENOTRECOVERABLE ,ENOTRECOVERABLE ), /* 131 State not recoverable */ |
Anna Bridge |
186:707f6e361f3e | 706 | |
Anna Bridge |
186:707f6e361f3e | 707 | //Below are MBED SYSTEM ERROR CODE definitions |
Anna Bridge |
186:707f6e361f3e | 708 | //MBED SYSTEM ERROR CODE definitions starts at offset MBED_SYSTEM_ERROR_BASE, see above. |
Anna Bridge |
186:707f6e361f3e | 709 | // Error Name Error Offset Error Code |
Anna Bridge |
186:707f6e361f3e | 710 | MBED_DEFINE_SYSTEM_ERROR( UNKNOWN ,0 ), /* 256 Unknown error */ |
Anna Bridge |
186:707f6e361f3e | 711 | MBED_DEFINE_SYSTEM_ERROR( INVALID_ARGUMENT ,1 ), /* 257 Invalid Argument */ |
Anna Bridge |
186:707f6e361f3e | 712 | MBED_DEFINE_SYSTEM_ERROR( INVALID_DATA_DETECTED ,2 ), /* 258 Invalid data detected */ |
Anna Bridge |
186:707f6e361f3e | 713 | MBED_DEFINE_SYSTEM_ERROR( INVALID_FORMAT ,3 ), /* 259 Invalid format */ |
Anna Bridge |
186:707f6e361f3e | 714 | MBED_DEFINE_SYSTEM_ERROR( INVALID_INDEX ,4 ), /* 260 Invalid Index */ |
Anna Bridge |
186:707f6e361f3e | 715 | MBED_DEFINE_SYSTEM_ERROR( INVALID_SIZE ,5 ), /* 261 Inavlid Size */ |
Anna Bridge |
186:707f6e361f3e | 716 | MBED_DEFINE_SYSTEM_ERROR( INVALID_OPERATION ,6 ), /* 262 Invalid Operation */ |
Anna Bridge |
186:707f6e361f3e | 717 | MBED_DEFINE_SYSTEM_ERROR( ITEM_NOT_FOUND ,7 ), /* 263 Item Not Found */ |
Anna Bridge |
186:707f6e361f3e | 718 | MBED_DEFINE_SYSTEM_ERROR( ACCESS_DENIED ,8 ), /* 264 Access Denied */ |
Anna Bridge |
186:707f6e361f3e | 719 | MBED_DEFINE_SYSTEM_ERROR( UNSUPPORTED ,9 ), /* 265 Unsupported */ |
Anna Bridge |
186:707f6e361f3e | 720 | MBED_DEFINE_SYSTEM_ERROR( BUFFER_FULL ,10 ), /* 266 Buffer Full */ |
Anna Bridge |
186:707f6e361f3e | 721 | MBED_DEFINE_SYSTEM_ERROR( MEDIA_FULL ,11 ), /* 267 Media/Disk Full */ |
Anna Bridge |
186:707f6e361f3e | 722 | MBED_DEFINE_SYSTEM_ERROR( ALREADY_IN_USE ,12 ), /* 268 Already in use */ |
Anna Bridge |
186:707f6e361f3e | 723 | MBED_DEFINE_SYSTEM_ERROR( TIME_OUT ,13 ), /* 269 Timeout error */ |
Anna Bridge |
186:707f6e361f3e | 724 | MBED_DEFINE_SYSTEM_ERROR( NOT_READY ,14 ), /* 270 Not Ready */ |
Anna Bridge |
186:707f6e361f3e | 725 | MBED_DEFINE_SYSTEM_ERROR( FAILED_OPERATION ,15 ), /* 271 Requested Operation failed */ |
Anna Bridge |
186:707f6e361f3e | 726 | MBED_DEFINE_SYSTEM_ERROR( OPERATION_PROHIBITED ,16 ), /* 272 Operation prohibited */ |
Anna Bridge |
186:707f6e361f3e | 727 | MBED_DEFINE_SYSTEM_ERROR( OPERATION_ABORTED ,17 ), /* 273 Operation failed */ |
Anna Bridge |
186:707f6e361f3e | 728 | MBED_DEFINE_SYSTEM_ERROR( WRITE_PROTECTED ,18 ), /* 274 Attempt to write to write-protected resource */ |
Anna Bridge |
186:707f6e361f3e | 729 | MBED_DEFINE_SYSTEM_ERROR( NO_RESPONSE ,19 ), /* 275 No response */ |
Anna Bridge |
186:707f6e361f3e | 730 | MBED_DEFINE_SYSTEM_ERROR( SEMAPHORE_LOCK_FAILED ,20 ), /* 276 Sempahore lock failed */ |
Anna Bridge |
186:707f6e361f3e | 731 | MBED_DEFINE_SYSTEM_ERROR( MUTEX_LOCK_FAILED ,21 ), /* 277 Mutex lock failed */ |
Anna Bridge |
186:707f6e361f3e | 732 | MBED_DEFINE_SYSTEM_ERROR( SEMAPHORE_UNLOCK_FAILED ,22 ), /* 278 Sempahore unlock failed */ |
Anna Bridge |
186:707f6e361f3e | 733 | MBED_DEFINE_SYSTEM_ERROR( MUTEX_UNLOCK_FAILED ,23 ), /* 279 Mutex unlock failed */ |
Anna Bridge |
186:707f6e361f3e | 734 | MBED_DEFINE_SYSTEM_ERROR( CRC_ERROR ,24 ), /* 280 CRC error or mismatch */ |
Anna Bridge |
186:707f6e361f3e | 735 | MBED_DEFINE_SYSTEM_ERROR( OPEN_FAILED ,25 ), /* 281 Open failed */ |
Anna Bridge |
186:707f6e361f3e | 736 | MBED_DEFINE_SYSTEM_ERROR( CLOSE_FAILED ,26 ), /* 282 Close failed */ |
Anna Bridge |
186:707f6e361f3e | 737 | MBED_DEFINE_SYSTEM_ERROR( READ_FAILED ,27 ), /* 283 Read failed */ |
Anna Bridge |
186:707f6e361f3e | 738 | MBED_DEFINE_SYSTEM_ERROR( WRITE_FAILED ,28 ), /* 284 Write failed */ |
Anna Bridge |
186:707f6e361f3e | 739 | MBED_DEFINE_SYSTEM_ERROR( INITIALIZATION_FAILED ,29 ), /* 285 Initialization failed */ |
Anna Bridge |
186:707f6e361f3e | 740 | MBED_DEFINE_SYSTEM_ERROR( BOOT_FAILURE ,30 ), /* 286 Boot failure */ |
Anna Bridge |
186:707f6e361f3e | 741 | MBED_DEFINE_SYSTEM_ERROR( OUT_OF_MEMORY ,31 ), /* 287 Out of memory */ |
Anna Bridge |
186:707f6e361f3e | 742 | MBED_DEFINE_SYSTEM_ERROR( OUT_OF_RESOURCES ,32 ), /* 288 Out of resources */ |
Anna Bridge |
186:707f6e361f3e | 743 | MBED_DEFINE_SYSTEM_ERROR( ALLOC_FAILED ,33 ), /* 289 Alloc failed */ |
Anna Bridge |
186:707f6e361f3e | 744 | MBED_DEFINE_SYSTEM_ERROR( FREE_FAILED ,34 ), /* 290 Free failed */ |
Anna Bridge |
186:707f6e361f3e | 745 | MBED_DEFINE_SYSTEM_ERROR( OVERFLOW ,35 ), /* 291 Overflow error */ |
Anna Bridge |
186:707f6e361f3e | 746 | MBED_DEFINE_SYSTEM_ERROR( UNDERFLOW ,36 ), /* 292 Underflow error */ |
Anna Bridge |
186:707f6e361f3e | 747 | MBED_DEFINE_SYSTEM_ERROR( STACK_OVERFLOW ,37 ), /* 293 Stack overflow error */ |
Anna Bridge |
186:707f6e361f3e | 748 | MBED_DEFINE_SYSTEM_ERROR( ISR_QUEUE_OVERFLOW ,38 ), /* 294 ISR queue overflow */ |
Anna Bridge |
186:707f6e361f3e | 749 | MBED_DEFINE_SYSTEM_ERROR( TIMER_QUEUE_OVERFLOW ,39 ), /* 295 Timer Queue overflow */ |
Anna Bridge |
186:707f6e361f3e | 750 | MBED_DEFINE_SYSTEM_ERROR( CLIB_SPACE_UNAVAILABLE ,40 ), /* 296 Standard library error - Space unavailable */ |
Anna Bridge |
186:707f6e361f3e | 751 | MBED_DEFINE_SYSTEM_ERROR( CLIB_EXCEPTION ,41 ), /* 297 Standard library error - Exception */ |
Anna Bridge |
186:707f6e361f3e | 752 | MBED_DEFINE_SYSTEM_ERROR( CLIB_MUTEX_INIT_FAILURE ,42 ), /* 298 Standard library error - Mutex Init failure */ |
Anna Bridge |
186:707f6e361f3e | 753 | MBED_DEFINE_SYSTEM_ERROR( CREATE_FAILED ,43 ), /* 299 Create failed */ |
Anna Bridge |
186:707f6e361f3e | 754 | MBED_DEFINE_SYSTEM_ERROR( DELETE_FAILED ,44 ), /* 300 Delete failed */ |
Anna Bridge |
186:707f6e361f3e | 755 | MBED_DEFINE_SYSTEM_ERROR( THREAD_CREATE_FAILED ,45 ), /* 301 Thread Create failed */ |
Anna Bridge |
186:707f6e361f3e | 756 | MBED_DEFINE_SYSTEM_ERROR( THREAD_DELETE_FAILED ,46 ), /* 302 Thread Delete failed */ |
Anna Bridge |
186:707f6e361f3e | 757 | MBED_DEFINE_SYSTEM_ERROR( PROHIBITED_IN_ISR_CONTEXT ,47 ), /* 303 Operation Prohibited in ISR context */ |
Anna Bridge |
186:707f6e361f3e | 758 | MBED_DEFINE_SYSTEM_ERROR( PINMAP_INVALID ,48 ), /* 304 Pinmap Invalid */ |
Anna Bridge |
186:707f6e361f3e | 759 | MBED_DEFINE_SYSTEM_ERROR( RTOS_EVENT ,49 ), /* 305 Unknown Rtos Error */ |
Anna Bridge |
186:707f6e361f3e | 760 | MBED_DEFINE_SYSTEM_ERROR( RTOS_THREAD_EVENT ,50 ), /* 306 Rtos Thread Error */ |
Anna Bridge |
186:707f6e361f3e | 761 | MBED_DEFINE_SYSTEM_ERROR( RTOS_MUTEX_EVENT ,51 ), /* 307 Rtos Mutex Error */ |
Anna Bridge |
186:707f6e361f3e | 762 | MBED_DEFINE_SYSTEM_ERROR( RTOS_SEMAPHORE_EVENT ,52 ), /* 308 Rtos Semaphore Error */ |
Anna Bridge |
186:707f6e361f3e | 763 | MBED_DEFINE_SYSTEM_ERROR( RTOS_MEMORY_POOL_EVENT ,53 ), /* 309 Rtos Memory Pool Error */ |
Anna Bridge |
186:707f6e361f3e | 764 | MBED_DEFINE_SYSTEM_ERROR( RTOS_TIMER_EVENT ,54 ), /* 310 Rtos Timer Error */ |
Anna Bridge |
186:707f6e361f3e | 765 | MBED_DEFINE_SYSTEM_ERROR( RTOS_EVENT_FLAGS_EVENT ,55 ), /* 311 Rtos Event flags Error */ |
Anna Bridge |
186:707f6e361f3e | 766 | MBED_DEFINE_SYSTEM_ERROR( RTOS_MESSAGE_QUEUE_EVENT ,56 ), /* 312 Rtos Message queue Error */ |
Anna Bridge |
186:707f6e361f3e | 767 | MBED_DEFINE_SYSTEM_ERROR( DEVICE_BUSY ,57 ), /* 313 Device Busy */ |
Anna Bridge |
186:707f6e361f3e | 768 | MBED_DEFINE_SYSTEM_ERROR( CONFIG_UNSUPPORTED ,58 ), /* 314 Configuration not supported */ |
Anna Bridge |
186:707f6e361f3e | 769 | MBED_DEFINE_SYSTEM_ERROR( CONFIG_MISMATCH ,59 ), /* 315 Configuration mismatch */ |
Anna Bridge |
186:707f6e361f3e | 770 | MBED_DEFINE_SYSTEM_ERROR( ALREADY_INITIALIZED ,60 ), /* 316 Already initialzied */ |
Anna Bridge |
186:707f6e361f3e | 771 | MBED_DEFINE_SYSTEM_ERROR( HARDFAULT_EXCEPTION ,61 ), /* 317 HardFault exception */ |
Anna Bridge |
186:707f6e361f3e | 772 | MBED_DEFINE_SYSTEM_ERROR( MEMMANAGE_EXCEPTION ,62 ), /* 318 MemManage exception */ |
Anna Bridge |
186:707f6e361f3e | 773 | MBED_DEFINE_SYSTEM_ERROR( BUSFAULT_EXCEPTION ,63 ), /* 319 BusFault exception */ |
Anna Bridge |
186:707f6e361f3e | 774 | MBED_DEFINE_SYSTEM_ERROR( USAGEFAULT_EXCEPTION ,64 ), /* 320 UsageFault exception*/ |
Anna Bridge |
186:707f6e361f3e | 775 | |
Anna Bridge |
186:707f6e361f3e | 776 | //Everytime you add a new system error code, you must update |
Anna Bridge |
186:707f6e361f3e | 777 | //Error documentation under Handbook to capture the info on |
Anna Bridge |
186:707f6e361f3e | 778 | //the new error status/codes |
Anna Bridge |
186:707f6e361f3e | 779 | |
Anna Bridge |
186:707f6e361f3e | 780 | //MBED CUSTOM ERROR CODE definitions starts at offset MBED_CUSTOM_ERROR_BASE, see above. |
Anna Bridge |
186:707f6e361f3e | 781 | /* Add More/Custom Error Codes here, See example below */ |
Anna Bridge |
186:707f6e361f3e | 782 | //DEFINE_CUSTOM_ERROR( MY_CUSTOM_ERROR , 1 ), |
Anna Bridge |
186:707f6e361f3e | 783 | |
Anna Bridge |
186:707f6e361f3e | 784 | } mbed_error_code_t; |
Anna Bridge |
186:707f6e361f3e | 785 | |
Anna Bridge |
186:707f6e361f3e | 786 | /** mbed_error_ctx struct |
Anna Bridge |
186:707f6e361f3e | 787 | * |
Anna Bridge |
186:707f6e361f3e | 788 | * This struct captures the context information at the time of error.\n |
Anna Bridge |
186:707f6e361f3e | 789 | * It primarily contains information about the thread where the error originated,\n |
Anna Bridge |
186:707f6e361f3e | 790 | * filename/line number of the source file where the error occurred, a context specific error value(error_value)\n |
Anna Bridge |
186:707f6e361f3e | 791 | * and the address where the error originated.\n |
Anna Bridge |
186:707f6e361f3e | 792 | * |
Anna Bridge |
186:707f6e361f3e | 793 | * @note |
Anna Bridge |
186:707f6e361f3e | 794 | * Below are the members of mbed_error_ctx struct\n |
Anna Bridge |
186:707f6e361f3e | 795 | * error_status mbed_error_status_t value for this error\n |
Anna Bridge |
186:707f6e361f3e | 796 | * error_function_address Address where the error occurred\n |
Anna Bridge |
186:707f6e361f3e | 797 | * thread_id ID of the thread which generated the error\n |
Anna Bridge |
186:707f6e361f3e | 798 | * thread_entry_address Entry function of the thread which generated the error\n |
Anna Bridge |
186:707f6e361f3e | 799 | * thread_stack_size Stack Size of the thread which generated the error\n |
Anna Bridge |
186:707f6e361f3e | 800 | * thread_stack_mem Stack Top of the thread which generated the error\n |
Anna Bridge |
186:707f6e361f3e | 801 | * thread_current_sp Current Stack Pointer of the thread which generated the error\n |
Anna Bridge |
186:707f6e361f3e | 802 | * error_value A context/error specific value associated with this error\n |
Anna Bridge |
186:707f6e361f3e | 803 | * error_filename Filename where the error originated\n |
Anna Bridge |
186:707f6e361f3e | 804 | * error_line_number Line number in error_filename where the error originated\n |
Anna Bridge |
186:707f6e361f3e | 805 | */ |
Anna Bridge |
186:707f6e361f3e | 806 | typedef struct _mbed_error_ctx { |
Anna Bridge |
186:707f6e361f3e | 807 | mbed_error_status_t error_status; |
Anna Bridge |
186:707f6e361f3e | 808 | uint32_t error_address; |
Anna Bridge |
186:707f6e361f3e | 809 | uint32_t error_value; |
Anna Bridge |
186:707f6e361f3e | 810 | uint32_t thread_id; |
Anna Bridge |
186:707f6e361f3e | 811 | uint32_t thread_entry_address; |
Anna Bridge |
186:707f6e361f3e | 812 | uint32_t thread_stack_size; |
Anna Bridge |
186:707f6e361f3e | 813 | uint32_t thread_stack_mem; |
Anna Bridge |
186:707f6e361f3e | 814 | uint32_t thread_current_sp; |
Anna Bridge |
186:707f6e361f3e | 815 | #ifdef MBED_CONF_ERROR_FILENAME_CAPTURE_ENABLED |
Anna Bridge |
186:707f6e361f3e | 816 | char error_filename[MBED_CONF_MAX_ERROR_FILENAME_LEN]; |
Anna Bridge |
186:707f6e361f3e | 817 | uint32_t error_line_number; |
Anna Bridge |
186:707f6e361f3e | 818 | #endif |
Anna Bridge |
186:707f6e361f3e | 819 | } mbed_error_ctx; |
AnnaBridge | 167:e84263d55307 | 820 | |
<> | 149:156823d33999 | 821 | /** To generate a fatal compile-time error, you can use the pre-processor #error directive. |
<> | 149:156823d33999 | 822 | * |
AnnaBridge | 167:e84263d55307 | 823 | * @param format C string that contains data stream to be printed. |
AnnaBridge | 167:e84263d55307 | 824 | * Code snippets below show valid format. |
AnnaBridge | 167:e84263d55307 | 825 | * |
<> | 149:156823d33999 | 826 | * @code |
<> | 149:156823d33999 | 827 | * #error "That shouldn't have happened!" |
<> | 149:156823d33999 | 828 | * @endcode |
<> | 149:156823d33999 | 829 | * |
<> | 149:156823d33999 | 830 | * If the compiler evaluates this line, it will report the error and stop the compile. |
<> | 149:156823d33999 | 831 | * |
<> | 149:156823d33999 | 832 | * For example, you could use this to check some user-defined compile-time variables: |
<> | 149:156823d33999 | 833 | * |
<> | 149:156823d33999 | 834 | * @code |
<> | 149:156823d33999 | 835 | * #define NUM_PORTS 7 |
<> | 149:156823d33999 | 836 | * #if (NUM_PORTS > 4) |
<> | 149:156823d33999 | 837 | * #error "NUM_PORTS must be less than 4" |
<> | 149:156823d33999 | 838 | * #endif |
<> | 149:156823d33999 | 839 | * @endcode |
<> | 149:156823d33999 | 840 | * |
<> | 149:156823d33999 | 841 | * Reporting Run-Time Errors: |
<> | 149:156823d33999 | 842 | * To generate a fatal run-time error, you can use the mbed error() function. |
<> | 149:156823d33999 | 843 | * |
<> | 149:156823d33999 | 844 | * @code |
<> | 149:156823d33999 | 845 | * error("That shouldn't have happened!"); |
<> | 149:156823d33999 | 846 | * @endcode |
<> | 149:156823d33999 | 847 | * |
<> | 149:156823d33999 | 848 | * If the mbed running the program executes this function, it will print the |
<> | 149:156823d33999 | 849 | * message via the USB serial port, and then die with the blue lights of death! |
<> | 149:156823d33999 | 850 | * |
<> | 149:156823d33999 | 851 | * The message can use printf-style formatting, so you can report variables in the |
<> | 149:156823d33999 | 852 | * message too. For example, you could use this to check a run-time condition: |
<> | 149:156823d33999 | 853 | * |
<> | 149:156823d33999 | 854 | * @code |
<> | 149:156823d33999 | 855 | * if(x >= 5) { |
<> | 149:156823d33999 | 856 | * error("expected x to be less than 5, but got %d", x); |
<> | 149:156823d33999 | 857 | * } |
AnnaBridge | 167:e84263d55307 | 858 | * @endcode |
AnnaBridge | 167:e84263d55307 | 859 | * |
AnnaBridge | 167:e84263d55307 | 860 | * |
<> | 149:156823d33999 | 861 | */ |
Anna Bridge |
186:707f6e361f3e | 862 | |
Anna Bridge |
186:707f6e361f3e | 863 | void error(const char* format, ...); |
<> | 149:156823d33999 | 864 | |
Anna Bridge |
186:707f6e361f3e | 865 | /** |
Anna Bridge |
186:707f6e361f3e | 866 | * Call this Macro to generate a mbed_error_status_t value for a System error |
Anna Bridge |
186:707f6e361f3e | 867 | * @param module Module generating the error code. If its unknown, pass MBED_MODULE_UNKNOWN. See mbed_module_type_t for module types. |
Anna Bridge |
186:707f6e361f3e | 868 | * @param error_code The mbed_error_code_t code to be used in generating the mbed_error_status_t. See mbed_error_code_t for error codes. |
Anna Bridge |
186:707f6e361f3e | 869 | * |
Anna Bridge |
186:707f6e361f3e | 870 | * @code |
Anna Bridge |
186:707f6e361f3e | 871 | * |
Anna Bridge |
186:707f6e361f3e | 872 | * mbed_error_status_t driver_error = MBED_MAKE_SYSTEM_ERROR( MODULE_DRIVER_USB, MBED_ERROR_CODE_INITIALIZATION_FAILED ) |
Anna Bridge |
186:707f6e361f3e | 873 | * |
Anna Bridge |
186:707f6e361f3e | 874 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 875 | * @note This macro generate mbed_error_status_t-es with error type set to MBED_ERROR_TYPE_SYSTEM |
Anna Bridge |
186:707f6e361f3e | 876 | * |
Anna Bridge |
186:707f6e361f3e | 877 | */ |
Anna Bridge |
186:707f6e361f3e | 878 | #define MBED_MAKE_SYSTEM_ERROR(module, error_code) MAKE_MBED_ERROR(MBED_ERROR_TYPE_SYSTEM, module, error_code) |
Anna Bridge |
186:707f6e361f3e | 879 | |
Anna Bridge |
186:707f6e361f3e | 880 | /** |
Anna Bridge |
186:707f6e361f3e | 881 | * Call this Macro to generate a mbed_error_status_t value for a Custom error |
Anna Bridge |
186:707f6e361f3e | 882 | * @param module Module generating the error code. If its unknown, pass MBED_MODULE_UNKNOWN. See mbed_module_type_t for module types. |
Anna Bridge |
186:707f6e361f3e | 883 | * @param error_code The mbed_error_code_t code to be used in generating the mbed_error_status_t. See mbed_error_code_t for error codes. |
Anna Bridge |
186:707f6e361f3e | 884 | * |
Anna Bridge |
186:707f6e361f3e | 885 | * @code |
Anna Bridge |
186:707f6e361f3e | 886 | * |
Anna Bridge |
186:707f6e361f3e | 887 | * mbed_error_status_t custom_error = MBED_MAKE_CUSTOM_ERROR( MBED_MODULE_APPLICATION, 0xDEAD//16-bit custom error code ) |
Anna Bridge |
186:707f6e361f3e | 888 | * |
Anna Bridge |
186:707f6e361f3e | 889 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 890 | * @note This macro generate mbed_error_status_t-es with error type set to MBED_ERROR_TYPE_CUSTOM |
Anna Bridge |
186:707f6e361f3e | 891 | * |
Anna Bridge |
186:707f6e361f3e | 892 | */ |
Anna Bridge |
186:707f6e361f3e | 893 | #define MBED_MAKE_CUSTOM_ERROR(module, error_code) MAKE_MBED_ERROR(MBED_ERROR_TYPE_CUSTOM, module, error_code) |
Anna Bridge |
186:707f6e361f3e | 894 | |
Anna Bridge |
186:707f6e361f3e | 895 | /** |
Anna Bridge |
186:707f6e361f3e | 896 | * Call this Macro to generate a mbed_error_status_t value for a System error |
Anna Bridge |
186:707f6e361f3e | 897 | * @param module Module generating the error code. If its unknown, pass MBED_MODULE_UNKNOWN. See mbed_module_type_t for module types. |
Anna Bridge |
186:707f6e361f3e | 898 | * @param error_code The mbed_error_code_t code to be used in generating the mbed_error_status_t. See mbed_error_code_t for error codes. |
Anna Bridge |
186:707f6e361f3e | 899 | * |
Anna Bridge |
186:707f6e361f3e | 900 | * @code |
Anna Bridge |
186:707f6e361f3e | 901 | * |
Anna Bridge |
186:707f6e361f3e | 902 | * mbed_error_status_t new_error = MBED_MAKE_ERROR( MODULE_DRIVER_USB, MBED_ERROR_INITIALIZATION_FAILED ) |
Anna Bridge |
186:707f6e361f3e | 903 | * |
Anna Bridge |
186:707f6e361f3e | 904 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 905 | * @note This macro generate mbed_error_status_t-es with error type set to MBED_ERROR_TYPE_SYSTEM |
Anna Bridge |
186:707f6e361f3e | 906 | * |
Anna Bridge |
186:707f6e361f3e | 907 | */ |
Anna Bridge |
186:707f6e361f3e | 908 | #define MBED_MAKE_ERROR(module, error_code) MBED_MAKE_SYSTEM_ERROR(module, error_code) |
Anna Bridge |
186:707f6e361f3e | 909 | |
Anna Bridge |
186:707f6e361f3e | 910 | /** |
Anna Bridge |
186:707f6e361f3e | 911 | * Callback/Error hook function prototype. Applications needing a callback when an error is reported can use mbed_set_error_hook function |
Anna Bridge |
186:707f6e361f3e | 912 | * to register a callback/error hook function using the following prototype. When an error happens in the system error handling |
Anna Bridge |
186:707f6e361f3e | 913 | * implementation will invoke this callback with the mbed_error_status_t reported and the error context at the time of error. |
Anna Bridge |
186:707f6e361f3e | 914 | * @param error_status mbed_error_status_t status being reported. |
Anna Bridge |
186:707f6e361f3e | 915 | * @param error_ctx Error context structure associated with this error. |
Anna Bridge |
186:707f6e361f3e | 916 | * @return void |
Anna Bridge |
186:707f6e361f3e | 917 | * |
Anna Bridge |
186:707f6e361f3e | 918 | */ |
Anna Bridge |
186:707f6e361f3e | 919 | typedef void (*mbed_error_hook_t)(const mbed_error_ctx *error_ctx); |
Anna Bridge |
186:707f6e361f3e | 920 | |
Anna Bridge |
186:707f6e361f3e | 921 | /** |
Anna Bridge |
186:707f6e361f3e | 922 | * Call this function to set a system error/warning. This function will log the error status with the context info and return to caller. |
Anna Bridge |
186:707f6e361f3e | 923 | * |
Anna Bridge |
186:707f6e361f3e | 924 | * @param error_status mbed_error_status_t status to be set(See mbed_error_status_t enum above for available error status values). |
Anna Bridge |
186:707f6e361f3e | 925 | * @param error_msg The error message to be printed out to STDIO/Serial. |
Anna Bridge |
186:707f6e361f3e | 926 | * @param error_value Value associated with the error status. This would depend on error code/error scenario. |
Anna Bridge |
186:707f6e361f3e | 927 | * @param filename Name of the source file originating the error( Most callers can pass __FILE__ here ). |
Anna Bridge |
186:707f6e361f3e | 928 | * @param line_number The line number of the source file originating the error( Most callers can pass __LINE__ here ) . |
Anna Bridge |
186:707f6e361f3e | 929 | * @return 0 or MBED_SUCCESS. |
Anna Bridge |
186:707f6e361f3e | 930 | * MBED_ERROR_INVALID_ARGUMENT if called with invalid error status/codes |
Anna Bridge |
186:707f6e361f3e | 931 | * |
Anna Bridge |
186:707f6e361f3e | 932 | * @code |
Anna Bridge |
186:707f6e361f3e | 933 | * |
Anna Bridge |
186:707f6e361f3e | 934 | * mbed_error( ERROR_OUT_OF_MEMORY, "Out of memory error", 0, __FILE__, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 935 | * |
Anna Bridge |
186:707f6e361f3e | 936 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 937 | * |
Anna Bridge |
186:707f6e361f3e | 938 | * @note See MBED_WARNING/MBED_ERROR macros which provides a wrapper on this API |
Anna Bridge |
186:707f6e361f3e | 939 | */ |
Anna Bridge |
186:707f6e361f3e | 940 | mbed_error_status_t mbed_warning(mbed_error_status_t error_status, const char *error_msg, unsigned int error_value, const char *filename, int line_number); |
Anna Bridge |
186:707f6e361f3e | 941 | |
Anna Bridge |
186:707f6e361f3e | 942 | /** |
Anna Bridge |
186:707f6e361f3e | 943 | * Returns the first system error reported. |
Anna Bridge |
186:707f6e361f3e | 944 | * @return mbed_error_status_t code logged for the first error or MBED_SUCCESS if no errors are logged. |
Anna Bridge |
186:707f6e361f3e | 945 | * |
Anna Bridge |
186:707f6e361f3e | 946 | */ |
Anna Bridge |
186:707f6e361f3e | 947 | mbed_error_status_t mbed_get_first_error(void); |
Anna Bridge |
186:707f6e361f3e | 948 | |
Anna Bridge |
186:707f6e361f3e | 949 | /** |
Anna Bridge |
186:707f6e361f3e | 950 | * Returns the most recent system error reported. |
Anna Bridge |
186:707f6e361f3e | 951 | * @return mbed_error_status_t code logged for the last error or MBED_SUCCESS if no errors are logged. |
Anna Bridge |
186:707f6e361f3e | 952 | * |
Anna Bridge |
186:707f6e361f3e | 953 | */ |
Anna Bridge |
186:707f6e361f3e | 954 | mbed_error_status_t mbed_get_last_error(void); |
Anna Bridge |
186:707f6e361f3e | 955 | |
Anna Bridge |
186:707f6e361f3e | 956 | /** |
Anna Bridge |
186:707f6e361f3e | 957 | * Returns the number of system errors reported after boot. |
Anna Bridge |
186:707f6e361f3e | 958 | * @return int Number of errors reported. |
Anna Bridge |
186:707f6e361f3e | 959 | * |
Anna Bridge |
186:707f6e361f3e | 960 | */ |
Anna Bridge |
186:707f6e361f3e | 961 | int mbed_get_error_count(void); |
Anna Bridge |
186:707f6e361f3e | 962 | |
Anna Bridge |
186:707f6e361f3e | 963 | /** |
Anna Bridge |
186:707f6e361f3e | 964 | * Call this function to set a fatal system error and halt the system. This function will log the fatal error with the context info and prints the error report and halts the system. |
Anna Bridge |
186:707f6e361f3e | 965 | * |
Anna Bridge |
186:707f6e361f3e | 966 | * @param error_status mbed_error_status_t status to be set(See mbed_error_status_t enum above for available error status values). |
Anna Bridge |
186:707f6e361f3e | 967 | * @param error_msg The error message to be printed out to STDIO/Serial. |
Anna Bridge |
186:707f6e361f3e | 968 | * @param error_value Value associated with the error status. This would depend on error code/error scenario. |
Anna Bridge |
186:707f6e361f3e | 969 | * @param filename Name of the source file originating the error( Most callers can pass __FILE__ here ). |
Anna Bridge |
186:707f6e361f3e | 970 | * @param line_number The line number of the source file originating the error( Most callers can pass __LINE__ here ) . |
Anna Bridge |
186:707f6e361f3e | 971 | * @return 0 or MBED_SUCCESS. |
Anna Bridge |
186:707f6e361f3e | 972 | * MBED_ERROR_INVALID_ARGUMENT if called with invalid error status/codes |
Anna Bridge |
186:707f6e361f3e | 973 | * |
Anna Bridge |
186:707f6e361f3e | 974 | * @code |
Anna Bridge |
186:707f6e361f3e | 975 | * |
Anna Bridge |
186:707f6e361f3e | 976 | * mbed_error( MBED_ERROR_PROHIBITED_OPERATION, "Prohibited operation tried", 0, __FILE__, __LINE__ ) |
Anna Bridge |
186:707f6e361f3e | 977 | * |
Anna Bridge |
186:707f6e361f3e | 978 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 979 | * |
Anna Bridge |
186:707f6e361f3e | 980 | * @note See MBED_WARNING/MBED_ERROR macros which provides a wrapper on this API |
Anna Bridge |
186:707f6e361f3e | 981 | */ |
Anna Bridge |
186:707f6e361f3e | 982 | mbed_error_status_t mbed_error(mbed_error_status_t error_status, const char *error_msg, unsigned int error_value, const char *filename, int line_number); |
Anna Bridge |
186:707f6e361f3e | 983 | |
Anna Bridge |
186:707f6e361f3e | 984 | /** |
Anna Bridge |
186:707f6e361f3e | 985 | * Registers an application defined error callback with the error handling system. |
Anna Bridge |
186:707f6e361f3e | 986 | * This function will be called with error context info whenever system handles a mbed_error/mbed_warning call |
Anna Bridge |
186:707f6e361f3e | 987 | * NOTE: This function should be implemented for re-entrancy as multiple threads may invoke mbed_error which may cause error hook to be called. |
Anna Bridge |
186:707f6e361f3e | 988 | * @param custom_error_hook mbed_error_status_t status to be set(See mbed_error_status_t enum above for available error status values). |
Anna Bridge |
186:707f6e361f3e | 989 | * @return 0 or MBED_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 990 | * MBED_ERROR_INVALID_ARGUMENT in case of NULL for custom_error_hook |
Anna Bridge |
186:707f6e361f3e | 991 | * |
Anna Bridge |
186:707f6e361f3e | 992 | * @code |
Anna Bridge |
186:707f6e361f3e | 993 | * |
Anna Bridge |
186:707f6e361f3e | 994 | * mbed_error_status_t my_custom_error_hook(mbed_error_status_t error_status, const mbed_error_ctx *error_ctx) { |
Anna Bridge |
186:707f6e361f3e | 995 | * //Do something with the error_status or error_ctx |
Anna Bridge |
186:707f6e361f3e | 996 | * } |
Anna Bridge |
186:707f6e361f3e | 997 | * |
Anna Bridge |
186:707f6e361f3e | 998 | * mbed_set_error_hook( my_custom_error_hook ) |
Anna Bridge |
186:707f6e361f3e | 999 | * |
Anna Bridge |
186:707f6e361f3e | 1000 | * @endcode |
Anna Bridge |
186:707f6e361f3e | 1001 | * @note The erro hook function implementation should be re-entrant. |
Anna Bridge |
186:707f6e361f3e | 1002 | * |
Anna Bridge |
186:707f6e361f3e | 1003 | */ |
Anna Bridge |
186:707f6e361f3e | 1004 | mbed_error_status_t mbed_set_error_hook(mbed_error_hook_t custom_error_hook); |
Anna Bridge |
186:707f6e361f3e | 1005 | |
Anna Bridge |
186:707f6e361f3e | 1006 | /** |
Anna Bridge |
186:707f6e361f3e | 1007 | * Reads the first error context information captured. |
Anna Bridge |
186:707f6e361f3e | 1008 | * @param error_info This is the mbed_error_context info captured as part of the first mbed_error call. The caller should pass a pointer to mbed_error_context struct allocated by the caller. |
Anna Bridge |
186:707f6e361f3e | 1009 | * @return 0 or MBED_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1010 | * MBED_ERROR_INVALID_ARGUMENT in case of invalid index |
Anna Bridge |
186:707f6e361f3e | 1011 | * |
Anna Bridge |
186:707f6e361f3e | 1012 | */ |
Anna Bridge |
186:707f6e361f3e | 1013 | mbed_error_status_t mbed_get_first_error_info(mbed_error_ctx *error_info); |
Anna Bridge |
186:707f6e361f3e | 1014 | |
Anna Bridge |
186:707f6e361f3e | 1015 | /** |
Anna Bridge |
186:707f6e361f3e | 1016 | * Reads the last error context information captured. |
Anna Bridge |
186:707f6e361f3e | 1017 | * @param error_info This is the mbed_error_context info captured as part of the last mbed_error call. The caller should pass a pointer to mbed_error_context struct allocated by the caller. |
Anna Bridge |
186:707f6e361f3e | 1018 | * @return 0 or MBED_ERROR_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1019 | * MBED_ERROR_INVALID_ARGUMENT in case of invalid index |
Anna Bridge |
186:707f6e361f3e | 1020 | * |
Anna Bridge |
186:707f6e361f3e | 1021 | */ |
Anna Bridge |
186:707f6e361f3e | 1022 | mbed_error_status_t mbed_get_last_error_info(mbed_error_ctx *error_info); |
Anna Bridge |
186:707f6e361f3e | 1023 | |
Anna Bridge |
186:707f6e361f3e | 1024 | /** |
Anna Bridge |
186:707f6e361f3e | 1025 | * Clears the last error, first error, error count and all entries in the error history. |
Anna Bridge |
186:707f6e361f3e | 1026 | * @return 0 or MBED_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1027 | * |
Anna Bridge |
186:707f6e361f3e | 1028 | */ |
Anna Bridge |
186:707f6e361f3e | 1029 | mbed_error_status_t mbed_clear_all_errors(void); |
Anna Bridge |
186:707f6e361f3e | 1030 | |
Anna Bridge |
186:707f6e361f3e | 1031 | /** |
Anna Bridge |
186:707f6e361f3e | 1032 | * Generates a mbed_error_status_t value based on passed in values for type, module and error code. |
Anna Bridge |
186:707f6e361f3e | 1033 | * @param error_type Error type based on mbed_error_type_t enum. |
Anna Bridge |
186:707f6e361f3e | 1034 | * @param module Module type based on mbed_module_type_t enum. |
Anna Bridge |
186:707f6e361f3e | 1035 | * @param error_code Error codes defined by mbed_error_code_t enum |
Anna Bridge |
186:707f6e361f3e | 1036 | * @return 0 or MBED_ERROR_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1037 | * |
Anna Bridge |
186:707f6e361f3e | 1038 | */ |
Anna Bridge |
186:707f6e361f3e | 1039 | mbed_error_status_t mbed_make_error(mbed_error_type_t error_type, mbed_module_type_t module, mbed_error_code_t error_code); |
Anna Bridge |
186:707f6e361f3e | 1040 | |
Anna Bridge |
186:707f6e361f3e | 1041 | /** |
Anna Bridge |
186:707f6e361f3e | 1042 | * Returns the current number of entries in the error history, if there has been more than max number of errors logged the number returned will be max depth of error history. |
Anna Bridge |
186:707f6e361f3e | 1043 | * @return Current number of entries in the error history. |
Anna Bridge |
186:707f6e361f3e | 1044 | * |
Anna Bridge |
186:707f6e361f3e | 1045 | */ |
Anna Bridge |
186:707f6e361f3e | 1046 | int mbed_get_error_hist_count(void); |
Anna Bridge |
186:707f6e361f3e | 1047 | |
Anna Bridge |
186:707f6e361f3e | 1048 | /** |
Anna Bridge |
186:707f6e361f3e | 1049 | * Reads the error context information for a specific error from error history, specified by the index. |
Anna Bridge |
186:707f6e361f3e | 1050 | * |
Anna Bridge |
186:707f6e361f3e | 1051 | * @param index index of the error context entry in the history to be retrieved.\n |
Anna Bridge |
186:707f6e361f3e | 1052 | * The number of entries in the error history is configured during build and the max index depends on max depth of error history.\n |
Anna Bridge |
186:707f6e361f3e | 1053 | * index = 0 points to the oldest entry in the history, and index = (max history depth - 1) points to the latest entry in the error history.\n |
Anna Bridge |
186:707f6e361f3e | 1054 | * @param error_info This is the mbed_error_context info captured as part of the error history. The caller should pass a pointer to mbed_error_context struct allocated by the caller. |
Anna Bridge |
186:707f6e361f3e | 1055 | * @return 0 or MBED_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1056 | * MBED_ERROR_INVALID_ARGUMENT in case of invalid index |
Anna Bridge |
186:707f6e361f3e | 1057 | * |
Anna Bridge |
186:707f6e361f3e | 1058 | */ |
Anna Bridge |
186:707f6e361f3e | 1059 | mbed_error_status_t mbed_get_error_hist_info(int index, mbed_error_ctx *error_info); |
Anna Bridge |
186:707f6e361f3e | 1060 | |
Anna Bridge |
186:707f6e361f3e | 1061 | /** |
Anna Bridge |
186:707f6e361f3e | 1062 | * Saves the error history information to a file |
Anna Bridge |
186:707f6e361f3e | 1063 | * |
Anna Bridge |
186:707f6e361f3e | 1064 | * @param path path to the file in the filesystem |
Anna Bridge |
186:707f6e361f3e | 1065 | * @return 0 or MBED_ERROR_SUCCESS on success. |
Anna Bridge |
186:707f6e361f3e | 1066 | * MBED_ERROR_WRITE_FAILED if writing to file failed |
Anna Bridge |
186:707f6e361f3e | 1067 | * MBED_ERROR_INVALID_ARGUMENT if path is not valid |
Anna Bridge |
186:707f6e361f3e | 1068 | * |
Anna Bridge |
186:707f6e361f3e | 1069 | * @note Filesystem support is required in order for this function to work. |
Anna Bridge |
186:707f6e361f3e | 1070 | * |
Anna Bridge |
186:707f6e361f3e | 1071 | */ |
Anna Bridge |
186:707f6e361f3e | 1072 | mbed_error_status_t mbed_save_error_hist(const char *path); |
<> | 149:156823d33999 | 1073 | |
<> | 149:156823d33999 | 1074 | #ifdef __cplusplus |
<> | 149:156823d33999 | 1075 | } |
<> | 149:156823d33999 | 1076 | #endif |
<> | 149:156823d33999 | 1077 | |
<> | 149:156823d33999 | 1078 | #endif |
<> | 149:156823d33999 | 1079 | |
<> | 149:156823d33999 | 1080 | /** @}*/ |
AnnaBridge | 178:79309dc6340a | 1081 | /** @}*/ |
Anna Bridge |
186:707f6e361f3e | 1082 | |
Anna Bridge |
186:707f6e361f3e | 1083 |