Skip to content

Commit bc221b5

Browse files
committed
feat: update
1 parent 4ff22ab commit bc221b5

File tree

7 files changed

+291
-297
lines changed

7 files changed

+291
-297
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ target_compile_options(${COMPONENT_LIB}
1111
PUBLIC
1212
-Wno-missing-field-initializers
1313
PRIVATE
14-
$<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>
14+
$<$<COMPILE_LANGUAGE:CXX>:-std=gnu++20>
1515
)

Kconfig

Lines changed: 93 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
menu "ESP Library Utils Configurations"
22
config ESP_UTILS_CONF_FILE_SKIP
3-
bool "Unckeck this to use custom `esp_utils_conf.h`"
3+
bool "Enable to skip `esp_utils_conf.h`"
44
default y
5+
help
6+
If want to use `esp_utils_conf.h` to configure the library, uncheck this option. Otherwise, the configurations in sdkconfig will be used.
57

68
menu "Check functions"
79
depends on ESP_UTILS_CONF_FILE_SKIP
@@ -77,46 +79,97 @@ menu "ESP Library Utils Configurations"
7779

7880
menu "Memory functions"
7981
depends on ESP_UTILS_CONF_FILE_SKIP
80-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
81-
bool "Default enable general memory allocation"
82-
default y
83-
help
84-
If enabled, the driver will use general memory allocation by default, otherwise, the driver will use
85-
`malloc` and `free` by default
86-
87-
choice ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CHOICE
88-
prompt "Select general allocation type"
89-
default ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
90-
91-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
92-
bool "Standard library (malloc, free)"
93-
94-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
95-
bool "ESP (heap_caps_malloc, free)"
96-
97-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_MICROPYTHON
98-
bool "MicroPython (mp_malloc, mp_free)"
9982

100-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
101-
bool "Custom (`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_MALLOC` and `ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE`)"
102-
endchoice
83+
menuconfig ESP_UTILS_CONF_MEM_ENABLE_GLOB_ALLOC
84+
bool "CXX global allocator (new & delete)"
85+
default n
10386

104-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE
105-
int
106-
default 0 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
107-
default 1 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
108-
default 2 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_MICROPYTHON
109-
default 3 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
110-
111-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN
112-
int "General esp memory alignment (bytes)"
113-
depends on ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
114-
default 1
115-
range 1 1024
116-
117-
config ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE
118-
string "General custom memory header file"
119-
depends on ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
120-
default "stdlib.h"
87+
if ESP_UTILS_CONF_MEM_ENABLE_GLOB_ALLOC
88+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_DEFAULT_ENABLE
89+
bool "Default enable allocation"
90+
default y
91+
help
92+
If enabled, the driver will use global memory allocation by default, otherwise, the driver will use
93+
`new` and `delete` by default
94+
95+
choice ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_CHOICE
96+
prompt "Select allocation type"
97+
default ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_STDLIB
98+
99+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_STDLIB
100+
bool "Standard library (new, delete)"
101+
102+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_ESP
103+
bool "ESP (heap_caps_malloc, free)"
104+
105+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_MICROPYTHON
106+
bool "MicroPython (mp_malloc, mp_free)"
107+
108+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_CUSTOM
109+
bool "Custom (`ESP_UTILS_CONF_MEM_GLOB_ALLOC_CUSTOM_MALLOC` and `ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE`)"
110+
endchoice
111+
112+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE
113+
int
114+
default 0 if ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_STDLIB
115+
default 1 if ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_ESP
116+
default 2 if ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_MICROPYTHON
117+
default 3 if ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_CUSTOM
118+
119+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_ESP_ALIGN
120+
int "Memory alignment (bytes)"
121+
depends on ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_ESP
122+
default 1
123+
range 1 1024
124+
125+
config ESP_UTILS_CONF_MEM_GLOB_ALLOC_CUSTOM_INCLUDE
126+
string "Custom memory header file"
127+
depends on ESP_UTILS_CONF_MEM_GLOB_ALLOC_TYPE_CUSTOM
128+
default ""
129+
endmenu
130+
131+
menu "C/CXX general allocator"
132+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
133+
bool "Default enable general memory allocation"
134+
default y
135+
help
136+
If enabled, the driver will use general memory allocation by default, otherwise, the driver will use
137+
`malloc` and `free` by default
138+
139+
choice ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CHOICE
140+
prompt "Select general allocation type"
141+
default ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
142+
143+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
144+
bool "Standard library (malloc, free)"
145+
146+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
147+
bool "ESP (heap_caps_malloc, free)"
148+
149+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_MICROPYTHON
150+
bool "MicroPython (mp_malloc, mp_free)"
151+
152+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
153+
bool "Custom (`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_MALLOC` and `ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE`)"
154+
endchoice
155+
156+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE
157+
int
158+
default 0 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB
159+
default 1 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
160+
default 2 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_MICROPYTHON
161+
default 3 if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
162+
163+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN
164+
int "General esp memory alignment (bytes)"
165+
depends on ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_ESP
166+
default 1
167+
range 1 1024
168+
169+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE
170+
string "General custom memory header file"
171+
depends on ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CUSTOM
172+
default "stdlib.h"
173+
endmenu
121174
endmenu
122175
endmenu

