36 class SerialPortInterface;
49 std::unique_ptr<interface::SerialPortInterface> port,
50 boost::asio::io_context& ioc);
62 void start() override;
64 bool is_connected() const override;
67 void async_write_move(std::vector<uint8_t>&& data) override;
68 void async_write_shared(std::shared_ptr<const std::vector<uint8_t>> data) override;
70 void on_bytes(
OnBytes cb) override;
71 void on_state(
OnState cb) override;
74 void set_retry_interval(
unsigned interval_ms);
77 explicit
Serial(const config::SerialConfig& cfg);
78 Serial(const config::SerialConfig& cfg, std::unique_ptr<interface::SerialPortInterface> port,
79 boost::asio::io_context& ioc);
82 const
Impl* get_impl()
const {
return impl_.get(); }
83 Impl* get_impl() {
return impl_.get(); }
84 std::unique_ptr<Impl> impl_;
std::function< void(memory::ConstByteSpan)> OnBytes
std::function< void(base::LinkState)> OnState
std::function< void(size_t)> OnBackpressure
Serial Transport implementation.
Serial(Serial &&) noexcept
static std::shared_ptr< Serial > create(const config::SerialConfig &cfg, std::unique_ptr< interface::SerialPortInterface > port, boost::asio::io_context &ioc)
static std::shared_ptr< Serial > create(const config::SerialConfig &cfg, boost::asio::io_context &ioc)
SafeSpan< const uint8_t > ConstByteSpan