#ifndef EVSE_LINK_FRAMING_H_ #define EVSE_LINK_FRAMING_H_ #include #include #include "driver/uart.h" // UART configuration #define UART_PORT UART_NUM_2 #define UART_BAUDRATE 115200 #define UART_RX_BUF_SIZE 256 // GPIO pin assignments for UART #define TX_PIN 21 // GPIO21 -> RX on other board #define RX_PIN 22 // GPIO22 -> TX on other board // Frame delimiters #define MAGIC_START 0x7E #define MAGIC_END 0x7F // Maximum payload (excluding sequence byte) #define EVSE_LINK_MAX_PAYLOAD 254 // Callback type for when a full frame is received typedef void (*evse_link_frame_cb_t)(uint8_t src, uint8_t dest, const uint8_t *payload, uint8_t len); // Initialize framing module (mutex, UART driver, etc.) void evse_link_framing_init(void); // Send a framed payload to `dest` with length `len` // Includes source address in the header bool evse_link_framing_send(uint8_t dest, uint8_t src, const uint8_t *payload, uint8_t len); // Feed a received byte into the framing parser void evse_link_framing_recv_byte(uint8_t byte); // Register a callback for complete frames void evse_link_framing_register_cb(evse_link_frame_cb_t cb); #endif // EVSE_LINK_FRAMING_H_