mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
docs: add error codes reference
This commit is contained in:
@@ -55,43 +55,43 @@ typedef struct {
|
|||||||
static const esp_err_msg_t esp_err_msg_table[] = {
|
static const esp_err_msg_t esp_err_msg_table[] = {
|
||||||
// components/esp32/include/esp_err.h
|
// components/esp32/include/esp_err.h
|
||||||
# ifdef ESP_FAIL
|
# ifdef ESP_FAIL
|
||||||
ERR_TBL_IT(ESP_FAIL), /* -1 */
|
ERR_TBL_IT(ESP_FAIL), /* -1 Generic esp_err_t code indicating failure */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_OK
|
# ifdef ESP_OK
|
||||||
ERR_TBL_IT(ESP_OK), /* 0 */
|
ERR_TBL_IT(ESP_OK), /* 0 esp_err_t value indicating success (no error) */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_NO_MEM
|
# ifdef ESP_ERR_NO_MEM
|
||||||
ERR_TBL_IT(ESP_ERR_NO_MEM), /* 257 0x101 */
|
ERR_TBL_IT(ESP_ERR_NO_MEM), /* 257 0x101 Out of memory */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_ARG
|
# ifdef ESP_ERR_INVALID_ARG
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_ARG), /* 258 0x102 */
|
ERR_TBL_IT(ESP_ERR_INVALID_ARG), /* 258 0x102 Invalid argument */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_STATE
|
# ifdef ESP_ERR_INVALID_STATE
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_STATE), /* 259 0x103 */
|
ERR_TBL_IT(ESP_ERR_INVALID_STATE), /* 259 0x103 Invalid state */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_SIZE
|
# ifdef ESP_ERR_INVALID_SIZE
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_SIZE), /* 260 0x104 */
|
ERR_TBL_IT(ESP_ERR_INVALID_SIZE), /* 260 0x104 Invalid size */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_NOT_FOUND
|
# ifdef ESP_ERR_NOT_FOUND
|
||||||
ERR_TBL_IT(ESP_ERR_NOT_FOUND), /* 261 0x105 */
|
ERR_TBL_IT(ESP_ERR_NOT_FOUND), /* 261 0x105 Requested resource not found */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_NOT_SUPPORTED
|
# ifdef ESP_ERR_NOT_SUPPORTED
|
||||||
ERR_TBL_IT(ESP_ERR_NOT_SUPPORTED), /* 262 0x106 */
|
ERR_TBL_IT(ESP_ERR_NOT_SUPPORTED), /* 262 0x106 Operation or feature not supported */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_TIMEOUT
|
# ifdef ESP_ERR_TIMEOUT
|
||||||
ERR_TBL_IT(ESP_ERR_TIMEOUT), /* 263 0x107 */
|
ERR_TBL_IT(ESP_ERR_TIMEOUT), /* 263 0x107 Operation timed out */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_RESPONSE
|
# ifdef ESP_ERR_INVALID_RESPONSE
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_RESPONSE), /* 264 0x108 */
|
ERR_TBL_IT(ESP_ERR_INVALID_RESPONSE), /* 264 0x108 Received response was invalid */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_CRC
|
# ifdef ESP_ERR_INVALID_CRC
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_CRC), /* 265 0x109 */
|
ERR_TBL_IT(ESP_ERR_INVALID_CRC), /* 265 0x109 CRC or checksum was invalid */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_VERSION
|
# ifdef ESP_ERR_INVALID_VERSION
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_VERSION), /* 266 0x10a */
|
ERR_TBL_IT(ESP_ERR_INVALID_VERSION), /* 266 0x10a Version was invalid */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_INVALID_MAC
|
# ifdef ESP_ERR_INVALID_MAC
|
||||||
ERR_TBL_IT(ESP_ERR_INVALID_MAC), /* 267 0x10b */
|
ERR_TBL_IT(ESP_ERR_INVALID_MAC), /* 267 0x10b MAC address was invalid */
|
||||||
# endif
|
# endif
|
||||||
// components/nvs_flash/include/nvs.h
|
// components/nvs_flash/include/nvs.h
|
||||||
# ifdef ESP_ERR_NVS_BASE
|
# ifdef ESP_ERR_NVS_BASE
|
||||||
@@ -132,7 +132,7 @@ static const esp_err_msg_t esp_err_msg_table[] = {
|
|||||||
ERR_TBL_IT(ESP_ERR_NVS_KEY_TOO_LONG), /* 4361 0x1109 Key name is too long */
|
ERR_TBL_IT(ESP_ERR_NVS_KEY_TOO_LONG), /* 4361 0x1109 Key name is too long */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_NVS_PAGE_FULL
|
# ifdef ESP_ERR_NVS_PAGE_FULL
|
||||||
ERR_TBL_IT(ESP_ERR_NVS_PAGE_FULL), /* 4362 0x110a Internal error; never returned by nvs_ API
|
ERR_TBL_IT(ESP_ERR_NVS_PAGE_FULL), /* 4362 0x110a Internal error; never returned by nvs API
|
||||||
functions */
|
functions */
|
||||||
# endif
|
# endif
|
||||||
# ifdef ESP_ERR_NVS_INVALID_STATE
|
# ifdef ESP_ERR_NVS_INVALID_STATE
|
||||||
|
@@ -24,21 +24,20 @@ extern "C" {
|
|||||||
typedef int32_t esp_err_t;
|
typedef int32_t esp_err_t;
|
||||||
|
|
||||||
/* Definitions for error constants. */
|
/* Definitions for error constants. */
|
||||||
|
#define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */
|
||||||
|
#define ESP_FAIL -1 /*!< Generic esp_err_t code indicating failure */
|
||||||
|
|
||||||
#define ESP_OK 0
|
#define ESP_ERR_NO_MEM 0x101 /*!< Out of memory */
|
||||||
#define ESP_FAIL -1
|
#define ESP_ERR_INVALID_ARG 0x102 /*!< Invalid argument */
|
||||||
|
#define ESP_ERR_INVALID_STATE 0x103 /*!< Invalid state */
|
||||||
#define ESP_ERR_NO_MEM 0x101
|
#define ESP_ERR_INVALID_SIZE 0x104 /*!< Invalid size */
|
||||||
#define ESP_ERR_INVALID_ARG 0x102
|
#define ESP_ERR_NOT_FOUND 0x105 /*!< Requested resource not found */
|
||||||
#define ESP_ERR_INVALID_STATE 0x103
|
#define ESP_ERR_NOT_SUPPORTED 0x106 /*!< Operation or feature not supported */
|
||||||
#define ESP_ERR_INVALID_SIZE 0x104
|
#define ESP_ERR_TIMEOUT 0x107 /*!< Operation timed out */
|
||||||
#define ESP_ERR_NOT_FOUND 0x105
|
#define ESP_ERR_INVALID_RESPONSE 0x108 /*!< Received response was invalid */
|
||||||
#define ESP_ERR_NOT_SUPPORTED 0x106
|
#define ESP_ERR_INVALID_CRC 0x109 /*!< CRC or checksum was invalid */
|
||||||
#define ESP_ERR_TIMEOUT 0x107
|
#define ESP_ERR_INVALID_VERSION 0x10A /*!< Version was invalid */
|
||||||
#define ESP_ERR_INVALID_RESPONSE 0x108
|
#define ESP_ERR_INVALID_MAC 0x10B /*!< MAC address was invalid */
|
||||||
#define ESP_ERR_INVALID_CRC 0x109
|
|
||||||
#define ESP_ERR_INVALID_VERSION 0x10A
|
|
||||||
#define ESP_ERR_INVALID_MAC 0x10B
|
|
||||||
|
|
||||||
#define ESP_ERR_WIFI_BASE 0x3000 /*!< Starting number of WiFi error codes */
|
#define ESP_ERR_WIFI_BASE 0x3000 /*!< Starting number of WiFi error codes */
|
||||||
#define ESP_ERR_MESH_BASE 0x4000 /*!< Starting number of MESH error codes */
|
#define ESP_ERR_MESH_BASE 0x4000 /*!< Starting number of MESH error codes */
|
||||||
@@ -76,6 +75,7 @@ const char *esp_err_to_name(esp_err_t code);
|
|||||||
*/
|
*/
|
||||||
const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen);
|
const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen);
|
||||||
|
|
||||||
|
/** @cond */
|
||||||
void _esp_error_check_failed(esp_err_t rc, const char *file, int line, const char *function, const char *expression) __attribute__((noreturn));
|
void _esp_error_check_failed(esp_err_t rc, const char *file, int line, const char *function, const char *expression) __attribute__((noreturn));
|
||||||
|
|
||||||
#ifndef __ASSERT_FUNC
|
#ifndef __ASSERT_FUNC
|
||||||
@@ -88,6 +88,7 @@ void _esp_error_check_failed(esp_err_t rc, const char *file, int line, const cha
|
|||||||
#define __ASSERT_FUNC "??"
|
#define __ASSERT_FUNC "??"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
/** @endcond */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro which can be used to check the error code,
|
* Macro which can be used to check the error code,
|
||||||
|
@@ -38,7 +38,7 @@ typedef uint32_t nvs_handle;
|
|||||||
#define ESP_ERR_NVS_INVALID_HANDLE (ESP_ERR_NVS_BASE + 0x07) /*!< Handle has been closed or is NULL */
|
#define ESP_ERR_NVS_INVALID_HANDLE (ESP_ERR_NVS_BASE + 0x07) /*!< Handle has been closed or is NULL */
|
||||||
#define ESP_ERR_NVS_REMOVE_FAILED (ESP_ERR_NVS_BASE + 0x08) /*!< The value wasn’t updated because flash write operation has failed. The value was written however, and update will be finished after re-initialization of nvs, provided that flash operation doesn’t fail again. */
|
#define ESP_ERR_NVS_REMOVE_FAILED (ESP_ERR_NVS_BASE + 0x08) /*!< The value wasn’t updated because flash write operation has failed. The value was written however, and update will be finished after re-initialization of nvs, provided that flash operation doesn’t fail again. */
|
||||||
#define ESP_ERR_NVS_KEY_TOO_LONG (ESP_ERR_NVS_BASE + 0x09) /*!< Key name is too long */
|
#define ESP_ERR_NVS_KEY_TOO_LONG (ESP_ERR_NVS_BASE + 0x09) /*!< Key name is too long */
|
||||||
#define ESP_ERR_NVS_PAGE_FULL (ESP_ERR_NVS_BASE + 0x0a) /*!< Internal error; never returned by nvs_ API functions */
|
#define ESP_ERR_NVS_PAGE_FULL (ESP_ERR_NVS_BASE + 0x0a) /*!< Internal error; never returned by nvs API functions */
|
||||||
#define ESP_ERR_NVS_INVALID_STATE (ESP_ERR_NVS_BASE + 0x0b) /*!< NVS is in an inconsistent state due to a previous error. Call nvs_flash_init and nvs_open again, then retry. */
|
#define ESP_ERR_NVS_INVALID_STATE (ESP_ERR_NVS_BASE + 0x0b) /*!< NVS is in an inconsistent state due to a previous error. Call nvs_flash_init and nvs_open again, then retry. */
|
||||||
#define ESP_ERR_NVS_INVALID_LENGTH (ESP_ERR_NVS_BASE + 0x0c) /*!< String or blob length is not sufficient to store data */
|
#define ESP_ERR_NVS_INVALID_LENGTH (ESP_ERR_NVS_BASE + 0x0c) /*!< String or blob length is not sufficient to store data */
|
||||||
#define ESP_ERR_NVS_NO_FREE_PAGES (ESP_ERR_NVS_BASE + 0x0d) /*!< NVS partition doesn't contain any empty pages. This may happen if NVS partition was truncated. Erase the whole partition and call nvs_flash_init again. */
|
#define ESP_ERR_NVS_NO_FREE_PAGES (ESP_ERR_NVS_BASE + 0x0d) /*!< NVS partition doesn't contain any empty pages. This may happen if NVS partition was truncated. Erase the whole partition and call nvs_flash_init again. */
|
||||||
|
@@ -174,7 +174,9 @@ INPUT = \
|
|||||||
../../components/freertos/include/freertos/semphr.h \
|
../../components/freertos/include/freertos/semphr.h \
|
||||||
../../components/freertos/include/freertos/timers.h \
|
../../components/freertos/include/freertos/timers.h \
|
||||||
../../components/freertos/include/freertos/event_groups.h \
|
../../components/freertos/include/freertos/event_groups.h \
|
||||||
../../components/freertos/include/freertos/ringbuf.h
|
../../components/freertos/include/freertos/ringbuf.h \
|
||||||
|
### Helper functions for error codes
|
||||||
|
../../components/esp32/include/esp_err.h
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -45,6 +45,11 @@ kconfig_inc_path = '{}/inc/kconfig.inc'.format(builddir)
|
|||||||
os.system('python ../gen-kconfig-doc.py > ' + kconfig_inc_path + '.in')
|
os.system('python ../gen-kconfig-doc.py > ' + kconfig_inc_path + '.in')
|
||||||
copy_if_modified(kconfig_inc_path + '.in', kconfig_inc_path)
|
copy_if_modified(kconfig_inc_path + '.in', kconfig_inc_path)
|
||||||
|
|
||||||
|
# Generate 'esp_err_defs.inc' file with ESP_ERR_ error code definitions
|
||||||
|
esp_err_inc_path = '{}/inc/esp_err_defs.inc'.format(builddir)
|
||||||
|
os.system('python ../../tools/gen_esp_err_to_name.py --rst_output ' + esp_err_inc_path + '.in')
|
||||||
|
copy_if_modified(esp_err_inc_path + '.in', esp_err_inc_path)
|
||||||
|
|
||||||
# http://stackoverflow.com/questions/12772927/specifying-an-online-image-in-sphinx-restructuredtext-format
|
# http://stackoverflow.com/questions/12772927/specifying-an-online-image-in-sphinx-restructuredtext-format
|
||||||
#
|
#
|
||||||
suppress_warnings = ['image.nonlocal_uri']
|
suppress_warnings = ['image.nonlocal_uri']
|
||||||
|
8
docs/en/api-reference/error-codes.rst
Normal file
8
docs/en/api-reference/error-codes.rst
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Error Codes Reference
|
||||||
|
=====================
|
||||||
|
|
||||||
|
This section lists various error code constants defined in ESP-IDF.
|
||||||
|
|
||||||
|
For general information about error codes in ESP-IDF, see :doc:`Error Handling <../api-guides/error-handling>`.
|
||||||
|
|
||||||
|
.. include:: /_build/inc/esp_err_defs.inc
|
@@ -14,4 +14,5 @@ API Reference
|
|||||||
Storage <storage/index>
|
Storage <storage/index>
|
||||||
System <system/index>
|
System <system/index>
|
||||||
Configuration Options <kconfig>
|
Configuration Options <kconfig>
|
||||||
|
Error Codes Reference <error-codes>
|
||||||
|
|
||||||
|
14
docs/en/api-reference/system/esp_err.rst
Normal file
14
docs/en/api-reference/system/esp_err.rst
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Error Codes and Helper Functions
|
||||||
|
================================
|
||||||
|
|
||||||
|
This section lists definitions of common ESP-IDF error codes and several helper functions related to error handling.
|
||||||
|
|
||||||
|
For general information about error codes in ESP-IDF, see :doc:`Error Handling <../../api-guides/error-handling>`.
|
||||||
|
|
||||||
|
For the full list of error codes defined in ESP-IDF, see :doc:`Error Code Reference <../error-codes>`.
|
||||||
|
|
||||||
|
API Reference
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. include:: /_build/inc/esp_err.inc
|
||||||
|
|
@@ -19,6 +19,7 @@ System API
|
|||||||
Base MAC address <base_mac_address>
|
Base MAC address <base_mac_address>
|
||||||
Over The Air Updates (OTA) <ota>
|
Over The Air Updates (OTA) <ota>
|
||||||
ESP pthread <esp_pthread>
|
ESP pthread <esp_pthread>
|
||||||
|
Error Codes and Helper Functions <esp_err>
|
||||||
|
|
||||||
|
|
||||||
Example code for this API section is provided in :example:`system` directory of ESP-IDF examples.
|
Example code for this API section is provided in :example:`system` directory of ESP-IDF examples.
|
||||||
|
1
docs/zh_CN/api-reference/error-codes.rst
Normal file
1
docs/zh_CN/api-reference/error-codes.rst
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.. include:: ../../en/api-reference/error-codes.rst
|
1
docs/zh_CN/api-reference/system/esp_err.rst
Normal file
1
docs/zh_CN/api-reference/system/esp_err.rst
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.. include:: ../../../en/api-reference/system/esp_err.rst
|
@@ -204,7 +204,7 @@ def max_string_width():
|
|||||||
max = x
|
max = x
|
||||||
return max
|
return max
|
||||||
|
|
||||||
def generate_output(fin, fout):
|
def generate_c_output(fin, fout):
|
||||||
"""
|
"""
|
||||||
Writes the output to fout based on th error dictionary err_dict and
|
Writes the output to fout based on th error dictionary err_dict and
|
||||||
template file fin.
|
template file fin.
|
||||||
@@ -264,10 +264,23 @@ def generate_output(fin, fout):
|
|||||||
else:
|
else:
|
||||||
fout.write(line)
|
fout.write(line)
|
||||||
|
|
||||||
|
def generate_rst_output(fout):
|
||||||
|
for k in sorted(err_dict.keys()):
|
||||||
|
v = err_dict[k][0]
|
||||||
|
fout.write(':c:macro:`{}` '.format(v.name))
|
||||||
|
if k > 0:
|
||||||
|
fout.write('**(0x{:x})**'.format(k))
|
||||||
|
else:
|
||||||
|
fout.write('({:d})'.format(k))
|
||||||
|
if len(v.comment) > 0:
|
||||||
|
fout.write(': {}'.format(v.comment))
|
||||||
|
fout.write('\n\n')
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description='ESP32 esp_err_to_name lookup generator for esp_err_t')
|
parser = argparse.ArgumentParser(description='ESP32 esp_err_to_name lookup generator for esp_err_t')
|
||||||
parser.add_argument('input', help='Path to the esp_err_to_name.c.in template input.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c.in', nargs='?')
|
parser.add_argument('--c_input', help='Path to the esp_err_to_name.c.in template input.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c.in')
|
||||||
parser.add_argument('output', help='Path to the esp_err_to_name.c output.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c', nargs='?')
|
parser.add_argument('--c_output', help='Path to the esp_err_to_name.c output.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c')
|
||||||
|
parser.add_argument('--rst_output', help='Generate .rst output and save it into this file')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
for root, dirnames, filenames in os.walk(os.environ['IDF_PATH']):
|
for root, dirnames, filenames in os.walk(os.environ['IDF_PATH']):
|
||||||
@@ -287,8 +300,12 @@ def main():
|
|||||||
|
|
||||||
process_remaining_errors()
|
process_remaining_errors()
|
||||||
|
|
||||||
with open(args.input, 'r') as fin, open(args.output, 'w') as fout:
|
if args.rst_output is not None:
|
||||||
generate_output(fin, fout)
|
with open(args.rst_output, 'w') as fout:
|
||||||
|
generate_rst_output(fout)
|
||||||
|
else:
|
||||||
|
with open(args.c_input, 'r') as fin, open(args.c_output, 'w') as fout:
|
||||||
|
generate_c_output(fin, fout)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
Reference in New Issue
Block a user