8000 feat(log & memory): split helper functions or macros · esp-arduino-libs/esp-lib-utils@d8b7de1 · GitHub
[go: up one dir, main page]

Skip to content

Commit d8b7de1

Browse files
committed
feat(log & memory): split helper functions or macros
1 parent 388e404 commit d8b7de1

23 files changed

+230
-125
lines changed

CHANGELOG.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
# ChangeLog
22

3-
## v0.1.2
3+
## v0.1.2 - 2025-01-23
44

5-
### Enhancements:
5+
### Enhancements:
66

77
* feat(memory): add print memory info
8+
* feat(log & memory): split helper functions and macros
89

910
## v0.1.1
1011

11-
### Enhancements:
12+
### Enhancements:
1213

1314
* feat(repo): update config header and Kconfig files
1415

1516
## v0.1.0
1617

17-
### Enhancements:
18+
### Enhancements:
1819

1920
* feat(repo): initialize with modules 'check', 'log' and 'utils'

Kconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ menu "ESP Library Utils Configurations"
8181

8282
menu "Memory functions"
8383
depends on ESP_UTILS_CONF_FILE_SKIP
84+
config ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
85+
bool "Default enable general memory allocation"
86+
default y
87+
help
88+
If enabled, the driver will use general memory allocation by default, otherwise, the driver will use
89+
`malloc` and `free` by default
90+
8491
choice ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_CHOICE
8592
prompt "Select general allocation type"
8693
default ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE_STDLIB

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ Since `esp-lib-utils` configures its functionality through the *esp_utils_conf.h
112112
* - ESP_UTILS_LOG_LEVEL_WARNING: Error conditions from which recovery measures have been taken
113113
* - ESP_UTILS_LOG_LEVEL_ERROR: Critical errors, software module cannot recover on its own
114114
* - ESP_UTILS_LOG_LEVEL_NONE: No log output (highest level) (Minimum code size)
115-
*
116115
*/
117116
#define ESP_UTILS_CONF_LOG_LEVEL (ESP_UTILS_LOG_LEVEL_DEBUG)
118117
...
@@ -234,6 +233,14 @@ void test_check_null_exit(void)
234233
#define ESP_UTILS_LOG_TAG "MyLibrary"
235234
#include "esp_lib_utils.h"
236235

236+
template <typename T, typename... Args>
237+
std::shared_ptr<T> make_shared(Args &&... args)
238+
{
239+
return std::allocate_shared<T, esp_utils::GeneralMemoryAllocator<T>>(
240+
esp_utils::GeneralMemoryAllocator<T>(), std::forward<Args>(args)...
241+
);
242+
}
243+
237244
void test_memory(void)
238245
{
239246
// Allocate memory in C style (`malloc/calloc` and `free` are re-defined in the library)
@@ -244,7 +251,7 @@ void test_memory(void)
244251
// Allocate memory in C++ style
245252
std::shared_ptr<int> cxx_ptr = nullptr;
246253
ESP_UTILS_CHECK_EXCEPTION_EXIT(
247-
(cxx_ptr = esp_utils::make_shared<int>()), "Failed to allocate memory"
254+
(cxx_ptr = make_shared<int>()), "Failed to allocate memory"
248255
);
249256
cxx_ptr = nullptr;
250257
}

esp_utils_conf.h

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@
1616
* - ESP_UTILS_CHECK_HANDLE_WITH_NONE: Do nothing when check failed (Minimum code size)
1717
* - ESP_UTILS_CHECK_HANDLE_WITH_ERROR_LOG: Print error message when check failed (Recommended)
1818
* - ESP_UTILS_CHECK_HANDLE_WITH_ASSERT: Assert when check failed
19-
*
2019
*/
21-
#define ESP_UTILS_CONF_CHECK_HANDLE_METHOD (ESP_UTILS_CHECK_HANDLE_WITH_ERROR_LOG)
20+
#define ESP_UTILS_CONF_CHECK_HANDLE_METHOD (ESP_UTILS_CHECK_HANDLE_WITH_ERROR_LOG)
2221

