Goby3 3.5.1
2026.06.04
Loading...
Searching...
No Matches
goby::acomms Namespace Reference

Classes and functions pertaining to acoustic communications (acomms) as well as related marine relevant communications links (such as satellite). More...

Namespaces

namespace  protobuf
namespace  benthos
namespace  iridium
namespace  directip
namespace  abc
namespace  janus
namespace  micromodem
namespace  popoto
namespace  store_server
namespace  udp
namespace  udp_multicast

Classes

class  MACManager
 provides an API to the goby-acomms MAC library. MACManager is essentially a std::list<protobuf::ModemTransmission> plus a timer. More...
class  DynamicBufferNoDataException
class  DynamicSubBuffer
 Represents a time-dependent priority queue for a single group of messages (e.g. for a single DCCL ID). More...
class  DynamicBuffer
 Represents a time-dependent priority queue for several groups of messages (multiple DynamicSubBuffers). More...
class  DefaultNumericFieldCodec
class  TimeCodec
class  TimeCodec< dccl::uint64 >
class  TimeCodec< dccl::int64 >
class  TimeCodec< double >
class  StaticCodec
struct  DCCLTypedFieldCodec
struct  DCCLTypedFixedFieldCodec
struct  DCCLRepeatedTypedFieldCodec
class  DCCLCodec
class  IPv4AddressCodec
class  NetShortCodec
class  IPv4FlagsFragOffsetCodec
class  IPGatewayEmptyIdentifierCodec
class  ABCDriver
 provides an API to the imaginary ABC modem (as an example how to write drivers) More...
class  BenthosATM900Driver
class  NoOpIdentifierCodec
class  ModemDriverBase
 provides an abstract base class for acoustic modem drivers. This is subclassed by the various drivers for different manufacturers' modems. More...
class  ModemDriverException
class  IridiumDriver
class  OnCallBase
class  IridiumHeaderIdentifierCodec
class  RudicsPacketException
class  SBDPacketException
class  IridiumShoreDriver
class  RUDICSConnection
class  RUDICSServer
class  JanusDriver
 provides an API to the imaginary ABC modem (as an example how to write drivers) More...
class  MMDriver
 provides an API to the WHOI Micro-Modem driver More...
class  PopotoDriver
class  StoreServerDriver
class  UDPDriver
class  UDPMulticastDriver
struct  QueuedMessage
class  Queue
class  QueueException
 Exception class for libdccl. More...
class  QueueManager
 provides an API to the goby-acomms Queuing Library. More...
class  RouteManager

Typedefs

typedef dccl::Exception DCCLException
using DCCLNullValueException = dccl::NullValueException
using DCCLDefaultIdentifierCodec = dccl::DefaultIdentifierCodec
using DCCLDefaultBoolCodec = dccl::v2::DefaultBoolCodec
using DCCLDefaultStringCodec = dccl::v2::DefaultStringCodec
using DCCLDefaultBytesCodec = dccl::v2::DefaultBytesCodec
using DCCLDefaultEnumCodec = dccl::v2::DefaultEnumCodec
using DCCLDefaultMessageCodec = dccl::v2::DefaultMessageCodec
using DCCLFieldCodecBase = dccl::FieldCodecBase
using DCCLFieldCodecManager = dccl::FieldCodecManager
using Bitset = dccl::Bitset
typedef std::list< QueuedMessage >::iterator messages_it
using waiting_for_ack_it = std::multimap<unsigned int, messages_it>::iterator

Enumerations

enum  GobyHeaderBits { GOBY_DATA_TYPE = 1 , GOBY_ACK_TYPE = 2 , GOBY_HEADER_TYPE = 0 , GOBY_HEADER_ACK_REQUEST = 1 }
enum  { RATE_RUDICS = 1 , RATE_SBD = 0 }
enum  Direction { DIRECTION_MOBILE_ORIGINATED , DIRECTION_MOBILE_TERMINATED }

Functions

void bind (ModemDriverBase &driver, QueueManager &queue_manager)
 binds the driver link-layer callbacks to the QueueManager
void bind (MACManager &mac, ModemDriverBase &driver)
 binds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC
void bind (QueueManager &queue_manager, RouteManager &route_manager)
 creates bindings for a RouteManager to control a particular queue (QueueManager)
void bind (ModemDriverBase &driver, QueueManager &queue_manager, MACManager &mac)
 bind all three (shortcut to calling the other three bind functions)
