25#ifndef GOBY_ACOMMS_MODEMDRIVER_JANUS_DRIVER_H
26#define GOBY_ACOMMS_MODEMDRIVER_JANUS_DRIVER_H
40#include <janus/janus.h>
41#include <janus/defaults.h>
42#include <janus/simple_tx.h>
43#include <janus/simple_rx.h>
45#include <janus/dump.h>
46#include <janus/parameters.h>
47#include <janus/utils/go_cfar.h>
68class ModemTransmission;
90 void send_ack(
unsigned int src,
unsigned int dest,
unsigned int frame_number);
136 protobuf::DriverConfig driver_cfg_;
provides an API to the imaginary ABC modem (as an example how to write drivers)
janus_rx_state_t state_rx
janus_parameters_t params_rx
void send_janus_packet(const protobuf::ModemTransmission &msg, std::vector< std::uint8_t > payload, bool ack=false)
void send_ack(unsigned int src, unsigned int dest, unsigned int frame_number)
unsigned int get_frame_num(std::string cargo)
protobuf::ModemTransmission modem_msg
janus_simple_tx_t simple_tx
std::uint8_t CreateGobyHeader(const protobuf::ModemTransmission &m)
janus_simple_tx_t init_janus_tx()
janus_simple_rx_t init_janus_rx()
static constexpr int DEFAULT_MTU_BYTES
std::uint8_t get_goby_header(const protobuf::ModemTransmission &msg)
void DecodeGobyHeader(std::uint8_t header, protobuf::ModemTransmission &m)
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.
unsigned queried_detection_time
janus_simple_rx_t simple_rx
unsigned int tx_application_type
janus_parameters_t get_janus_params(const janus::protobuf::Config &config)
unsigned int rx_application_type
void pad_message(std::vector< uint8_t > &vec)
void startup(const protobuf::DriverConfig &cfg) override
Starts the modem driver. Must be called before poll().
std::uint32_t next_frame_
void do_work() override
Allows the modem driver to do its work.
janus_parameters_t params_tx
void append_crc16(std::vector< std::uint8_t > &vec)
void send_janus_packet_thread(const protobuf::ModemTransmission &msg, std::vector< std::uint8_t > payload, bool ack)
void handle_ack_transmission(const protobuf::ModemTransmission &m)
janus_carrier_sensing_t carrier_sensing
janus_rx_msg_pkt parse_janus_packet(const janus_packet_t pkt, bool verbosity)
void to_modem_transmission(janus_rx_msg_pkt packet, protobuf::ModemTransmission &msg)
provides an abstract base class for acoustic modem drivers. This is subclassed by the various drivers...
_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::janus::protobuf::Config >, 11, false > rx_config
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::goby::acomms::protobuf::DriverConfig, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::acomms::janus::protobuf::Config >, 11, false > tx_config
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