25#ifndef GOBY_ACOMMS_MODEMDRIVER_UDP_DRIVER_H
26#define GOBY_ACOMMS_MODEMDRIVER_UDP_DRIVER_H
35#include <boost/asio/ip/udp.hpp>
55class ModemTransmission;
73 void send_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
75 void receive_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
81 std::unique_ptr<boost::asio::ip::udp::socket> socket_;
83 std::multimap<int, boost::asio::ip::udp::endpoint> receivers_;
84 boost::asio::ip::udp::endpoint sender_;
87 static constexpr size_t UDP_MAX_PACKET_SIZE = 65507;
89 std::array<char, UDP_MAX_PACKET_SIZE> receive_buffer_;
92 std::set<unsigned> application_ack_ids_;
94 std::uint32_t next_frame_{0};
provides an abstract base class for acoustic modem drivers. This is subclassed by the various drivers...
void startup(const protobuf::DriverConfig &cfg) override
Starts the modem driver. Must be called before poll().
void do_work() override
Allows the modem driver to do its work.
void handle_initiate_transmission(const protobuf::ModemTransmission &m) override
Virtual initiate_transmission method. Typically connected to MACManager::signal_initiate_transmission...
void report(protobuf::ModemReport *report) override
Returns report including modem availability and signal quality (if known)
void shutdown() override
Shuts down the modem driver.
The global namespace for the Goby project.
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::PROTOBUF_NAMESPACE_ID::MessageOptions, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::GobyMessageOptions >, 11, false > msg