31 explicit ble_stream(
const std::shared_ptr<boost::asio::io_context> &io_context);
34 std::function<
void(
const boost::system::error_code &, std::size_t)> handler) -> void;
37 const std::function<
void(
const boost::system::error_code &, std::size_t)> &handler) -> void;
39 auto async_read(
const boost::asio::mutable_buffer &buffer,
40 const std::function<
void(
const boost::system::error_code &, std::size_t)> &handler) -> void;
42 auto async_close(std::function<
void(
const boost::system::error_code &, std::size_t)> handler) -> void;
44 [[nodiscard]]
auto get_mtu() const -> std::
size_t;
47 std::shared_ptr<boost::asio::io_context> io_context_;
48 boost::asio::strand<boost::asio::io_context::executor_type> strand_;
49 std::
size_t mtu_{ 20 };
50 bool connected_{
false };
52 std::optional<SimpleBLE::Adapter> adapter_;
53 std::optional<SimpleBLE::Peripheral> peripheral_;
55 std::string tx_characteristic_uuid_;
56 std::string rx_characteristic_uuid_;
57 std::string service_uuid_;
59 std::vector<std::byte> read_buffer_;
60 std::function<void(
const boost::system::error_code &, std::size_t)> pending_read_handler_;
62 static auto find_adapter() -> std::optional<SimpleBLE::Adapter>;
63 auto find_peripheral(
const std::string &address) -> std::optional<SimpleBLE::Peripheral>;
64 auto setup_notification_callback() -> void;