2322
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2423
////////////////////////////////////////////////// Log Configurations //////////////////////////////////////////////////
@@ -31,32 +30,42 @@
3130
* - ESP_UTILS_LOG_LEVEL_WARNING: Error conditions from which recovery measures have been taken
3231
* - ESP_UTILS_LOG_LEVEL_ERROR: Critical errors, software module cannot recover on its own
3332
* - ESP_UTILS_LOG_LEVEL_NONE: No log output (highest level) (Minimum code size)
34-
*
3533
*/
36-
#define ESP_UTILS_CONF_LOG_LEVEL (ESP_UTILS_LOG_LEVEL_INFO)
34+
#define ESP_UTILS_CONF_LOG_LEVEL (ESP_UTILS_LOG_LEVEL_INFO)
3735
#if ESP_UTILS_CONF_LOG_LEVEL == ESP_UTILS_LOG_LEVEL_DEBUG
3836

39-
/* Set to 1 if print trace log messages when enter/exit functions, useful for debugging */
40-
#define ESP_UTILS_CONF_ENABLE_LOG_TRACE (0)
37+
/**
38+
* @brief Set to 1 if print trace log messages when enter/exit functions, useful for debugging
39+
*/
40+
#define ESP_UTILS_CONF_ENABLE_LOG_TRACE (0)
4141

4242
#endif // ESP_UTILS_CONF_LOG_LEVEL
4343

44-
/* Log format buffer size */
45-
#define ESP_UTILS_CONF_LOG_BUFFER_SIZE (256)
44+
/**
45+
* @brief Log format buffer size
46+
*/
47+
#define ESP_UTILS_CONF_LOG_BUFFER_SIZE (256)
4648

4749
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4850
//////////////////////////////////////////////// Memory Configurations /////////////////////////////////////////////////
4951
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
52+
/**
53+
* Default enable memory allocation.
54+
*
55+
* If enabled, the driver will use general memory allocation by default, otherwise, the driver will use `malloc` and
56+
* `free` by default
57+
*/
58+
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE (1)
59+
5060
/**
5161
* General Memory allocation type, choose one of the following:
5262
* - ESP_UTILS_MEM_ALLOC_TYPE_STDLIB: Use the standard library memory allocation functions (malloc, free)
5363
* - ESP_UTILS_MEM_ALLOC_TYPE_ESP: Use the ESP-IDF memory allocation functions (heap_caps_aligned_alloc, heap_caps_free)
5464
* - ESP_UTILS_MEM_ALLOC_TYPE_MICROPYTHON: Use the MicroPython memory allocation functions (m_malloc, m_free)
5565
* - ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM: Use custom memory allocation functions (ESP_UTILS_MEM_ALLOC_CUSTOM_MALLOC,
5666
* ESP_UTILS_MEM_ALLOC_CUSTOM_FREE)
57-
*
5867
*/
59-
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE (ESP_UTILS_MEM_ALLOC_TYPE_STDLIB)
68+
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE (ESP_UTILS_MEM_ALLOC_TYPE_STDLIB)
6069
#if ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE == ESP_UTILS_MEM_ALLOC_TYPE_ESP
6170

6271
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN (1)
@@ -82,10 +91,9 @@
8291
* 2. If the minor version is not consistent, this file might be missing some new configurations, which will be set to
8392
* default values. It is recommended to replace it with the file from the library.
8493
* 3. Even if the patch version is not consistent, it will not affect normal functionality.
85-
*
8694
*/
8795
#define ESP_UTILS_CONF_FILE_VERSION_MAJOR 1
88-
#define ESP_UTILS_CONF_FILE_VERSION_MINOR 0
96+
#define ESP_UTILS_CONF_FILE_VERSION_MINOR 1
8997
#define ESP_UTILS_CONF_FILE_VERSION_PATCH 0
9098

91-
// *INDENT-OFF*
99+
// *INDENT-ON*

src/check/esp_utils_check.h

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -135,7 +135,6 @@
135135

