Added logger - functional
This commit is contained in:
@@ -968,6 +968,11 @@
|
|||||||
<type>1</type>
|
<type>1</type>
|
||||||
<location>/home/matthias/esp/esp-idf/components/vfs/vfs_uart.c</location>
|
<location>/home/matthias/esp/esp-idf/components/vfs/vfs_uart.c</location>
|
||||||
</link>
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>build/ide/esp_idf_components/vfs/vfs_usb_serial_jtag.c</name>
|
||||||
|
<type>1</type>
|
||||||
|
<location>/home/matthias/esp/esp-idf/components/vfs/vfs_usb_serial_jtag.c</location>
|
||||||
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>build/ide/esp_idf_components/wear_levelling/Partition.cpp</name>
|
<name>build/ide/esp_idf_components/wear_levelling/Partition.cpp</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ idf_component_register(
|
|||||||
"main.cpp"
|
"main.cpp"
|
||||||
"src/gpio.cpp"
|
"src/gpio.cpp"
|
||||||
"src/wifi.cpp"
|
"src/wifi.cpp"
|
||||||
|
"src/logger.cpp"
|
||||||
INCLUDE_DIRS # optional, add here public include directories
|
INCLUDE_DIRS # optional, add here public include directories
|
||||||
"inc"
|
"inc"
|
||||||
PRIV_INCLUDE_DIRS # optional, add here private include directories
|
PRIV_INCLUDE_DIRS # optional, add here private include directories
|
||||||
|
|||||||
@@ -0,0 +1,182 @@
|
|||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
/// \file logger.h
|
||||||
|
/// \brief File description
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// vbchaos software design
|
||||||
|
//
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
/// $Revision: $
|
||||||
|
/// $Author: $
|
||||||
|
/// $Date: $
|
||||||
|
// (c) 2023 vbchaos
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MAIN_INC_LOGGER_H_
|
||||||
|
#define MAIN_INC_LOGGER_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger implementation
|
||||||
|
* \defgroup Logger
|
||||||
|
* \brief Implementation of a non-blocking logger for debug purpose
|
||||||
|
* \ingroup Platform
|
||||||
|
*
|
||||||
|
* A non-blocking logger that implements its own task with very low (unimportant)
|
||||||
|
* priority
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Include files
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// CompilerIncludes
|
||||||
|
// All include files that are provided by the compiler directly
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
// ProjectIncludes
|
||||||
|
// All include files that are provided by the project
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "freertos/queue.h"
|
||||||
|
#include "freertos/semphr.h"
|
||||||
|
|
||||||
|
#include "driver/uart_select.h"
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Constant and macro definitions
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_ERROR(...) \
|
||||||
|
Logger_log(__FILE__, __func__, __LINE__, LOGTYPE_ERROR, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_WARNING(...) \
|
||||||
|
Logger_log(__FILE__, __func__, __LINE__, LOGTYPE_WARNING, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_INFO(...) \
|
||||||
|
Logger_log(__FILE__, __func__, __LINE__, LOGTYPE_INFO, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_DEBUG(...) \
|
||||||
|
Logger::Logger_log(__FILE__, __func__, __LINE__, LOGTYPE_DEBUG, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_PRINT(...) \
|
||||||
|
Logger_log("", "", 0, LOGTYPE_PRINT, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_ERROR_ISR(...) \
|
||||||
|
Logger_logISR(__FILE__, __func__, __LINE__, LOGTYPE_ERROR, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_WARNING_ISR(...) \
|
||||||
|
Logger_logISR(__FILE__, __func__, __LINE__, LOGTYPE_WARNING, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_INFO_ISR(...) \
|
||||||
|
Logger_logISR(__FILE__, __func__, __LINE__, LOGTYPE_INFO, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_DEBUG_ISR(a, ...) \
|
||||||
|
Logger_logISR(a, __FILE__, __func__, __LINE__, LOGTYPE_DEBUG, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error
|
||||||
|
* \memberof Logger
|
||||||
|
*/
|
||||||
|
#define LOGGER_PRINT_ISR(a, ...) \
|
||||||
|
Logger_logISR(a, "", "", 0, LOGTYPE_PRINT, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Type definitions.
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
LOGTYPE_PRINT, /**< Raw print */
|
||||||
|
LOGTYPE_DEBUG, /**< Debug information only; will not be stored on SD-card */
|
||||||
|
LOGTYPE_INFO, /**< Informational messages of important events */
|
||||||
|
LOGTYPE_WARNING, /**< Recoverable fault */
|
||||||
|
LOGTYPE_SUCCESS, /**< A specific success message */
|
||||||
|
LOGTYPE_ERROR /**< Unrecoverable fault */
|
||||||
|
} LogType;
|
||||||
|
|
||||||
|
|
||||||
|
struct LogQueueItem
|
||||||
|
{
|
||||||
|
char fileName[32];
|
||||||
|
char functionName[32];
|
||||||
|
char context[128];
|
||||||
|
int lineNumber;
|
||||||
|
LogType logType;
|
||||||
|
};
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Function declarations
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
class Logger
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static uart_port_t uartPort;
|
||||||
|
static int queuesize;
|
||||||
|
static QueueHandle_t logQueue;
|
||||||
|
|
||||||
|
Logger(int queuesize, uart_port_t uartPort);
|
||||||
|
|
||||||
|
static void Logger_log(const char* fileName, const char* functionName, int lineNumber, LogType logType, const char* format, ...);
|
||||||
|
|
||||||
|
static void Logger_logISR(struct Logger* self, const char* fileName, const char* functionName, int lineNumber, LogType logType, const char* context);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static TaskHandle_t logTaskHandle;
|
||||||
|
|
||||||
|
static void loggerTask(void* parameters);
|
||||||
|
|
||||||
|
static void composeLogQueueItem(struct LogQueueItem* logQueueItem, const char* fileName, const char* functionName,
|
||||||
|
int lineNumber, LogType logType, const char* context);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
#endif /* MAIN_INC_LOGGER_H_ */
|
||||||
+29
-5
@@ -10,23 +10,23 @@
|
|||||||
|
|
||||||
#include "driver/gpio.h"
|
#include "driver/gpio.h"
|
||||||
#include "inc/gpio.h"
|
#include "inc/gpio.h"
|
||||||
|
#include "driver/uart_select.h"
|
||||||
#include "inc/wifi.h"
|
#include "inc/wifi.h"
|
||||||
|
|
||||||
|
#include "inc/logger.h"
|
||||||
|
|
||||||
|
static const uart_port_t uartPort = UART_NUM_0;
|
||||||
static TaskHandle_t devTaskHandle = NULL;
|
static TaskHandle_t devTaskHandle = NULL;
|
||||||
static void devTask(void* parameters);
|
static void devTask(void* parameters);
|
||||||
static GPIO gpio0(4, GPIO_DIRECTION_OUTPUT);
|
static GPIO gpio0(4, GPIO_DIRECTION_OUTPUT);
|
||||||
static GPIO gpio1(18, GPIO_DIRECTION_OUTPUT);
|
static GPIO gpio1(18, GPIO_DIRECTION_OUTPUT);
|
||||||
static time_t currentTime;
|
static time_t currentTime;
|
||||||
//
|
|
||||||
//static void wifi_init(void);
|
|
||||||
static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);
|
|
||||||
void wifi_init_sta(void);
|
|
||||||
|
|
||||||
extern "C" void app_main(void)
|
extern "C" void app_main(void)
|
||||||
{
|
{
|
||||||
esp_log_level_set("*", ESP_LOG_WARN);
|
esp_log_level_set("*", ESP_LOG_WARN);
|
||||||
|
|
||||||
|
|
||||||
esp_err_t ret = nvs_flash_init();
|
esp_err_t ret = nvs_flash_init();
|
||||||
|
|
||||||
if(ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
|
if(ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
|
||||||
@@ -35,6 +35,30 @@ extern "C" void app_main(void)
|
|||||||
ret = nvs_flash_init();
|
ret = nvs_flash_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------
|
||||||
|
// UART
|
||||||
|
//
|
||||||
|
const uart_config_t uartConfig =
|
||||||
|
{
|
||||||
|
.baud_rate = 115200,
|
||||||
|
.data_bits = UART_DATA_8_BITS,
|
||||||
|
.parity = UART_PARITY_DISABLE,
|
||||||
|
.stop_bits = UART_STOP_BITS_1,
|
||||||
|
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
|
||||||
|
.rx_flow_ctrl_thresh = 0,
|
||||||
|
.source_clk = UART_SCLK_DEFAULT
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(uart_param_config(uartPort, &uartConfig));
|
||||||
|
ESP_ERROR_CHECK(uart_set_pin(uartPort, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
|
||||||
|
ESP_ERROR_CHECK(uart_driver_install(uartPort, 1024, 1024, 0, NULL, 0));
|
||||||
|
|
||||||
|
uart_write_bytes(uartPort, "helloWorld", sizeof("helloworld"));
|
||||||
|
|
||||||
|
Logger logger(10, uartPort);
|
||||||
|
logger.Logger_log(__FILE__, __func__, __LINE__, LOGTYPE_DEBUG, "Hello World from the Logger himself");
|
||||||
|
|
||||||
|
LOGGER_DEBUG("YEAHAAA");
|
||||||
|
|
||||||
// Create the development task
|
// Create the development task
|
||||||
if(xTaskCreate(devTask, "DevTask", 2048, NULL, 3, &devTaskHandle) != pdPASS)
|
if(xTaskCreate(devTask, "DevTask", 2048, NULL, 3, &devTaskHandle) != pdPASS)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,249 @@
|
|||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
/// \file logger.cpp
|
||||||
|
/// \brief Description
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// vbchaos software design
|
||||||
|
//
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
/// $Revision: $
|
||||||
|
/// $Author: $
|
||||||
|
/// $Date: $
|
||||||
|
// (c) 2023 vbchaos
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Include files
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Constant and macro definitions
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define ENABLE_SERIAL_LOGGING
|
||||||
|
//#undef ENABLE_SERIAL_LOGGING
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Type definitions
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// File-scope variables
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Function declarations
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Function definitions
|
||||||
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
TaskHandle_t Logger::logTaskHandle = NULL;
|
||||||
|
uart_port_t Logger::uartPort = 0;
|
||||||
|
QueueHandle_t Logger::logQueue = NULL;
|
||||||
|
int Logger::queuesize = 0;
|
||||||
|
|
||||||
|
Logger::Logger(int queuesize, uart_port_t uartPort)
|
||||||
|
{
|
||||||
|
Logger::uartPort = uartPort;
|
||||||
|
Logger::queuesize = queuesize;
|
||||||
|
logQueue = xQueueCreate(queuesize, sizeof(struct LogQueueItem));
|
||||||
|
|
||||||
|
xTaskCreate(loggerTask, (const char*)"loggerTask", 3072, NULL, 3, &logTaskHandle);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger::Logger_log(const char* fileName, const char* functionName, int lineNumber, LogType logType, const char* format, ...)
|
||||||
|
{
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
static int nrLostMessages = 0;
|
||||||
|
static bool overflowRecovery = false;
|
||||||
|
int nrOfMessages;
|
||||||
|
struct LogQueueItem logQueueItem;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
nrOfMessages = uxQueueMessagesWaiting(Logger::logQueue);
|
||||||
|
|
||||||
|
if((nrOfMessages == queuesize - 1) && !overflowRecovery)
|
||||||
|
{
|
||||||
|
// Queue almost full, only one entry left. Log a warning instead
|
||||||
|
composeLogQueueItem(&logQueueItem, __FILE__, __func__, __LINE__, LOGTYPE_WARNING, "Log queue overflow");
|
||||||
|
(void)xQueueSend(logQueue, &logQueueItem, 0);
|
||||||
|
|
||||||
|
overflowRecovery = true;
|
||||||
|
nrLostMessages = 1;
|
||||||
|
}
|
||||||
|
else if((nrOfMessages == 0) && overflowRecovery)
|
||||||
|
{
|
||||||
|
// Queue empty again after an overflow
|
||||||
|
char str[128];
|
||||||
|
snprintf(str, sizeof(str) / sizeof(str[0]), "%d messages lost", nrLostMessages);
|
||||||
|
composeLogQueueItem(&logQueueItem, __FILE__, __func__, __LINE__, LOGTYPE_WARNING, str);
|
||||||
|
(void)xQueueSend(logQueue, &logQueueItem, 0);
|
||||||
|
|
||||||
|
overflowRecovery = false;
|
||||||
|
}
|
||||||
|
else if(!overflowRecovery)
|
||||||
|
{
|
||||||
|
// Normal behaviour, queue not full
|
||||||
|
char str[128];
|
||||||
|
va_start(ap, format);
|
||||||
|
vsnprintf(str, sizeof(str) / sizeof(str[0]), format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
composeLogQueueItem(&logQueueItem, fileName, functionName, lineNumber, logType, str);
|
||||||
|
(void)xQueueSend(logQueue, &logQueueItem, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Count number of lost messages
|
||||||
|
++nrLostMessages;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logger_logISR(struct Logger* self, const char* fileName, const char* functionName, int lineNumber, LogType logType, const char* context)
|
||||||
|
{
|
||||||
|
#if defined(ENABLE_LOGGING)
|
||||||
|
if (self->initialized)
|
||||||
|
{
|
||||||
|
struct LogQueueItem logQueueItem;
|
||||||
|
portBASE_TYPE higherPriorityTaskWoken = pdFALSE;
|
||||||
|
|
||||||
|
composeLogQueueItem(&logQueueItem, fileName, functionName, lineNumber, logType, context);
|
||||||
|
|
||||||
|
if(xQueueSendFromISR(self->logQueue, &logQueueItem, &higherPriorityTaskWoken) != pdTRUE)
|
||||||
|
{
|
||||||
|
// Queue failed
|
||||||
|
}
|
||||||
|
|
||||||
|
portEND_SWITCHING_ISR(higherPriorityTaskWoken);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
void Logger::composeLogQueueItem(struct LogQueueItem* logQueueItem, const char* fileName, const char* functionName,
|
||||||
|
int lineNumber, LogType logType, const char* context)
|
||||||
|
{
|
||||||
|
const size_t fileNameSize = sizeof(logQueueItem->fileName) / sizeof(logQueueItem->fileName[0]);
|
||||||
|
const size_t functionNameSize = sizeof(logQueueItem->functionName) / sizeof(logQueueItem->functionName[0]);
|
||||||
|
const size_t contextSize = sizeof(logQueueItem->context) / sizeof(logQueueItem->context[0]);
|
||||||
|
|
||||||
|
logQueueItem->logType = logType;
|
||||||
|
strncpy(&(logQueueItem->context[0]), context, contextSize);
|
||||||
|
logQueueItem->context[contextSize - 1] = '\0';
|
||||||
|
|
||||||
|
if(logType != LOGTYPE_PRINT)
|
||||||
|
{
|
||||||
|
int fileNameIndex = 0;
|
||||||
|
|
||||||
|
// If filename starts with "src/", strip this part
|
||||||
|
if((fileName[0] == 's') &&
|
||||||
|
(fileName[1] == 'r') &&
|
||||||
|
(fileName[2] == 'c') &&
|
||||||
|
(fileName[3] == '/'))
|
||||||
|
{
|
||||||
|
fileNameIndex = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// It is known that the strncpy use can potentially truncate the source string, meaning
|
||||||
|
// that the target string size is smaller then the original string
|
||||||
|
// This is not a problem in this particular case, so the compiler warning is disabled
|
||||||
|
// for this situation
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wstringop-truncation"
|
||||||
|
// All logtypes except LOGTYPE_PRINT need filename, functionname and linenumber.
|
||||||
|
strncpy(&(logQueueItem->fileName[0]), &fileName[fileNameIndex], fileNameSize);
|
||||||
|
strncpy(&(logQueueItem->functionName[0]), functionName, functionNameSize);
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
logQueueItem->lineNumber = lineNumber;
|
||||||
|
|
||||||
|
// Fix terminating null byte in strncpy in case string to be copied is too long
|
||||||
|
logQueueItem->fileName[fileNameSize - 1] = '\0';
|
||||||
|
logQueueItem->functionName[functionNameSize - 1] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void Logger::loggerTask(void* parameters)
|
||||||
|
{
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
struct LogQueueItem logQueueItem;
|
||||||
|
|
||||||
|
xQueueReceive(logQueue, &logQueueItem, portMAX_DELAY);
|
||||||
|
|
||||||
|
if(logQueueItem.logType == LOGTYPE_PRINT)
|
||||||
|
{
|
||||||
|
// Raw print
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
uart_write_bytes(uartPort, logQueueItem.context, strlen(logQueueItem.context));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
char str[256];
|
||||||
|
char* vt100Prefix = "";
|
||||||
|
const char* vt100Postfix = "\033[0m";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
if(logQueueItem.logType == LOGTYPE_INFO)
|
||||||
|
{
|
||||||
|
vt100Prefix = "\033[33m";
|
||||||
|
}
|
||||||
|
else if(logQueueItem.logType == LOGTYPE_WARNING)
|
||||||
|
{
|
||||||
|
vt100Prefix = "\033[35m";
|
||||||
|
}
|
||||||
|
else if(logQueueItem.logType == LOGTYPE_ERROR)
|
||||||
|
{
|
||||||
|
vt100Prefix = "\033[31m";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
unsigned int seconds = 0;
|
||||||
|
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
// Formatted print
|
||||||
|
snprintf(str, sizeof(str) / sizeof(str[0]), "%s[%s] %09d %s, %s, %d: %s%s\n\r",
|
||||||
|
vt100Prefix,
|
||||||
|
(logQueueItem.logType == LOGTYPE_DEBUG) ? "DBG" :
|
||||||
|
(logQueueItem.logType == LOGTYPE_INFO) ? "INF" :
|
||||||
|
(logQueueItem.logType == LOGTYPE_WARNING) ? "WRN" : "ERR",
|
||||||
|
seconds,
|
||||||
|
logQueueItem.fileName,
|
||||||
|
logQueueItem.functionName,
|
||||||
|
logQueueItem.lineNumber,
|
||||||
|
logQueueItem.context,
|
||||||
|
vt100Postfix);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ENABLE_SERIAL_LOGGING)
|
||||||
|
uart_write_bytes(uartPort, str, strlen(str));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
+5
-9
@@ -760,15 +760,13 @@ CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
|
|||||||
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
|
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
|
||||||
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
|
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
|
||||||
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
|
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
|
||||||
CONFIG_ESP_CONSOLE_UART_DEFAULT=y
|
# CONFIG_ESP_CONSOLE_UART_DEFAULT is not set
|
||||||
# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
|
# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
|
||||||
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
||||||
# CONFIG_ESP_CONSOLE_NONE is not set
|
CONFIG_ESP_CONSOLE_NONE=y
|
||||||
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
||||||
# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
|
# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
|
||||||
CONFIG_ESP_CONSOLE_UART=y
|
|
||||||
CONFIG_ESP_CONSOLE_UART_NUM=0
|
CONFIG_ESP_CONSOLE_UART_NUM=0
|
||||||
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
|
||||||
CONFIG_ESP_INT_WDT=y
|
CONFIG_ESP_INT_WDT=y
|
||||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
||||||
CONFIG_ESP_TASK_WDT_EN=y
|
CONFIG_ESP_TASK_WDT_EN=y
|
||||||
@@ -1536,13 +1534,11 @@ CONFIG_ESP32C3_MEMPROT_FEATURE_LOCK=y
|
|||||||
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||||
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||||
CONFIG_MAIN_TASK_STACK_SIZE=3584
|
CONFIG_MAIN_TASK_STACK_SIZE=3584
|
||||||
CONFIG_CONSOLE_UART_DEFAULT=y
|
# CONFIG_CONSOLE_UART_DEFAULT is not set
|
||||||
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
||||||
# CONFIG_CONSOLE_UART_NONE is not set
|
CONFIG_CONSOLE_UART_NONE=y
|
||||||
# CONFIG_ESP_CONSOLE_UART_NONE is not set
|
CONFIG_ESP_CONSOLE_UART_NONE=y
|
||||||
CONFIG_CONSOLE_UART=y
|
|
||||||
CONFIG_CONSOLE_UART_NUM=0
|
CONFIG_CONSOLE_UART_NUM=0
|
||||||
CONFIG_CONSOLE_UART_BAUDRATE=115200
|
|
||||||
CONFIG_INT_WDT=y
|
CONFIG_INT_WDT=y
|
||||||
CONFIG_INT_WDT_TIMEOUT_MS=300
|
CONFIG_INT_WDT_TIMEOUT_MS=300
|
||||||
CONFIG_ESP_TASK_WDT=y
|
CONFIG_ESP_TASK_WDT=y
|
||||||
|
|||||||
+10
-6
@@ -365,8 +365,8 @@ CONFIG_PARTITION_TABLE_MD5=y
|
|||||||
#
|
#
|
||||||
# Example Configuration
|
# Example Configuration
|
||||||
#
|
#
|
||||||
CONFIG_ESP_WIFI_SSID="myssid"
|
CONFIG_ESP_WIFI_SSID="vbchaos"
|
||||||
CONFIG_ESP_WIFI_PASSWORD="mypassword"
|
CONFIG_ESP_WIFI_PASSWORD="mijninternet"
|
||||||
# end of Example Configuration
|
# end of Example Configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -760,14 +760,16 @@ CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
|
|||||||
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
|
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
|
||||||
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
|
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
|
||||||
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
|
CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
|
||||||
CONFIG_ESP_CONSOLE_UART_DEFAULT=y
|
# CONFIG_ESP_CONSOLE_UART_DEFAULT is not set
|
||||||
# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
|
# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
|
||||||
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
CONFIG_ESP_CONSOLE_UART_CUSTOM=y
|
||||||
# CONFIG_ESP_CONSOLE_NONE is not set
|
# CONFIG_ESP_CONSOLE_NONE is not set
|
||||||
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
||||||
# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
|
# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
|
||||||
CONFIG_ESP_CONSOLE_UART=y
|
CONFIG_ESP_CONSOLE_UART=y
|
||||||
CONFIG_ESP_CONSOLE_UART_NUM=0
|
CONFIG_ESP_CONSOLE_UART_NUM=0
|
||||||
|
CONFIG_ESP_CONSOLE_UART_TX_GPIO=0
|
||||||
|
CONFIG_ESP_CONSOLE_UART_RX_GPIO=1
|
||||||
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
||||||
CONFIG_ESP_INT_WDT=y
|
CONFIG_ESP_INT_WDT=y
|
||||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
||||||
@@ -1536,12 +1538,14 @@ CONFIG_ESP32C3_MEMPROT_FEATURE_LOCK=y
|
|||||||
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||||
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||||
CONFIG_MAIN_TASK_STACK_SIZE=3584
|
CONFIG_MAIN_TASK_STACK_SIZE=3584
|
||||||
CONFIG_CONSOLE_UART_DEFAULT=y
|
# CONFIG_CONSOLE_UART_DEFAULT is not set
|
||||||
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
CONFIG_CONSOLE_UART_CUSTOM=y
|
||||||
# CONFIG_CONSOLE_UART_NONE is not set
|
# CONFIG_CONSOLE_UART_NONE is not set
|
||||||
# CONFIG_ESP_CONSOLE_UART_NONE is not set
|
# CONFIG_ESP_CONSOLE_UART_NONE is not set
|
||||||
CONFIG_CONSOLE_UART=y
|
CONFIG_CONSOLE_UART=y
|
||||||
CONFIG_CONSOLE_UART_NUM=0
|
CONFIG_CONSOLE_UART_NUM=0
|
||||||
|
CONFIG_CONSOLE_UART_TX_GPIO=0
|
||||||
|
CONFIG_CONSOLE_UART_RX_GPIO=1
|
||||||
CONFIG_CONSOLE_UART_BAUDRATE=115200
|
CONFIG_CONSOLE_UART_BAUDRATE=115200
|
||||||
CONFIG_INT_WDT=y
|
CONFIG_INT_WDT=y
|
||||||
CONFIG_INT_WDT_TIMEOUT_MS=300
|
CONFIG_INT_WDT_TIMEOUT_MS=300
|
||||||
|
|||||||
Reference in New Issue
Block a user