void unbind (ModemDriverBase &driver, QueueManager &queue_manager)
 unbinds the driver link-layer callbacks to the QueueManager
void unbind (MACManager &mac, ModemDriverBase &driver)
 unbinds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC
void unbind (QueueManager &queue_manager, RouteManager &route_manager)
 creates unbindings for a RouteManager to control a particular queue (QueueManager)
void unbind (ModemDriverBase &driver, QueueManager &queue_manager, MACManager &mac)
 unbind all three (shortcut to calling the other three unbind functions)
template<typename Container>
size_t data_size (const Container &c)
template<typename Signal, typename Slot>
void connect (Signal *signal, Slot slot)
 connect a signal to a slot (e.g. function pointer)
template<typename Signal, typename Obj, typename A1>
void connect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1))
 connect a signal to a member function with one argument
template<typename Signal, typename Obj, typename A1, typename A2>
void connect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1, A2))
 connect a signal to a member function with two arguments
template<typename Signal, typename Obj, typename A1, typename A2, typename A3>
void connect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1, A2, A3))
 connect a signal to a member function with three arguments
template<typename Signal, typename Slot>
void disconnect (Signal *signal, Slot slot)
 disconnect a signal to a slot (e.g. function pointer)
template<typename Signal, typename Obj, typename A1>
void disconnect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1))
 disconnect a signal to a member function with one argument
template<typename Signal, typename Obj, typename A1, typename A2>
void disconnect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1, A2))
 disconnect a signal to a member function with two arguments
template<typename Signal, typename Obj, typename A1, typename A2, typename A3>
void disconnect (Signal *signal, Obj *obj, void(Obj::*mem_func)(A1, A2, A3))
 disconnect a signal to a member function with three arguments
std::ostream & operator<< (std::ostream &os, const DCCLCodec &codec)
uint16_t net_checksum (const std::string &data)
void init_benthos_dccl ()
void serialize_benthos_modem_message (std::string *out, const goby::acomms::protobuf::ModemTransmission &in)
void parse_benthos_modem_message (std::string in, goby::acomms::protobuf::ModemTransmission *out)
void init_iridium_dccl ()
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)
unsigned iridium_rate_to_bytes (int rate, iridium::protobuf::DeviceType device, Direction direction)
void serialize_rudics_packet (std::string bytes, std::string *rudics_pkt, const std::string &reserved=std::string("\0\r\n", 3)+std::string(1, 0xff), bool include_crc=true)
void parse_rudics_packet (std::string *bytes, std::string rudics_pkt, const std::string &reserved=std::string("\0\r\n", 3)+std::string(1, 0xff), bool include_crc=true)
std::string uint32_to_byte_string (uint32_t i)
uint32_t byte_string_to_uint32 (const std::string &s)
void serialize_sbd_packet (std::string bytes, std::string *sbd_pkt, bool include_crc=true)
void parse_sbd_packet (std::string *bytes, std::string sbd_pkt, bool include_crc=true)
std::ostream & operator<< (std::ostream &os, const Queue &oq)
std::ostream & operator<< (std::ostream &out, const QueueManager &d)
 outputs information about all available messages (same as info_all)
Acoustic MAC Library callback function type definitions
std::ostream & operator<< (std::ostream &os, const MACManager &mac)

Variables

constexpr unsigned BITS_IN_BYTE {8}
constexpr unsigned NIBS_IN_BYTE {2}
 One hex char is a nibble (4 bits), two nibbles per byte.
constexpr int BROADCAST_ID {0}
 special modem id for the broadcast destination - no one is assigned this address. Analogous to internet protocol address 192.168.1.255 on a 192.168.1.0/24 subnet
constexpr int QUERY_DESTINATION_ID {-1}
 special modem id used internally to goby-acomms for indicating that the MAC layer (amac) is agnostic to the next destination. The next destination is thus set by the data provider (typically QueueManager or DynamicBuffer)
constexpr int QUERY_SOURCE_ID {-1}
 similar to QUERY_DESTINATION_ID but for the source modem id
std::shared_ptr< dccl::Codec > benthos_header_dccl_
std::shared_ptr< dccl::Codec > iridium_header_dccl_
constexpr int IRIDIUM_SBD_CRC_BYTE_SIZE = 4
const unsigned MULTIMESSAGE_MASK = 1 << 7
const unsigned BROADCAST_MASK = 1 << 6
const unsigned VAR_ID_MASK = 0xFF ^ MULTIMESSAGE_MASK ^ BROADCAST_MASK
const unsigned USER_FRAME_NEXT_SIZE_BYTES = 1
const boost::posix_time::time_duration ON_DEMAND_SKEW = boost::posix_time::seconds(1)

