24#ifndef GOBY_ACOMMS_MODEMDRIVER_IRIDIUM_DRIVER_COMMON_H
25#define GOBY_ACOMMS_MODEMDRIVER_IRIDIUM_DRIVER_COMMON_H
27#include <dccl/codec.h>
28#include <dccl/field_codec_fixed.h>
29#include <dccl/field_codec_manager.h>
57 : last_tx_time_(time::SystemClock::now().time_since_epoch() /
std::chrono::seconds(1)),
84 total_bytes_sent_ += i;
92 int total_bytes_sent_;
99 dccl::Bitset encode() {
return dccl::Bitset(); }
100 dccl::Bitset encode(
const std::uint32_t& wire_value) {
return dccl::Bitset(); }
101 std::uint32_t decode(dccl::Bitset* bits) {
return 0; }
102 virtual unsigned size() {
return 0; }
109 auto iridium_id_name =
"iridium_header_id";
110#ifdef DCCL_VERSION_4_1_OR_NEWER
113 dccl::FieldCodecManager::add<IridiumHeaderIdentifierCodec>(iridium_id_name);
169 goby::Exception(
"Must use device = DEVICE_VOICE_ENABLED_ISU for RUDICS support."));
177 .GetExtension(dccl::msg)
182 const auto overhead_bytes = head_bytes + crc_bytes;
208 default:
throw(
goby::Exception(
"Invalid direction for the Iridium driver"));
213 throw(
goby::Exception(
"Invalid rate " + std::to_string(rate) +
" for the Iridium driver"));
simple exception class for goby applications
int total_bytes_sent() const
void set_last_tx_time(double d)
double last_rx_tx_time() const
void set_last_bytes_sent(int i)
int last_bytes_sent() const
void set_bye_received(bool b)
double last_tx_time() const
void set_bye_sent(bool b)
double last_rx_time() const
bool bye_received() const
void set_last_rx_time(double d)
int acked_frame_size() const
bool ack_requested() const
uint32_t frame_start() const
void add_acked_frame(int32_t value)
void set_src(int32_t value)
void set_rate(int32_t value)
bool has_ack_requested() const
void set_frame_start(uint32_t value)
bool has_frame_start() const
void set_type(::goby::acomms::protobuf::ModemTransmission_TransmissionType value)
const std::string & frame(int index) const
::goby::acomms::protobuf::ModemTransmission_TransmissionType type() const
std::string * add_frame()
void set_dest(int32_t value)
int32_t acked_frame(int index) const
void set_ack_requested(bool value)
@ DEVICE_VOICE_ENABLED_ISU
@ DEVICE_IRIDIUM_9602_9603
constexpr int IRIDIUM_SBD_CRC_BYTE_SIZE
void serialize_iridium_modem_message(std::string *out, const goby::acomms::protobuf::ModemTransmission &in)
void parse_iridium_modem_message(std::string in, goby::acomms::protobuf::ModemTransmission *out)
@ DIRECTION_MOBILE_TERMINATED
@ DIRECTION_MOBILE_ORIGINATED
std::shared_ptr< dccl::Codec > iridium_header_dccl_
unsigned iridium_rate_to_bytes(int rate, iridium::protobuf::DeviceType device, Direction direction)
The global namespace for the Goby project.