Skip to content

Commit f891eac

Browse files
committed
ESP32: Optionally disable lookup-tables for esp_err_to_name
1 parent 12b4e41 commit f891eac

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

components/esp32/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,16 @@ config COMPATIBLE_PRE_V2_1_BOOTLOADERS
802802

803803
Enabling this setting adds approximately 1KB to the app's IRAM usage.
804804

805+
config ESP_ERR_TO_NAME_LOOKUP
806+
bool "Enable lookup of error code strings"
807+
default "y"
808+
help
809+
Functions esp_err_to_name() and esp_err_to_name_r() return string
810+
representations of error codes from a pre-generated lookup table.
811+
This option can be used to turn off the use of the look-up table in
812+
order to save memory but this comes at the price of sacrificing
813+
distinguishable (meaningful) output string representations.
814+
805815
endmenu # ESP32-Specific
806816

807817
menu Wi-Fi

components/esp32/esp_err_to_name.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "tcpip_adapter.h"
3939
#endif
4040

41+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
4142
#define ERR_TBL_IT(err) {err, #err}
4243

4344
typedef struct {
@@ -359,24 +360,33 @@ static const esp_err_msg_t esp_err_msg_table[] = {
359360
ERR_TBL_IT(ESP_ERR_FLASH_OP_TIMEOUT), /* 65554 0x10012 */
360361
# endif
361362
};
363+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
362364

363-
static const char esp_unknown_msg[] = "UNKNOWN ERROR";
365+
static const char esp_unknown_msg[] =
366+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
367+
"ERROR";
368+
#else
369+
"UNKNOWN ERROR";
370+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
364371

365372
const char *esp_err_to_name(esp_err_t code)
366373
{
374+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
367375
int i;
368376

369377
for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) {
370378
if (esp_err_msg_table[i].code == code) {
371379
return esp_err_msg_table[i].msg;
372380
}
373381
}
382+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
374383

375384
return esp_unknown_msg;
376385
}
377386

378387
const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen)
379388
{
389+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
380390
int i;
381391

382392
for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) {
@@ -385,6 +395,7 @@ const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen)
385395
return buf;
386396
}
387397
}
398+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
388399

389400
if (strerror_r(code, buf, buflen) == 0) {
390401
return buf;

components/esp32/esp_err_to_name.c.in

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#endif
77
@HEADERS@
88

9+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
910
#define ERR_TBL_IT(err) {err, #err}
1011

1112
typedef struct {
@@ -16,24 +17,33 @@ typedef struct {
1617
static const esp_err_msg_t esp_err_msg_table[] = {
1718
@ERROR_ITEMS@
1819
};
20+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
1921

20-
static const char esp_unknown_msg[] = "UNKNOWN ERROR";
22+
static const char esp_unknown_msg[] =
23+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
24+
"ERROR";
25+
#else
26+
"UNKNOWN ERROR";
27+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
2128

2229
const char *esp_err_to_name(esp_err_t code)
2330
{
31+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
2432
int i;
2533

2634
for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) {
2735
if (esp_err_msg_table[i].code == code) {
2836
return esp_err_msg_table[i].msg;
2937
}
3038
}
39+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
3140

3241
return esp_unknown_msg;
3342
}
3443

3544
const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen)
3645
{
46+
#ifdef CONFIG_ESP_ERR_TO_NAME_LOOKUP
3747
int i;
3848

3949
for (i = 0; i < sizeof(esp_err_msg_table)/sizeof(esp_err_msg_table[0]); ++i) {
@@ -42,6 +52,7 @@ const char *esp_err_to_name_r(esp_err_t code, char *buf, size_t buflen)
4252
return buf;
4353
}
4454
}
55+
#endif //CONFIG_ESP_ERR_TO_NAME_LOOKUP
4556

4657
if (strerror_r(code, buf, buflen) == 0) {
4758
return buf;

0 commit comments

Comments
 (0)