Detailed Description

Classes and functions pertaining to acoustic communications (acomms) as well as related marine relevant communications links (such as satellite).

Typedef Documentation

◆ Bitset

using goby::acomms::Bitset = dccl::Bitset

Definition at line 126 of file dccl.h.

◆ DCCLDefaultBoolCodec

using goby::acomms::DCCLDefaultBoolCodec = dccl::v2::DefaultBoolCodec

Definition at line 78 of file dccl.h.

◆ DCCLDefaultBytesCodec

using goby::acomms::DCCLDefaultBytesCodec = dccl::v2::DefaultBytesCodec

Definition at line 80 of file dccl.h.

◆ DCCLDefaultEnumCodec

using goby::acomms::DCCLDefaultEnumCodec = dccl::v2::DefaultEnumCodec

Definition at line 81 of file dccl.h.

◆ DCCLDefaultIdentifierCodec

using goby::acomms::DCCLDefaultIdentifierCodec = dccl::DefaultIdentifierCodec

Definition at line 72 of file dccl.h.

◆ DCCLDefaultMessageCodec

using goby::acomms::DCCLDefaultMessageCodec = dccl::v2::DefaultMessageCodec

Definition at line 102 of file dccl.h.

◆ DCCLDefaultStringCodec

using goby::acomms::DCCLDefaultStringCodec = dccl::v2::DefaultStringCodec

Definition at line 79 of file dccl.h.

◆ DCCLException

typedef dccl::Exception goby::acomms::DCCLException

Definition at line 69 of file dccl.h.

◆ DCCLFieldCodecBase

using goby::acomms::DCCLFieldCodecBase = dccl::FieldCodecBase

Definition at line 104 of file dccl.h.

◆ DCCLFieldCodecManager

using goby::acomms::DCCLFieldCodecManager = dccl::FieldCodecManager

Definition at line 124 of file dccl.h.

◆ DCCLNullValueException

using goby::acomms::DCCLNullValueException = dccl::NullValueException

Definition at line 70 of file dccl.h.

◆ messages_it

typedef std::list<QueuedMessage>::iterator goby::acomms::messages_it

Definition at line 70 of file queue.h.

◆ waiting_for_ack_it

using goby::acomms::waiting_for_ack_it = std::multimap<unsigned int, messages_it>::iterator

Definition at line 71 of file queue.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
RATE_RUDICS 
RATE_SBD 

Definition at line 41 of file iridium_driver_common.h.

◆ Direction

Enumerator
DIRECTION_MOBILE_ORIGINATED 
DIRECTION_MOBILE_TERMINATED 

Definition at line 47 of file iridium_driver_common.h.

◆ GobyHeaderBits

Enumerator
GOBY_DATA_TYPE 
GOBY_ACK_TYPE 
GOBY_HEADER_TYPE 
GOBY_HEADER_ACK_REQUEST 

Definition at line 41 of file driver_helpers.h.

Function Documentation

◆ bind() [1/4]

void goby::acomms::bind ( MACManager & mac,
ModemDriverBase & driver )
inline

binds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC

Definition at line 55 of file bind.h.

◆ bind() [2/4]

void goby::acomms::bind ( ModemDriverBase & driver,
QueueManager & queue_manager )
inline

binds the driver link-layer callbacks to the QueueManager

Definition at line 45 of file bind.h.

◆ bind() [3/4]

void goby::acomms::bind ( ModemDriverBase & driver,
QueueManager & queue_manager,
MACManager & mac )
inline

bind all three (shortcut to calling the other three bind functions)

Definition at line 71 of file bind.h.

◆ bind() [4/4]

void goby::acomms::bind ( QueueManager & queue_manager,
RouteManager & route_manager )
inline

creates bindings for a RouteManager to control a particular queue (QueueManager)

Definition at line 62 of file bind.h.

◆ byte_string_to_uint32()

uint32_t goby::acomms::byte_string_to_uint32 ( const std::string & s)

◆ connect() [1/4]

template<typename Signal, typename Obj, typename A1>
void goby::acomms::connect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1) )

connect a signal to a member function with one argument