136136
/**
137137
* The `try {} catch {}` block is only available in C++ and `CONFIG_COMPILER_CXX_EXCEPTIONS = 1`
138-
*
139138
*/
140139
#if defined(__cplusplus) && defined(CONFIG_COMPILER_CXX_EXCEPTIONS)
141140
/**
@@ -331,7 +330,6 @@
331330

332331
/**
333332
* The `try {} catch {}` block is only available in C++ and `CONFIG_COMPILER_CXX_EXCEPTIONS = 1`
334-
*
335333
*/
336334
#if defined(__cplusplus) && defined(CONFIG_COMPILER_CXX_EXCEPTIONS)
337335
/**
@@ -393,7 +391,7 @@
393391
#define ESP_UTILS_CHECK_NULL_RETURN(x, ...) assert((x) != NULL)
394392
#define ESP_UTILS_CHECK_NULL_GOTO(x, goto_tag, ...) do { \
395393
assert((x) != NULL); \
396-
/* Aoivd unused tag warning */ \
394+
/* Avoid unused tag warning */ \
397395
if (0) { \
398396
goto goto_tag; \
399397
} \
@@ -403,7 +401,7 @@
403401
#define ESP_UTILS_CHECK_FALSE_RETURN(x, ...) assert(x)
404402
#define ESP_UTILS_CHECK_FALSE_GOTO(x, goto_tag, ...) do { \
405403
assert(x); \
406-
/* Aoivd unused tag warning */ \
404+
/* Avoid unused tag warning */ \
407405
if (0) { \
408406
goto goto_tag; \
409407
} \
@@ -413,7 +411,7 @@
413411
#define ESP_UTILS_CHECK_ERROR_RETURN(x, ...) assert((x) == ESP_OK)
414412
#define ESP_UTILS_CHECK_ERROR_GOTO(x, goto_tag, ...) do { \
415413
assert((x) == ESP_OK); \
416-
/* Aoivd unused tag warning */ \
414+
/* Avoid unused tag warning */ \
417415
if (0) { \
418416
goto goto_tag; \
419417
} \
@@ -422,7 +420,6 @@
422420

423421
/**
424422
* The `try {} catch {}` block is only available in C++ and `CONFIG_COMPILER_CXX_EXCEPTIONS = 1`
425-
*
426423
*/
427424
#if defined(__cplusplus) && defined(CONFIG_COMPILER_CXX_EXCEPTIONS)
428425
#define ESP_UTILS_CHECK_EXCEPTION_RETURN(x, ...) do {\
@@ -462,7 +459,7 @@
462459
#ifndef ESP_UTILS_CHECK_EXCEPTION_GOTO
463460
#define ESP_UTILS_CHECK_EXCEPTION_GOTO(x, goto_tag, fmt, ...) do { \
464461
(void)x; \
465-
/* Aoivd unused tag warning */ \
462+
/* Avoid unused tag warning */ \
466463
if (0) { \
467464
goto goto_tag; \
468465
} \

src/esp_lib_utils.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -10,7 +10,11 @@
1010
#include "esp_utils_versions.h"
1111
#include "esp_utils_conf_internal.h"
1212

13-
/* Modules */
13+
/* Check */
1414
#include "check/esp_utils_check.h"
15+
16+
/* Log */
1517
#include "log/esp_utils_log.h"
18+
19+
/* Memory */
1620
#include "memory/esp_utils_mem.h"

src/esp_utils_conf_internal.h

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -57,12 +57,28 @@
5757

5858
#ifndef ESP_UTILS_CONF_INCLUDE_INSIDE
5959
/**
60-
* There are two purposes to include the this file:
60+
* There are two purposes to include this file:
6161
* 1. Convert configuration items starting with `CONFIG_` to the required configuration items.
6262
* 2. Define default values for configuration items that are not defined to keep compatibility.
63-
*
6463
*/
6564
#include "esp_utils_conf_kconfig.h"
6665
#endif
6766

