#pragma once #include "TPUart/Interface/Abstract.h" #include "driver/uart.h" #include #include #include #include namespace gateway::openknx { class TpuartUartInterface : public TPUart::Interface::Abstract { public: TpuartUartInterface(uart_port_t uart_port, int tx_pin, int rx_pin, size_t rx_buffer_size = 512, size_t tx_buffer_size = 512); ~TpuartUartInterface(); void begin(int baud) override; void end() override; bool available() override; bool availableForWrite() override; bool write(char value) override; int read() override; bool overflow() override; void flush() override; bool hasCallback() override; void registerCallback(std::function callback) override; private: uart_port_t uart_port_; int tx_pin_; int rx_pin_; size_t rx_buffer_size_; size_t tx_buffer_size_; std::atomic_bool overflow_{false}; std::function callback_; }; } // namespace gateway::openknx