Firmware  0.4.1
Loading...
Searching...
No Matches
log.h
Go to the documentation of this file.
1// Copyright (C) 2025 Vincent Hamp
2//
3// This program is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// This program is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with this program. If not, see <https://www.gnu.org/licenses/>.
15
21
22#pragma once
23
24#include <esp_log.h>
25#include <boost/preprocessor.hpp>
26
27#define PREFIX_LOG(LOG_MACRO, ...) \
28 do { \
29 ESP_##LOG_MACRO(__FILE__ ":" BOOST_PP_STRINGIZE(__LINE__), __VA_ARGS__); \
30 } while (0)
31
32#define LOG_BUFFER_HEX_LEVEL(...) PREFIX_LOG(LOG_BUFFER_HEX_LEVEL, __VA_ARGS__)
33#define LOG_BUFFER_CHAR_LEVEL(...) \
34 PREFIX_LOG(LOG_BUFFER_CHAR_LEVEL, __VA_ARGS__)
35#define LOG_BUFFER_HEXDUMP(...) PREFIX_LOG(LOG_BUFFER_HEXDUMP, __VA_ARGS__)
36#define LOG_BUFFER_HEX(...) PREFIX_LOG(LOG_BUFFER_HEX, __VA_ARGS__)
37#define LOG_BUFFER_CHAR(...) PREFIX_LOG(LOG_BUFFER_CHAR, __VA_ARGS__)
38#define EARLY_LOGE(...) PREFIX_LOG(EARLY_LOGE, __VA_ARGS__)
39#define EARLY_LOGW(...) PREFIX_LOG(EARLY_LOGW, __VA_ARGS__)
40#define EARLY_LOGI(...) PREFIX_LOG(EARLY_LOGI, __VA_ARGS__)
41#define EARLY_LOGD(...) PREFIX_LOG(EARLY_LOGD, __VA_ARGS__)
42#define EARLY_LOGV(...) PREFIX_LOG(EARLY_LOGV, __VA_ARGS__)
43#define LOGE(...) PREFIX_LOG(LOGE, __VA_ARGS__)
44#define LOGW(...) PREFIX_LOG(LOGW, __VA_ARGS__)
45#define LOGI(...) PREFIX_LOG(LOGI, __VA_ARGS__)
46#define LOGD(...) PREFIX_LOG(LOGD, __VA_ARGS__)
47#define LOGV(...) PREFIX_LOG(LOGV, __VA_ARGS__)
48#define DRAM_LOGE(...) PREFIX_LOG(DRAM_LOGE, __VA_ARGS__)
49#define DRAM_LOGW(...) PREFIX_LOG(DRAM_LOGW, __VA_ARGS__)
50#define DRAM_LOGI(...) PREFIX_LOG(DRAM_LOGI, __VA_ARGS__)
51#define DRAM_LOGD(...) PREFIX_LOG(DRAM_LOGD, __VA_ARGS__)
52#define DRAM_LOGV(...) PREFIX_LOG(DRAM_LOGV, __VA_ARGS__)
53
55#define LOGI_TASK_CREATE(TASK) \
56 do { \
57 LOGI("Create %s task", TASK.name); \
58 TASK.create(); \
59 } while (0)
60
63#define BOOST_PP_LOGI_TASK_CREATE(R, DATA, ELEM) LOGI_TASK_CREATE(ELEM);
64
66#define LOGI_TASKS_CREATE(...) \
67 BOOST_PP_SEQ_FOR_EACH( \
68 BOOST_PP_LOGI_TASK_CREATE, _, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))
69
71#define LOGI_TASK_DESTROY_0() \
72 do { \
73 LOGI("Destroy %s task", pcTaskGetName(NULL)); \
74 vTaskDelete(NULL); \
75 std::unreachable(); \
76 } while (0)
77
79#define LOGI_TASK_DESTROY_1(TASK) \
80 do { \
81 LOGI("Destroy %s task", TASK.name); \
82 TASK.destroy(); \
83 } while (0)
84
86#define LOGI_TASK_DESTROY(...) \
87 BOOST_PP_OVERLOAD(LOGI_TASK_DESTROY_, __VA_ARGS__)(__VA_ARGS__)
88
90#define LOGI_TASK_RESUME(TASK) \
91 do { \
92 LOGI("Resume %s task", TASK.name); \
93 TASK.resume(); \
94 } while (0)
95
97#define LOGI_TASK_SUSPEND_0() \
98 do { \
99 LOGI("Suspend %s task", pcTaskGetName(NULL)); \
100 vTaskSuspend(NULL); \
101 } while (0)
102
104#define LOGI_TASK_SUSPEND_1(TASK) \
105 do { \
106 LOGI("Suspend %s task", TASK.name); \
107 TASK.suspend(); \
108 } while (0)
109
111#define LOGI_TASK_SUSPEND(...) \
112 BOOST_PP_OVERLOAD(LOGI_TASK_SUSPEND_, __VA_ARGS__)(__VA_ARGS__)