Add KiCad files and USB CDC logging support
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
/*
|
||||
* Developed by TComLab
|
||||
* Version: v0.1
|
||||
* Date: 2025-12-15
|
||||
*/
|
||||
|
||||
#include "uart_mux.h"
|
||||
|
||||
#include <string.h>
|
||||
@@ -38,6 +44,8 @@ static bool s_initialized;
|
||||
static int64_t s_last_heartbeat_us[UART_MUX_MAX_CHANNELS];
|
||||
static TaskHandle_t s_watchdog_task;
|
||||
|
||||
// Перемикає апаратний мультиплексор на вказаний канал під захистом мьютекса,
|
||||
// оновлюючи таймстемп останнього heartbeat для контролю watchdog.
|
||||
static esp_err_t uart_mux_select_locked(size_t channel)
|
||||
{
|
||||
if (channel >= UART_MUX_MAX_CHANNELS) {
|
||||
@@ -56,6 +64,8 @@ static esp_err_t uart_mux_select_locked(size_t channel)
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
// Періодично опитує всі канали, щоб зчитати heartbeat та перезапускає DCDC,
|
||||
// якщо канал «мовчить» довше за CONFIG_WATCH_UART_HEARTBEAT_TIMEOUT_SEC.
|
||||
static void uart_mux_watchdog_task(void *arg)
|
||||
{
|
||||
const TickType_t poll_interval = pdMS_TO_TICKS(1000);
|
||||
@@ -94,6 +104,8 @@ static void uart_mux_watchdog_task(void *arg)
|
||||
|
||||
#endif // CONFIG_WATCH_UART_MUX_ENABLED
|
||||
|
||||
// Налаштовує GPIO-вибірники, драйвер UART та створює watchdog-задачу для
|
||||
// мультиплексора; повторний виклик просто повертає ESP_OK.
|
||||
esp_err_t uart_mux_init(void)
|
||||
{
|
||||
#if !CONFIG_WATCH_UART_MUX_ENABLED
|
||||
@@ -156,6 +168,7 @@ esp_err_t uart_mux_init(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
// Повертає ознаку ініціалізації модулю UART мультиплексора.
|
||||
bool uart_mux_ready(void)
|
||||
{
|
||||
#if CONFIG_WATCH_UART_MUX_ENABLED
|
||||
@@ -165,11 +178,14 @@ bool uart_mux_ready(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
// Кількість доступних каналів, визначених у конфігурації.
|
||||
size_t uart_mux_channel_count(void)
|
||||
{
|
||||
return CONFIG_WATCH_UART_MUX_CHANNELS;
|
||||
}
|
||||
|
||||
// Перемикається на канал, передає буфер даних через загальний UART та
|
||||
// захищає доступ до шини мьютексом, щоб уникнути гонок між задачами.
|
||||
esp_err_t uart_mux_write(size_t channel, const uint8_t *data, size_t length, TickType_t timeout)
|
||||
{
|
||||
#if !CONFIG_WATCH_UART_MUX_ENABLED
|
||||
@@ -199,6 +215,8 @@ esp_err_t uart_mux_write(size_t channel, const uint8_t *data, size_t length, Tic
|
||||
#endif
|
||||
}
|
||||
|
||||
// Читає дані з вказаного каналу, оновлюючи heartbeat під час успішного
|
||||
// зчитування, і повертає кількість байтів через out_length.
|
||||
esp_err_t uart_mux_read(size_t channel, uint8_t *buffer, size_t buffer_size, size_t *out_length, TickType_t timeout)
|
||||
{
|
||||
#if !CONFIG_WATCH_UART_MUX_ENABLED
|
||||
|
||||
Reference in New Issue
Block a user