Add logging to main module
This commit is contained in:
parent
6765df9cf2
commit
d42829b643
@ -86,11 +86,6 @@ QueueHandle_t setupEspNow()
|
|||||||
return s_esp_now_queue;
|
return s_esp_now_queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isTxInFlight()
|
|
||||||
{
|
|
||||||
return s_tx_inflight;
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::array<std::uint8_t, 128>& getRxBuffer()
|
const std::array<std::uint8_t, 128>& getRxBuffer()
|
||||||
{
|
{
|
||||||
return s_rx_buffer;
|
return s_rx_buffer;
|
||||||
|
|||||||
@ -26,7 +26,6 @@ void setupWifi();
|
|||||||
[[nodiscard]] QueueHandle_t setupEspNow();
|
[[nodiscard]] QueueHandle_t setupEspNow();
|
||||||
|
|
||||||
void sendData(const std::array<std::uint8_t, 128>& buffer, const std::size_t length);
|
void sendData(const std::array<std::uint8_t, 128>& buffer, const std::size_t length);
|
||||||
bool isTxInFlight();
|
|
||||||
const std::array<std::uint8_t, 128>& getRxBuffer();
|
const std::array<std::uint8_t, 128>& getRxBuffer();
|
||||||
|
|
||||||
}// namespace App
|
}// namespace App
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
|
#include <array>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <array>
|
|
||||||
|
|
||||||
#include "app_networking.hpp"
|
#include "app_networking.hpp"
|
||||||
#include "app_serial.hpp"
|
#include "app_serial.hpp"
|
||||||
@ -9,10 +9,13 @@
|
|||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "driver/uart.h"
|
#include "driver/uart.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
|
static const char* TAG = "App";
|
||||||
|
|
||||||
TaskHandle_t s_main_task = nullptr;
|
TaskHandle_t s_main_task = nullptr;
|
||||||
|
|
||||||
QueueSetHandle_t s_queue_set = nullptr;
|
QueueSetHandle_t s_queue_set = nullptr;
|
||||||
@ -25,8 +28,11 @@ void s_sendUartData()
|
|||||||
uart_get_buffered_data_len(UART_NUM_0, &uart_rx_size);
|
uart_get_buffered_data_len(UART_NUM_0, &uart_rx_size);
|
||||||
if (uart_rx_size > 128 / 2)
|
if (uart_rx_size > 128 / 2)
|
||||||
{
|
{
|
||||||
|
ESP_LOGD(TAG, "Sending %ull bytes via UART.", uart_rx_size);
|
||||||
|
|
||||||
std::array<std::uint8_t, 128> tx_buffer;
|
std::array<std::uint8_t, 128> tx_buffer;
|
||||||
uart_read_bytes(UART_NUM_0, tx_buffer.data(), uart_rx_size, 0);
|
uart_read_bytes(UART_NUM_0, tx_buffer.data(), uart_rx_size, 0);
|
||||||
|
|
||||||
Networking::sendData(tx_buffer, uart_rx_size);
|
Networking::sendData(tx_buffer, uart_rx_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -37,28 +43,33 @@ void s_sendUartData()
|
|||||||
{
|
{
|
||||||
QueueSetMemberHandle_t queue_select = xQueueSelectFromSet(s_queue_set, portMAX_DELAY);
|
QueueSetMemberHandle_t queue_select = xQueueSelectFromSet(s_queue_set, portMAX_DELAY);
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "Event: %s.", queue_select == s_esp_now_queue ? "ESP-NOW event" : "UART event");
|
||||||
|
|
||||||
if (queue_select == s_esp_now_queue)
|
if (queue_select == s_esp_now_queue)
|
||||||
{
|
{
|
||||||
Networking::EspNowEvent event;
|
Networking::EspNowEvent event;
|
||||||
xQueueReceive(queue_select, &event, 0);
|
xQueueReceive(queue_select, &event, 0);
|
||||||
|
|
||||||
|
ESP_LOGD(TAG, "ESP-NOW event: %u, rx-length: %ull.", event.type, event.rx_length);
|
||||||
|
|
||||||
if (event.type == Networking::EspNowEvent::MSG_RECEIVED)
|
if (event.type == Networking::EspNowEvent::MSG_RECEIVED)
|
||||||
{
|
{
|
||||||
std::size_t uart_free = 0;
|
std::size_t uart_free = 0;
|
||||||
uart_get_tx_buffer_free_size(UART_NUM_0, &uart_free);
|
uart_get_tx_buffer_free_size(UART_NUM_0, &uart_free);
|
||||||
if (uart_free >= event.rx_length)
|
if (uart_free >= event.rx_length)
|
||||||
{
|
{
|
||||||
|
ESP_LOGD(TAG, "ESP-NOW event: wrote %ull bytes to UART RX.", uart_free);
|
||||||
const auto& esp_rx_buffer = Networking::getRxBuffer();
|
const auto& esp_rx_buffer = Networking::getRxBuffer();
|
||||||
uart_write_bytes(UART_NUM_0, esp_rx_buffer.data(), event.rx_length);
|
uart_write_bytes(UART_NUM_0, esp_rx_buffer.data(), event.rx_length);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// log data drop
|
ESP_LOGW(TAG, "ESP-NOW event: dropped RX data due to full UART RX buffer.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event.type == Networking::EspNowEvent::MSG_SEND_COMPLETE && Networking::isTxInFlight())
|
else if (event.type == Networking::EspNowEvent::MSG_SEND_COMPLETE)
|
||||||
{
|
{
|
||||||
// check if we have an UART_RX buffer, send if possible.
|
ESP_LOGD(TAG, "ESP-NOW event: TX completed. Checking to send data.");
|
||||||
s_sendUartData();
|
s_sendUartData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67,6 +78,8 @@ void s_sendUartData()
|
|||||||
uart_event_t event;
|
uart_event_t event;
|
||||||
xQueueReceive(s_uart_queue, &event, 0);
|
xQueueReceive(s_uart_queue, &event, 0);
|
||||||
|
|
||||||
|
ESP_LOGD(TAG, "UART event: %d", event.type);
|
||||||
|
|
||||||
if (event.type == UART_DATA)
|
if (event.type == UART_DATA)
|
||||||
{
|
{
|
||||||
s_sendUartData();
|
s_sendUartData();
|
||||||
@ -81,6 +94,8 @@ extern "C" void app_main(void)
|
|||||||
{
|
{
|
||||||
ESP_ERROR_CHECK(nvs_flash_init());
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
|
|
||||||
|
ESP_LOGD(TAG, "Starting main.");
|
||||||
|
|
||||||
Networking::setupWifi();
|
Networking::setupWifi();
|
||||||
s_esp_now_queue = Networking::setupEspNow();
|
s_esp_now_queue = Networking::setupEspNow();
|
||||||
s_uart_queue = Serial::setupSerial();
|
s_uart_queue = Serial::setupSerial();
|
||||||
@ -89,5 +104,6 @@ extern "C" void app_main(void)
|
|||||||
xQueueAddToSet(s_esp_now_queue, s_queue_set);
|
xQueueAddToSet(s_esp_now_queue, s_queue_set);
|
||||||
xQueueAddToSet(s_uart_queue, s_queue_set);
|
xQueueAddToSet(s_uart_queue, s_queue_set);
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "Setup completed.");
|
||||||
xTaskCreate(s_mainTask, "main_task", 2048, nullptr, 4, &s_main_task);
|
xTaskCreate(s_mainTask, "main_task", 2048, nullptr, 4, &s_main_task);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user