// -------------------------------------------------------------------------------------------------------------------- /// \file main.cpp /// \brief Description // -------------------------------------------------------------------------------------------------------------------- // // vbchaos software design // // -------------------------------------------------------------------------------------------------------------------- /// $Revision: $ /// $Author: $ /// $Date: $ // (c) 2023 vbchaos // -------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------- // Include files // -------------------------------------------------------------------------------------------------------------------- #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" // ESP includes #include "driver/uart.h" #include "esp_log.h" #include "nvs_flash.h" // HAL includes #include "gpio.h" #include "uart.h" // Platform includes #include "logger.h" // -------------------------------------------------------------------------------------------------------------------- // Constant and macro definitions // -------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------- // Type definitions // -------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------- // File-scope variables // -------------------------------------------------------------------------------------------------------------------- static uart_port_t uartPort = UART_NUM_0; static TaskHandle_t loggerTaskHandle; // -------------------------------------------------------------------------------------------------------------------- // Function declarations // -------------------------------------------------------------------------------------------------------------------- void loggerTask(void* parameters); // -------------------------------------------------------------------------------------------------------------------- // Function definitions // -------------------------------------------------------------------------------------------------------------------- extern "C" void app_main(void) { esp_log_level_set("*", ESP_LOG_WARN); esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); 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 uartDebug = uart(&uartPort); uartDebug.open(); // ----------------------------------------------------------------------------------------------------------------- // System-wide Debug Logger logger debugLogger = logger(16, uartDebug); // Call the logger executable within a dedicated task and forget about it afterwards xTaskCreate(loggerTask, (const char*)"loggerTask", 3072, &debugLogger, 3, &loggerTaskHandle); LOGGER_PRINT("\n\r-----------------------------------------------------------------------\n\r"); LOGGER_PRINT("System Start\n\r"); LOGGER_PRINT("\n\r"); LOGGER_PRINT("WordClock\n\r"); LOGGER_PRINT("Release: %d.%d \n\r", MAJORRELEASE, MINORRELEASE); LOGGER_PRINT("Compiled on %s at %s\n\r\n\r\n\r", __DATE__, __TIME__); gpio debugIO = gpio(2, gpio::Direction_t::GPIO_DIRECTION_OUTPUT, gpio::Value_t::GPIO_VALUE_LOW); while(1) { vTaskDelay(100); } } void loggerTask(void* parameters) { logger* debugLogger = (logger*) parameters; while (1) { debugLogger->task(); vTaskDelay(10); } }