25#ifndef GOBY_ACOMMS_MODEMDRIVER_UDP_MULTICAST_DRIVER_H
26#define GOBY_ACOMMS_MODEMDRIVER_UDP_MULTICAST_DRIVER_H
29#include <boost/asio/ip/udp.hpp>
53class ModemTransmission;
71 void send_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
73 void receive_complete(
const boost::system::error_code& error, std::size_t bytes_transferred);
84 boost::asio::ip::udp::socket socket_{io_context_};
85 boost::asio::ip::udp::endpoint receiver_;
86 boost::asio::ip::udp::endpoint sender_;
89 static constexpr size_t UDP_MAX_PACKET_SIZE = 65507;
91 std::array<char, UDP_MAX_PACKET_SIZE> receive_buffer_;
92 std::uint32_t next_frame_{0};
94 std::map<int, int> rate_to_bytes_;
provides an abstract base class for acoustic modem drivers. This is subclassed by the various drivers...
~UDPMulticastDriver() override
void startup(const protobuf::DriverConfig &cfg) override
Starts the modem driver. Must be called before poll().
void report(protobuf::ModemReport *report) override
Returns report including modem availability and signal quality (if known)
void handle_initiate_transmission(const protobuf::ModemTransmission &m) override
Virtual initiate_transmission method. Typically connected to MACManager::signal_initiate_transmission...
void shutdown() override
Shuts down the modem driver.
void do_work() override
Allows the modem driver to do its work.
_proto_TypeTraits::Singular::ConstType GetExtension(const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< DriverConfig, _proto_TypeTraits, _field_type, _is_packed > &id) const
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::goby::acomms::protobuf::DriverConfig, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::acomms::udp_multicast::protobuf::Config >, 11, false > config
boost::units::make_system< boost::units::angle::revolution_base_unit, boost::units::metric::minute_base_unit >::type system
The global namespace for the Goby project.