powerpods/main/uart.h
simon 47c75110c9 Stream slave accel via ESP-NOW with master snapshot cache.
Slaves push BMA456 samples at 16ms when enabled; the master caches per
client and exposes ACCEL_SNAPSHOT and ACCEL_STREAM over UART. goTool adds
dashboard stream controls, HTTP accel-stream routes, and an external
WebSocket API with per-connection receive/interval and slave stream commands.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 19:11:36 +02:00

52 lines
1.0 KiB
C

#ifndef UART_H
#define UART_H
#include "esp_err.h"
#include "freertos/idf_additions.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#define UART_NUM UART_NUM_1
#define UART_BAUD_RATE 921600
// #define UART_TXD_PIN 3
// #define UART_RXD_PIN 2
#define UART_TXD_PIN 2
#define UART_RXD_PIN 3
#define UART_BUF_SIZE 2048
#define START_MARKER 0xAA
#define STOP_MARKER 0xCC
#define MAX_BUF_SIZE 252
#define MAX_PAYLOAD_SIZE \
MAX_BUF_SIZE - 4 // Buffer overhead, Start, Len, CRC, End
typedef enum {
STATE_START,
STATE_LEN,
STATE_DATA,
STATE_CHECKSUM,
STATE_STOP
} parser_state_t;
typedef struct {
uint8_t payload[MAX_PAYLOAD_SIZE];
uint8_t len;
uint8_t index;
uint8_t checksum;
parser_state_t state;
} uart_packet_t;
typedef struct {
uint8_t cmd;
} uart_command_t;
void init_uart(QueueHandle_t cmd_queue);
void uart_read_task(void *param);
bool parse_uart_byte(uint8_t byte, uart_packet_t *p);
esp_err_t uart_send_framed(const uint8_t *payload, size_t len);
#endif