68-
// *INDENT-OFF*
67+
/**
68+
* Check if the current configuration file version is compatible with the library version
69+
*/
70+
#include "esp_utils_versions.h"
71+
72+
/* File `esp_utils_conf.h` */
73+
#ifndef ESP_UTILS_CONF_FILE_SKIP
74+
// Check if the current configuration file version is compatible with the library version
75+
#if ESP_UTILS_CONF_FILE_VERSION_MAJOR != ESP_UTILS_CONF_VERSION_MAJOR
76+
#error "The file `esp_utils_conf.h` version is not compatible. Please update it with the file from the library"
77+
#elif ESP_UTILS_CONF_FILE_VERSION_MINOR < ESP_UTILS_CONF_VERSION_MINOR
78+
#warning "The file `esp_utils_conf.h` version is outdated. Some new configurations are missing"
79+
#elif ESP_UTILS_CONF_FILE_VERSION_MINOR > ESP_UTILS_CONF_VERSION_MINOR
80+
#warning "The file `esp_utils_conf.h` version is newer than the library. Some new configurations are not supported"
81+
#endif /* ESP_UTILS_CONF_INCLUDE_INSIDE */
82+
#endif /* ESP_UTILS_CONF_FILE_SKIP */
83+
84+
// *INDENT-ON*

src/esp_utils_conf_kconfig.h

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -49,6 +49,14 @@
4949
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5050
//////////////////////////////////////////////// Memory Configurations /////////////////////////////////////////////////
5151
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
52+
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
53+
#ifdef CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
54+
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE
55+
#else
56+
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_DEFAULT_ENABLE (0)
57+
#endif
58+
#endif
59+
5260
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE
5361
#ifdef CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE
5462
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE
@@ -62,27 +70,34 @@
6270
#ifdef CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN
6371
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN
6472
#else
65-
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_ESP`"
73+
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_ALIGN` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` \
74+
is set to `ESP_UTILS_MEM_ALLOC_TYPE_ESP`"
6675
#endif
6776
#endif
6877

6978
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_CAPS
70-
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_CAPS` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_ESP`"
79+
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_ESP_CAPS` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is \
80+
set to `ESP_UTILS_MEM_ALLOC_TYPE_ESP`"
7181
#endif
7282
#elif ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE == ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM
7383
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE
7484
#ifdef CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE
7585
#define ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE CONFIG_ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE
7686
#else
77-
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
87+
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_INCLUDE` must be defined when \
88+
`ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
7889
#endif
7990
#endif
8091

8192
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_MALLOC
82-
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_MALLOC` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
93+
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_MALLOC` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` \
94+
is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
8395
#endif
8496

8597
#ifndef ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE
86-
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
98+
#error "`ESP_UTILS_CONF_MEM_GEN_ALLOC_CUSTOM_FREE` must be defined when `ESP_UTILS_CONF_MEM_GEN_ALLOC_TYPE` \
99+
is set to `ESP_UTILS_MEM_ALLOC_TYPE_CUSTOM`"
87100
#endif
88101
#endif
102+
103+
// *INDENT-ON*

src/esp_utils_helpers.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#pragma once
7+
8+
/* Log */
9+
#include "log/esp_utils_log_helper.h"
10+
11+
/* Memory */
12+
#include "memory/esp_utils_mem_helper.h"

src/esp_utils_types.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@
1010

1111
/**
1212
* @brief Macros for check handle method
13-
*
1413
*/
1514
#define ESP_UTILS_CHECK_HANDLE_WITH_NONE (0) /*!< Do nothing when check failed */
1615
#define ESP_UTILS_CHECK_HANDLE_WITH_ERROR_LOG (1) /*!< Print error message when check failed */
1716
#define ESP_UTILS_CHECK_HANDLE_WITH_ASSERT (2) /*!< Assert when check failed */
1817

1918
/**
2019
* @brief Macros for log level
21-
*
2220
*/
2321
#define ESP_UTILS_LOG_LEVEL_DEBUG (0) /*!< Extra information which is not necessary for normal use (values,
2422
* pointers, sizes, etc). */
@@ -29,7 +27,6 @@
2927

3028
/**
3129
* @brief Macros for memory type
32-
*
3330
*/
3431
#define ESP_UTILS_MEM_ALLOC_TYPE_STDLIB (0)
3532
#define ESP_UTILS_MEM_ALLOC_TYPE_ESP (1)

0 commit comments

Comments
 (0)
0