74class UDPDriver :
public goby::acomms::ModemDriverBase
80 void startup(
const goby::acomms::protobuf::DriverConfig& cfg)
override;
89 bool clear_existing =
false);
91 void start_send(
const goby::acomms::protobuf::ModemTransmission& msg);
92 void send_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
94 void receive_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
95 void receive_message(
const goby::acomms::protobuf::ModemTransmission& m);
103 goby::acomms::protobuf::DriverConfig driver_cfg_;
104 boost::asio::io_context io_context_;
105 std::unique_ptr<boost::asio::ip::udp::socket> socket_;
107 std::multimap<int, boost::asio::ip::udp::endpoint> receivers_;
108 boost::asio::ip::udp::endpoint sender_;
111 static constexpr size_t UDP_MAX_PACKET_SIZE = 65507;
113 std::array<char, UDP_MAX_PACKET_SIZE> receive_buffer_;
116 std::set<unsigned> application_ack_ids_;
118 std::uint32_t next_frame_{0};