19 #include <boost/asio/io_context.hpp>
28 baud_rate_(baud_rate),
30 use_independent_context_(false),
34 flow_control_(
"none"),
35 retry_interval_(3000) {
41 std::unique_ptr<wrapper::Serial>
serial;
42 if (use_independent_context_) {
43 serial = std::make_unique<wrapper::Serial>(device_, baud_rate_, std::make_shared<boost::asio::io_context>());
44 serial->set_manage_external_context(
true);
46 serial = std::make_unique<wrapper::Serial>(device_, baud_rate_);
54 serial->set_data_bits(data_bits_);
55 serial->set_stop_bits(stop_bits_);
56 serial->set_parity(parity_);
57 serial->set_flow_control(flow_control_);
58 serial->set_retry_interval(retry_interval_);
73 on_data_ = std::move(handler);
78 on_connect_ = std::move(handler);
83 on_disconnect_ = std::move(handler);
88 on_error_ = std::move(handler);
108 flow_control_ = flow;
113 retry_interval_ = std::chrono::milliseconds(milliseconds);
118 use_independent_context_ = use_independent;
static void ensure_io_context_running()
Automatically start IoContextManager if not running.
Modernized Builder for Serial.
SerialBuilder & on_disconnect(std::function< void(const wrapper::ConnectionContext &)> handler) override
Set disconnection handler callback.
SerialBuilder & on_data(std::function< void(const wrapper::MessageContext &)> handler) override
Set data handler callback.
SerialBuilder & parity(const std::string &p)
Set parity.
SerialBuilder & use_independent_context(bool use_independent=true)
Use independent IoContext.
SerialBuilder & stop_bits(int bits)
Set number of stop bits.
SerialBuilder & retry_interval(uint32_t milliseconds)
Set reconnection retry interval.
SerialBuilder & data_bits(int bits)
Set number of data bits.
SerialBuilder & flow_control(const std::string &flow)
Set flow control.
SerialBuilder & on_connect(std::function< void(const wrapper::ConnectionContext &)> handler) override
Set connection handler callback.
SerialBuilder & on_error(std::function< void(const wrapper::ErrorContext &)> handler) override
Set error handler callback.
SerialBuilder & auto_manage(bool auto_manage=true) override
Enable auto-manage functionality.
SerialBuilder(const std::string &device, uint32_t baud_rate)
std::unique_ptr< wrapper::Serial > build() override
Build and return the configured product.
Context for connection/disconnection events.
Context for error events.
Context for data/message related events.
builder::SerialBuilder serial(const std::string &device, uint32_t baud_rate)
Create a Serial port builder.