#pragma once #include #include #include #include "esp_err.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" namespace gateway { class GatewayController; struct Gateway485ControlBridgeConfig { bool enabled{false}; int tx_pin{-1}; int rx_pin{-1}; uint32_t baudrate{9600}; size_t rx_buffer_size{256}; size_t tx_buffer_size{256}; uint32_t read_timeout_ms{20}; uint32_t write_timeout_ms{20}; uint32_t task_stack_size{4096}; UBaseType_t task_priority{4}; }; class Gateway485ControlBridge { public: Gateway485ControlBridge(GatewayController& controller, Gateway485ControlBridgeConfig config = {}); esp_err_t start(); private: static void TaskEntry(void* arg); void taskLoop(); void handleBytes(const uint8_t* data, size_t len); void handleGatewayNotification(const std::vector& frame); GatewayController& controller_; Gateway485ControlBridgeConfig config_; TaskHandle_t task_handle_{nullptr}; bool started_{false}; }; } // namespace gateway