Definition at line 45 of file connect.h.

◆ connect() [2/4]

template<typename Signal, typename Obj, typename A1, typename A2>
void goby::acomms::connect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1, A2) )

connect a signal to a member function with two arguments

Definition at line 52 of file connect.h.

◆ connect() [3/4]

template<typename Signal, typename Obj, typename A1, typename A2, typename A3>
void goby::acomms::connect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1, A2, A3) )

connect a signal to a member function with three arguments

Definition at line 59 of file connect.h.

◆ connect() [4/4]

template<typename Signal, typename Slot>
void goby::acomms::connect ( Signal * signal,
Slot slot )

connect a signal to a slot (e.g. function pointer)

Definition at line 38 of file connect.h.

◆ data_size()

template<typename Container>
size_t goby::acomms::data_size ( const Container & c)

Definition at line 62 of file dynamic_buffer.h.

◆ disconnect() [1/4]

template<typename Signal, typename Obj, typename A1>
void goby::acomms::disconnect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1) )

disconnect a signal to a member function with one argument

Definition at line 72 of file connect.h.

◆ disconnect() [2/4]

template<typename Signal, typename Obj, typename A1, typename A2>
void goby::acomms::disconnect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1, A2) )

disconnect a signal to a member function with two arguments

Definition at line 79 of file connect.h.

◆ disconnect() [3/4]

template<typename Signal, typename Obj, typename A1, typename A2, typename A3>
void goby::acomms::disconnect ( Signal * signal,
Obj * obj,
void(Obj::* mem_func )(A1, A2, A3) )

disconnect a signal to a member function with three arguments

Definition at line 86 of file connect.h.

◆ disconnect() [4/4]

template<typename Signal, typename Slot>
void goby::acomms::disconnect ( Signal * signal,
Slot slot )

disconnect a signal to a slot (e.g. function pointer)

Definition at line 65 of file connect.h.

◆ init_benthos_dccl()

void goby::acomms::init_benthos_dccl ( )
inline

Definition at line 97 of file benthos_atm900_driver.h.

◆ init_iridium_dccl()

void goby::acomms::init_iridium_dccl ( )
inline

Definition at line 107 of file iridium_driver_common.h.

◆ iridium_rate_to_bytes()

unsigned goby::acomms::iridium_rate_to_bytes ( int rate,
iridium::protobuf::DeviceType device,
Direction direction )
inline

Definition at line 162 of file iridium_driver_common.h.

◆ net_checksum()

uint16_t goby::acomms::net_checksum ( const std::string & data)

◆ operator<<() [1/4]

std::ostream & goby::acomms::operator<< ( std::ostream & os,
const DCCLCodec & codec )
inline

Definition at line 371 of file dccl.h.

◆ operator<<() [2/4]

std::ostream & goby::acomms::operator<< ( std::ostream & os,
const MACManager & mac )

◆ operator<<() [3/4]

std::ostream & goby::acomms::operator<< ( std::ostream & os,
const Queue & oq )

◆ operator<<() [4/4]

std::ostream & goby::acomms::operator<< ( std::ostream & out,
const QueueManager & d )

outputs information about all available messages (same as info_all)

◆ parse_benthos_modem_message()

void goby::acomms::parse_benthos_modem_message ( std::string in,
goby::acomms::protobuf::ModemTransmission * out )
inline

Definition at line 135 of file benthos_atm900_driver.h.

◆ parse_iridium_modem_message()

void goby::acomms::parse_iridium_modem_message ( std::string in,
goby::acomms::protobuf::ModemTransmission * out )
inline

Definition at line 140 of file iridium_driver_common.h.

◆ parse_rudics_packet()

void goby::acomms::parse_rudics_packet ( std::string * bytes,
std::string rudics_pkt,
const std::string & reserved = std::string("\0\r\n", 3)+std::string(1, 0xff),
bool include_crc = true )

◆ parse_sbd_packet()

void goby::acomms::parse_sbd_packet ( std::string * bytes,
std::string sbd_pkt,
bool include_crc = true )

◆ serialize_benthos_modem_message()

void goby::acomms::serialize_benthos_modem_message ( std::string * out,
const goby::acomms::protobuf::ModemTransmission & in )
inline

Definition at line 110 of file benthos_atm900_driver.h.

◆ serialize_iridium_modem_message()

