Goby3  3.1.4
2024.02.22
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

 abc
 
 benthos
 
 directip
 
 iridium
 
 micromodem
 
 popoto
 
 protobuf
 
 udp
 
 udp_multicast
 

Classes

class  ABCDriver
 provides an API to the imaginary ABC modem (as an example how to write drivers) More...
 
class  BenthosATM900Driver
 
class  DCCLCodec
 
struct  DCCLRepeatedTypedFieldCodec
 
struct  DCCLTypedFieldCodec
 
struct  DCCLTypedFixedFieldCodec
 
class  DefaultNumericFieldCodec
 
class  DynamicBuffer
 Represents a time-dependent priority queue for several groups of messages (multiple DynamicSubBuffers) 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  IPGatewayEmptyIdentifierCodec
 
class  IPv4AddressCodec
 
class  IPv4FlagsFragOffsetCodec
 
class  IridiumDriver
 
class  IridiumHeaderIdentifierCodec
 
class  IridiumShoreDriver
 
class  MACManager
 provides an API to the goby-acomms MAC library. MACManager is essentially a std::list<protobuf::ModemTransmission> plus a timer. More...
 
class  MMDriver
 provides an API to the WHOI Micro-Modem driver More...
 
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  NetShortCodec
 
class  NoOpIdentifierCodec
 
class  OnCallBase
 
class  PopotoDriver
 
class  Queue
 
struct  QueuedMessage
 
class  QueueException
 Exception class for libdccl. More...
 
class  QueueManager
 provides an API to the goby-acomms Queuing Library. More...
 
class  RouteManager
 
class  RUDICSConnection
 
class  RudicsPacketException
 
class  RUDICSServer
 
class  SBDPacketException
 
class  StaticCodec
 
class  TimeCodec
 
class  TimeCodec< dccl::int64 >
 
class  TimeCodec< dccl::uint64 >
 
class  TimeCodec< double >
 
class  UDPDriver
 
class  UDPMulticastDriver
 

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  { 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 More...
 
void bind (MACManager &mac, ModemDriverBase &driver)
 binds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC More...
 
void bind (QueueManager &queue_manager, RouteManager &route_manager)
 creates bindings for a RouteManager to control a particular queue (QueueManager) More...
 
void bind (ModemDriverBase &driver, QueueManager &queue_manager, MACManager &mac)
 bind all three (shortcut to calling the other three bind functions) More...
 
void unbind (ModemDriverBase &driver, QueueManager &queue_manager)
 unbinds the driver link-layer callbacks to the QueueManager More...
 
void unbind (MACManager &mac, ModemDriverBase &driver)
 unbinds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC More...
 
void unbind (QueueManager &queue_manager, RouteManager &route_manager)
 creates unbindings for a RouteManager to control a particular queue (QueueManager) More...
 
void unbind (ModemDriverBase &driver, QueueManager &queue_manager, MACManager &mac)
 unbind all three (shortcut to calling the other three unbind functions) More...
 
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) More...
 
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 More...
 
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 More...
 
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 More...
 
template<typename Signal , typename Slot >
void disconnect (Signal *signal, Slot slot)
 disconnect a signal to a slot (e.g. function pointer) More...
 
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 More...
 
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 More...
 
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 More...
 
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) More...
 

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. More...
 
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 More...
 
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) More...
 
constexpr int QUERY_SOURCE_ID {-1}
 similar to QUERY_DESTINATION_ID but for the source modem id More...
 
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 = typedef dccl::Bitset

Definition at line 126 of file dccl.h.

◆ DCCLDefaultBoolCodec

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

Definition at line 78 of file dccl.h.

◆ DCCLDefaultBytesCodec

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

Definition at line 80 of file dccl.h.

◆ DCCLDefaultEnumCodec

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

Definition at line 81 of file dccl.h.

◆ DCCLDefaultIdentifierCodec

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

Definition at line 72 of file dccl.h.

◆ DCCLDefaultMessageCodec

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

Definition at line 102 of file dccl.h.

◆ DCCLDefaultStringCodec

using goby::acomms::DCCLDefaultStringCodec = typedef 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 = typedef dccl::FieldCodecBase

Definition at line 104 of file dccl.h.

◆ DCCLFieldCodecManager

typedef dccl::FieldCodecManager goby::acomms::DCCLFieldCodecManager

Definition at line 124 of file dccl.h.

◆ DCCLNullValueException

using goby::acomms::DCCLNullValueException = typedef 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 = typedef 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.

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::*)(A1)  mem_func 
)

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::*)(A1, A2)  mem_func 
)

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::*)(A1, A2, A3)  mem_func 
)

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 59 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::*)(A1)  mem_func 
)

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::*)(A1, A2)  mem_func 
)

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::*)(A1, A2, A3)  mem_func 
)

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_

◆ BITS_IN_BYTE

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

Definition at line 38 of file acomms_constants.h.

◆ BROADCAST_ID

constexpr 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_

◆ IRIDIUM_SBD_CRC_BYTE_SIZE

constexpr 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

constexpr 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

constexpr 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

constexpr 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.