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>
53 class ModemTransmission;
62 void startup(
const protobuf::DriverConfig& cfg)
override;
70 void start_send(
const protobuf::ModemTransmission& m);
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);
74 void receive_message(
const protobuf::ModemTransmission& m);
76 const udp_multicast::protobuf::Config& multicast_driver_cfg()
const
82 protobuf::DriverConfig driver_cfg_;
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.
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.