ArduinoMega2560_SPI 1.0
Cargando...
Buscando...
Nada coincide
msg.cpp
Ir a la documentación de este archivo.
1#include "system/msg/msg.h"
2
3/**
4 * @brief Imprime un mensaje estandarizado y formateado en el monitor serie.
5 *
6 * El mensaje aparece centrado entre dos líneas decorativas y acompañado
7 * de información contextual como archivo, función, fecha y hora.
8 *
9 * @param message Mensaje principal a mostrar.
10 * @param file Nombre del archivo origen.
11 * @param function Nombre de la función desde donde se llama.
12 * @param date Fecha de compilación o personalizada.
13 * @param time Hora de compilación o personalizada.
14 */
15void standardMessage(const char* message,
16 const char* file,
17 const char* function,
18 const char* date,
19 const char* time) {
20 const uint8_t totalWidth = 200; // Total width of the decorative line
21 int msgLen = strlen(message); // Length of the message text
22 int padding = (totalWidth - msgLen) / 2; // Spaces to add on the left to center the text
23
24 Serial.println();
25
26 // ─────────────────────────────
27 // Top decorative line
28 // ─────────────────────────────
29 for (uint8_t i = 0; i < totalWidth; i++) Serial.write('-');
30 Serial.println();
31
32 // ─────────────────────────────
33 // Centered message text
34 // ─────────────────────────────
35 for (int i = 0; i < padding; i++) Serial.write(' '); // Left padding
36 Serial.println(message); // Main message
37
38 // ─────────────────────────────
39 // Bottom decorative line
40 // ─────────────────────────────
41 for (uint8_t i = 0; i < totalWidth; i++) Serial.write('-');
42 Serial.println();
43
44 // ─────────────────────────────
45 // Detailed information below the main message
46 // ─────────────────────────────
47 Serial.print("[");
48 Serial.print(date);
49 Serial.print(" ");
50 Serial.print(time);
51 Serial.print("] ");
52 Serial.print(file);
53 Serial.print("::");
54 Serial.print(function);
55 Serial.print(" ➤ ");
56 Serial.println(message);
57
58 Serial.println();
59}
60
61
62/**
63 * @brief Imprime un encabezado decorativo con el mensaje centrado.
64 *
65 * Genera una línea con caracteres decorativos a ambos lados del texto,
66 * manteniendo un ancho total definido por el usuario.
67 *
68 * @param message Texto a centrar.
69 * @param width Ancho total de la línea.
70 * @param deco Carácter decorativo.
71 */
72void standardHeader(const char* message,
73 uint16_t width,
74 char deco) {
75 int msgLen = strlen(message);
76 int totalDeco = width - msgLen - 2; // Subtract 2 for spacing around the message
77 if (totalDeco < 0) totalDeco = 0;
78
79 int leftDeco = totalDeco / 2;
80 int rightDeco = totalDeco - leftDeco;
81
82 // 🔹 Blank line before the header
83 Serial.println();
84
85 // 🔹 Left decorative padding
86 for (int i = 0; i < leftDeco; i++) Serial.write(deco);
87
88 // 🔹 Centered message with spacing
89 Serial.print(' ');
90 Serial.print(message);
91 Serial.print(' ');
92
93 // 🔹 Right decorative padding
94 for (int i = 0; i < rightDeco; i++) Serial.write(deco);
95
96 // 🔹 Blank line after the header
97 Serial.println();
98 Serial.println();
99}
100
101
102/**
103 * @brief Imprime un encabezado decorado con texto centrado y metadatos.
104 *
105 * Construye una línea única que incluye:
106 * - mensaje principal
107 * - archivo
108 * - función
109 * - fecha y hora
110 *
111 * Todo ello centrado y rodeado de caracteres decorativos.
112 *
113 * @param message Mensaje principal.
114 * @param file Archivo origen.
115 * @param function Función origen.
116 * @param date Fecha de compilación.
117 * @param time Hora de compilación.
118 * @param width Ancho total de la línea.
119 * @param deco Carácter decorativo.
120 */
121void standardHeaderFull(const char* message,
122 const char* file,
123 const char* function,
124 const char* date,
125 const char* time,
126 uint16_t width,
127 char deco) {
128 char buffer[256];
129 // Build the full message with metadata
130 snprintf(buffer, sizeof(buffer), "%s | %s | %s | %s %s",
131 message, file, function, date, time);
132
133 int msgLen = strlen(buffer);
134 int totalDeco = width - msgLen - 2; // Subtract 2 for spacing around the message
135 if (totalDeco < 0) totalDeco = 0; // Prevent negative padding
136
137 int leftDeco = totalDeco / 2;
138 int rightDeco = totalDeco - leftDeco;
139
140 // 🔹 Blank line before the header
141 Serial.println();
142
143 // 🔹 Left decorative padding
144 for (int i = 0; i < leftDeco; i++) Serial.write(deco);
145
146 // 🔹 Centered message with spacing
147 Serial.print(' ');
148 Serial.print(buffer);
149 Serial.print(' ');
150
151 // 🔹 Right decorative padding
152 for (int i = 0; i < rightDeco; i++) Serial.write(deco);
153
154 // 🔹 Blank lines after the header
155 Serial.println();
156 Serial.println();
157}
158
159
160/**
161 * @brief Imprime un mensaje de error enriquecido con información contextual.
162 *
163 * Incluye:
164 * - fecha y hora
165 * - archivo
166 * - función
167 * - número de línea
168 * - mensaje de error
169 *
170 * @param message Mensaje de error.
171 * @param file Archivo origen.
172 * @param function Función origen.
173 * @param date Fecha de compilación.
174 * @param time Hora de compilación.
175 * @param line Número de línea donde se invoca.
176 */
177void standardErrorMessage(const char* message, const char* file, const char* function, const char* date, const char* time, int line) {
178 Serial.println();
179 Serial.print("[");
180 Serial.print(date);
181 Serial.print(" ");
182 Serial.print(time);
183 Serial.print("] ");
184 Serial.print(file);
185 Serial.print("::");
186 Serial.print(function);
187 Serial.print(" (Line ");
188 Serial.print(line);
189 Serial.print(") ❌ ERROR ➤ ");
190 Serial.println(message);
191 Serial.println();
192}
193
194
195/**
196 * @brief Muestra la configuración actual del sistema.
197 *
198 * Presenta los valores de la estructura configuracionMain
199 * con un formato visual claro y amigable.
200 *
201 * @param configuration Estructura de configuración del sistema.
202 */
203void showConfigurationMessage(const configuracionMain& configuration) {
204 standardMessage("Current System Configuration",
205 __FILE__,
206 __FUNCTION__,
207 __DATE__,
208 __TIME__);
209 Serial.print("🔧 Debug mode: ");
210 Serial.println(configuration.debugMode ? "Enabled" : "Disabled");
211
212 standardHeaderFull("End of Configuration",
213 __FILE__,
214 __FUNCTION__,
215 __DATE__,
216 __TIME__,
217 120,
218 '-');
219}
220
221
222/**
223 * @brief Imprime una línea compuesta por un carácter repetido.
224 *
225 * @param c Carácter a imprimir.
226 * @param length Número de repeticiones.
227 */
228void showMsgPrinLine(char c, int length) {
229 for (int i = 0; i < length; i++) {
230 Serial.print(c);
231 }
232 Serial.println();
233}
234
235
236/**
237 * @brief Imprime la información de versión del firmware.
238 *
239 * Muestra:
240 * - versión del firmware
241 * - nombre
242 * - fecha
243 * - autor
244 * - versión de la aplicación
245 * - nombre de la aplicación
246 * - fecha de la aplicación
247 */
248void printVersion(const char* fwVersion,
249 const char* fwName,
250 const char* fwDate,
251 const char* fwAuthor,
252 const char* appVersion,
253 const char* appName,
254 const char* appDate) {
255 standardMessage("Firmware Version Information",
256 __FILE__,
257 __FUNCTION__,
258 __DATE__,
259 __TIME__);
260 Serial.print("Firmware Version: "); Serial.println(fwVersion);
261 Serial.print("Firmware Name: "); Serial.println(fwName);
262 Serial.print("Firmware Date: "); Serial.println(fwDate);
263 Serial.print("Firmware Author: "); Serial.println(fwAuthor);
264 Serial.print("App Version: "); Serial.println(appVersion);
265 Serial.print("App Name: "); Serial.println(appName);
266 Serial.print("App Date: "); Serial.println(appDate);
267}
void standardMessage(const char *message, const char *file, const char *function, const char *date, const char *time)
Imprime un mensaje estandarizado y formateado en el monitor serie.
Definition msg.cpp:15
void standardErrorMessage(const char *message, const char *file, const char *function, const char *date, const char *time, int line)
Imprime un mensaje de error enriquecido con información contextual.
Definition msg.cpp:177
void standardHeaderFull(const char *message, const char *file, const char *function, const char *date, const char *time, uint16_t width, char deco)
Imprime un encabezado decorado con texto centrado y metadatos.
Definition msg.cpp:121
void showMsgPrinLine(char c, int length)
Imprime una línea compuesta por un carácter repetido.
Definition msg.cpp:228
void printVersion(const char *fwVersion, const char *fwName, const char *fwDate, const char *fwAuthor, const char *appVersion, const char *appName, const char *appDate)
Imprime la información de versión del firmware.
Definition msg.cpp:248
void standardHeader(const char *message, uint16_t width, char deco)
Imprime un encabezado decorativo con el mensaje centrado.
Definition msg.cpp:72
void showConfigurationMessage(const configuracionMain &configuration)
Muestra la configuración actual del sistema.
Definition msg.cpp:203
Main configuration structure for the project.
Definition config.h:13
uint8_t debugMode
Definition config.h:15