1/* 2 * SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7@COMMENT@ 8 9#include <string.h> 10#if __has_include(<bsd/string.h>) 11// for strlcpy 12#include <bsd/string.h> 13#endif 14#include "esp_err.h" 15#if __has_include("soc/soc.h") 16#include "soc/soc.h" 17#endif 18@HEADERS@ 19 20#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP 21#define ERR_TBL_IT(err) {err, #err} 22 23typedef struct { 24 esp_err_t code; 25 const char *msg; 26} esp_err_msg_t; 27 28static const esp_err_msg_t esp_err_msg_table[] = { 29@ERROR_ITEMS@ 30}; 31#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP 32 33static const char esp_unknown_msg[] = 34#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP 35 "ERROR"; 36#else 37 "UNKNOWN ERROR"; 38#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP 39 40const char *esp_err_to_name(esp_err_t code) 41{ 42#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP 43 size_t i; 44 45 for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) { 46 if (esp_err_msg_table[i].code == code) { 47 return esp_err_msg_table[i].msg; 48 } 49 } 50#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP 51 52 return esp_unknown_msg; 53} 54 55const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen) 56{ 57#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP 58 size_t i; 59 60 for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) { 61 if (esp_err_msg_table[i].code == code) { 62 strlcpy(buf, esp_err_msg_table[i].msg, buflen); 63 return buf; 64 } 65 } 66#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP 67 68 if (strerror_r(code, buf, buflen) == 0) { 69 return buf; 70 } 71 72 snprintf(buf, buflen, "%s 0x%x(%d)", esp_unknown_msg, code, code); 73 74 return buf; 75} 76