src/log/esp_utils_log.h

Lines changed: 22 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -5,104 +5,14 @@
55
*/
66
#pragma once
77

8+
#include <stdio.h>
9+
#include <string.h>
810
#include "esp_utils_conf_internal.h"
911

1012
#ifndef ESP_UTILS_LOG_TAG
1113
#define ESP_UTILS_LOG_TAG "Utils"
1214
#endif
1315

14-
// #include <cstdio>
15-
// #include <cstdarg>
16-
// #include <cstring>
17-
// #include <functional>
18-
// #include <mutex>
19-
20-
// extern "C" const char *esp_utils_log_extract_file_name(const char *file_path);
21-
22-
// namespace esp_utils {
23-
24-
// /**
25-
// * Class to handle logging
26-
// */
27-
// class Log {
28-
// public:
29-
// // Singleton pattern: Get the unique instance of the class
30-
// static Log &getInstance()
31-
// {
32-
// static Log instance;
33-
// return instance;
34-
// }
35-
36-
// // Templates and conditional compilation: Filter logs by different levels
37-
// template <int level>
38-
// void print(const char *file, int line, const char *func, const char *format, ...)
39-
// {
40-
// // Logs below the global level will not be compiled
41-
// if constexpr (level >= ESP_UTILS_CONF_LOG_LEVEL) {
42-
// // Mutex to avoid interleaved log messages
43-
// std::lock_guard<std::mutex> lock(_mutex);
44-
// // Use variadic arguments for formatted output
45-
// va_list args;
46-
// va_start(args, format);
47-
// vsnprintf(_buffer, sizeof(_buffer), format, args);
48-
// va_end(args);
49-
// // Output log message
50-
// printf(
51-
// "[%c][%s][%s:%04d](%s): %s\n", logLevelToChar(level), ESP_UTILS_LOG_TAG,
52-
// esp_utils_log_extract_file_name(file), line, func, _buffer
53-
// );
54-
// }
55-
// }
56-
57-
// private:
58-
// Log() = default;
59-
60-
// // Convert log level to string
61-
// static constexpr char logLevelToChar(int level)
62-
// {
63-
// switch (level) {
64-
// case ESP_UTILS_LOG_LEVEL_DEBUG: return 'D';
65-
// case ESP_UTILS_LOG_LEVEL_INFO: return 'I';
66-
// case ESP_UTILS_LOG_LEVEL_WARNING: return 'W';
67-
// case ESP_UTILS_LOG_LEVEL_ERROR: return 'E';
68-
// default: break;
69-
// }
70-
// return ' ';
71-
// }
72-
73-
// char _buffer[ESP_UTILS_CONF_LOG_BUFFER_SIZE];
74-
// std::mutex _mutex;
75-
// };
76-
77-
// } // namespace esp_utils
78-
79-
/**
80-
* Macros to simplify logging calls
81-
*/
82-
/*
83-
#define ESP_UTILS_LOGD(format, ...) \
84-
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_DEBUG>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
85-
#define ESP_UTILS_LOGI(format, ...) \
86-
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_INFO>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
87-
#define ESP_UTILS_LOGW(format, ...) \
88-
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_WARNING>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
89-
#define ESP_UTILS_LOGE(format, ...) \
90-
esp_utils::Log::getInstance().print<ESP_UTILS_LOG_LEVEL_ERROR>(__FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
91-
*/
92-
93-
#include <stdio.h>
94-
#include <string.h>
95-
96-
#ifdef __cplusplus
97-
extern "C" {
98-
#endif
99-
100-
const char *esp_utils_log_extract_file_name(const char *file_path);
101-
102-
#ifdef __cplusplus
103-
}
104-
#endif
105-
10616
#define ESP_UTILS_IMPL_LOGD(format, ...) printf("[D][" ESP_UTILS_LOG_TAG "][%s:%04d](%s): " format "\n", \
10717
esp_utils_log_extract_file_name(__FILE__), __LINE__, __func__, ##__VA_ARGS__)
10818
#define ESP_UTILS_IMPL_LOGI(format, ...) printf("[I][" ESP_UTILS_LOG_TAG "][%s:%04d](%s): " format "\n", \
@@ -136,18 +46,28 @@ const char *esp_utils_log_extract_file_name(const char *file_path);
13646
* Micros to log trace of function calls
13747
*/
13848
#if ESP_UTILS_CONF_ENABLE_LOG_TRACE
139-
#define ESP_UTILS_LOG_TRACE_ENTER() ESP_UTILS_LOGD("Enter")
140-
#define ESP_UTILS_LOG_TRACE_EXIT() ESP_UTILS_LOGD("Exit")
49+
# define ESP_UTILS_LOG_TRACE_ENTER() ESP_UTILS_LOGD("Enter")
50+
# define ESP_UTILS_LOG_TRACE_EXIT() ESP_UTILS_LOGD("Exit")
14151
#else
142-
#define ESP_UTILS_LOG_TRACE_ENTER()
143-
#define ESP_UTILS_LOG_TRACE_EXIT()
52+
# define ESP_UTILS_LOG_TRACE_ENTER()
53+
# define ESP_UTILS_LOG_TRACE_EXIT()
14454
#endif
14555
#ifdef __cplusplus
146-
#if ESP_UTILS_CONF_ENABLE_LOG_TRACE
147-
#define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS() ESP_UTILS_LOGD("(@%p) Enter", this)
148-
#define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS() ESP_UTILS_LOGD("(@%p) Exit", this)
149-
#else
150-
#define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS()
151-
#define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS()
56+
# if ESP_UTILS_CONF_ENABLE_LOG_TRACE
57+
# define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS() ESP_UTILS_LOGD("(@%p) Enter", this)
58+
# define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS() ESP_UTILS_LOGD("(@%p) Exit", this)
59+
# else
60+
# define ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS()
61+
# define ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS()
62+
# endif
63+
#endif
64+
65+
#ifdef __cplusplus
66+
extern "C" {
15267
#endif
68+
69+
const char *esp_utils_log_extract_file_name(const char *file_path);
70+
71+
#ifdef __cplusplus
72+
}
15373
#endif

src/log/esp_utils_log_disable.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#pragma once
7+
8+
/**
9+
* Disable logging tag
10+
*/
11+
#undef ESP_UTILS_LOG_TAG
12+
13+
/**
14+
* Disable logging macros
15+
*/
16+
#undef ESP_UTILS_LOGD
17+
#undef ESP_UTILS_LOGI
18+
#undef ESP_UTILS_LOGW
19+
#undef ESP_UTILS_LOGE
20+
21+
/**
22+
* Disable logging trace macros
23+
*/
24+
#undef ESP_UTILS_LOG_TRACE_ENTER
25+
#undef ESP_UTILS_LOG_TRACE_EXIT
26+
#undef ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS
27+
#undef ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS

0 commit comments

Comments
 (0)