void goby::acomms::serialize_iridium_modem_message ( std::string * out,
const goby::acomms::protobuf::ModemTransmission & in )
inline

Definition at line 119 of file iridium_driver_common.h.

◆ serialize_rudics_packet()

void goby::acomms::serialize_rudics_packet ( std::string bytes,
std::string * rudics_pkt,
const std::string & reserved = std::string("\0\r\n", 3)+std::string(1, 0xff),
bool include_crc = true )

◆ serialize_sbd_packet()

void goby::acomms::serialize_sbd_packet ( std::string bytes,
std::string * sbd_pkt,
bool include_crc = true )

◆ uint32_to_byte_string()

std::string goby::acomms::uint32_to_byte_string ( uint32_t i)

◆ unbind() [1/4]

void goby::acomms::unbind ( MACManager & mac,
ModemDriverBase & driver )
inline

unbinds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC

Definition at line 88 of file bind.h.

◆ unbind() [2/4]

void goby::acomms::unbind ( ModemDriverBase & driver,
QueueManager & queue_manager )
inline

unbinds the driver link-layer callbacks to the QueueManager

Definition at line 78 of file bind.h.

◆ unbind() [3/4]

void goby::acomms::unbind ( ModemDriverBase & driver,
QueueManager & queue_manager,
MACManager & mac )
inline

unbind all three (shortcut to calling the other three unbind functions)

Definition at line 105 of file bind.h.

◆ unbind() [4/4]

void goby::acomms::unbind ( QueueManager & queue_manager,
RouteManager & route_manager )
inline

creates unbindings for a RouteManager to control a particular queue (QueueManager)

Definition at line 95 of file bind.h.

Variable Documentation

◆ benthos_header_dccl_

std::shared_ptr<dccl::Codec> goby::acomms::benthos_header_dccl_
extern

◆ BITS_IN_BYTE

unsigned goby::acomms::BITS_IN_BYTE {8}
constexpr

Definition at line 38 of file acomms_constants.h.

◆ BROADCAST_ID

int goby::acomms::BROADCAST_ID {0}
constexpr

special modem id for the broadcast destination - no one is assigned this address. Analogous to internet protocol address 192.168.1.255 on a 192.168.1.0/24 subnet

Definition at line 43 of file acomms_constants.h.

◆ BROADCAST_MASK

const unsigned goby::acomms::BROADCAST_MASK = 1 << 6

Definition at line 36 of file queue_constants.h.

◆ iridium_header_dccl_

std::shared_ptr<dccl::Codec> goby::acomms::iridium_header_dccl_
extern

◆ IRIDIUM_SBD_CRC_BYTE_SIZE

int goby::acomms::IRIDIUM_SBD_CRC_BYTE_SIZE = 4
constexpr

Definition at line 45 of file iridium_sbd_packet.h.

◆ MULTIMESSAGE_MASK

const unsigned goby::acomms::MULTIMESSAGE_MASK = 1 << 7

Definition at line 35 of file queue_constants.h.

◆ NIBS_IN_BYTE

unsigned goby::acomms::NIBS_IN_BYTE {2}
constexpr

One hex char is a nibble (4 bits), two nibbles per byte.

Definition at line 40 of file acomms_constants.h.

◆ ON_DEMAND_SKEW

const boost::posix_time::time_duration goby::acomms::ON_DEMAND_SKEW = boost::posix_time::seconds(1)

Definition at line 43 of file queue_constants.h.

◆ QUERY_DESTINATION_ID

int goby::acomms::QUERY_DESTINATION_ID {-1}
constexpr

special modem id used internally to goby-acomms for indicating that the MAC layer (amac) is agnostic to the next destination. The next destination is thus set by the data provider (typically QueueManager or DynamicBuffer)

Definition at line 46 of file acomms_constants.h.

◆ QUERY_SOURCE_ID

int goby::acomms::QUERY_SOURCE_ID {-1}
constexpr

similar to QUERY_DESTINATION_ID but for the source modem id

Definition at line 49 of file acomms_constants.h.

◆ USER_FRAME_NEXT_SIZE_BYTES

const unsigned goby::acomms::USER_FRAME_NEXT_SIZE_BYTES = 1

Definition at line 40 of file queue_constants.h.

◆ VAR_ID_MASK

const unsigned goby::acomms::VAR_ID_MASK = 0xFF ^ MULTIMESSAGE_MASK ^ BROADCAST_MASK

Definition at line 37 of file queue_constants.h.