Home
Goby v2 - gobysoft
Contents
1. goby acomms user 7 gt file executable eee y DCCL Protobuf proto Acomms Application e Y g F fw NS a oe is Lo LAN PA goby acomms PEN Y Ne Ei S4 al lib A y ES library da El S deci Oo DCCLCodec ce y voy Nx gt iy ou E X a I E 7 1 l Sd en I a 1 library QueueManager queue y Pa P ra wor ES A 7 library a o MACManager 7 A amac Y at i gra er ee MMDriver QA library DriverBase xi modemdriver Ag Modem H S N ardware NZ executable Modem Firmware Figure 1 Basic overview of goby acomms libraries For a more detailed model see the UML models section 2 2 dccl Encoding and decoding The Dynamic Compact Control Language DCCL provides a structure for defining messages to be sent through an acoustic modem The messages are configured in Google Protocol Buffers and are intended to be easily recon figurable unlike the original CCL framework used in the REMUS vehicles and others for information on CCL see http acomms whoi edu ccl Unlike the encoder decoder provided with Google Protocol Buffers each field which could be a primitive type like double int32 string or an user defined embedded message like CTDMessage of a DCCL message can be encoded using a DCCL built in
2. Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 29 goby acomms ModemDriverBase Class Reference 154 Implemented in goby acomms MMDriver goby moos BluefinCommsDriver goby moos UFldDriver and goby acomms ABCDriver Examples acomms modemdriver driver_simple driver_simple cpp 17 29 2 3 bool goby acomms ModemDriverBase modem_ read std string x in protected read a line from the serial port including end of line character s Parameters in pointer to string to store line Returns true if a line was available false if no line available Definition at line 72 of file driver_base cpp 17 29 2 4 void goby acomms ModemDriverBase modem_start const protobuf DriverConfig 4 cfg protected start the physical connection to the modem serial port TCP etc must be called before ModemDriverBase modem_read or ModemDriverBase modem_write Parameters cfg Configuration including the parameters for the physical connection protobuf DriverConfig is defined in acomms_driver_base proto Exceptions ModemDriverException Problem opening the physical connection Definition at line 92 of file driver_base cpp 17 29 2 5 void goby acomms ModemDriverBase modem_write const std string out protected write a line to the serial port Parameters gt out reference to string to write Must already includ
3. delimiter string used to split lines Definition at line 32 of file serial_client cpp The documentation for this class was generated from the following files goby util linebasedcomms serial_client h e src util linebasedcomms serial_client cpp 17 46 goby util TCPClient Class Reference provides a basic TCP client for line by line text based communications to a remote TCP server include lt goby util linebasedcomms tcp_client h gt Inherits goby util LineBasedClient lt ASIOAsyncReadStream gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 47 goby util TCPServer Class Reference 182 Public Member Functions e TCPClient const std string amp server unsigned port const std string amp delimiter r n int retry_interval 10 create a TCPClient e boost asio ip tcp socket amp socket e std string local_endpoint string representation of the local endpoint e g 192 168 1 105 54230 e std string remote_endpoint string representation of the remote endpoint e g 192 168 1 106 50000 Friends class TCPConnection class LineBasedConnection lt boost asio ip tcp socket gt Additional Inherited Members 17 46 1 Detailed Description provides a basic TCP client for line by line text based communications to a remote TCP server Definition at line 36 of file tcp_client h 17 46 2 Constructor amp Destructor Documentation 17 46 21 goby util TCPClient TCP
4. ModemTransmission src 1 dest 2 rate 0 type DATA ack_requested true HO Application or other Goby Modules modemdriver1 initiate_transmission l l gt signal_modify_transmission WHOI Micro Modem Firmware signal_data_request if ModemTransmission frame_size lt 1 ModemTransmission src 1 dest 2 rate 0 type DATA ack_requested true max_num_frames 1 max_frame_bytes 32 frame 55555555555555555555555555555555 ModemTransmission src 1 dest 2 rate 0 type DATA max_num_frames 1 max_frame_bytes 32 ack_requested true frame 55555555555555555555555555555555 micromodem protobuf transmit_stat number_frames_expected 1 number_frames_sent 1 packet_type FSK_MINI number_bytes 0 micromodem protobuf transmit_stat number_frames_sent 1 packet_type FSK number_bytes 32 S ModemTransmission src 2 dest 1 time 1316033117000000 time_source MODEM_TIME type ACK acked_frame 0 micromodem protobuf receive_stat mode RECEIVE_GOOD ti NI IS 1 requested data CCCYC CACYC K HAS 1 CATXP aa r CATXF lt A a A te 1 i CAXST kK A o EE l CADRQ E A SEMEN GPUS Ue eens CCTXD with buffered data CATXD Knn i ie signal_transmit_result includes both CAXST
5. Taking all this into account we form the first message named GoToCommand in the file two_message proto see Two Message example We choose a dccl id of 125 to avoid conflicting with the message from Scenario 1 simple proto anda dccl max_bytes of 32 bytes to again allow sending in the WHOI Micro Modem rate 0 packet Now for the second message in two_message proto We want to receive the vehicle s present position and its current health which can either be good low_battery or abort We make a similar table to before message variable name description type bounds nav_x current vehicle position integer 0 10000 meters east of the datum nav_y current vehicle position integer 0 10000 meters north of the datum health vehicle state enumeration HEALTH_GOOD HEAL TH_LOW_BATTERY or HEALTH_ABORT The resulting message can be seen under Two Message example An example of how to use this message is given under two_message cpp You can run analyze_dccl to view more information on your messages gt analyze_dccl path to two_message proto When ran the above command got read in two_message proto Begin DCCLCodec 2 messages loaded Begin GoToCommand Actual maximum size of message 18 bytes 144 bits dccl id head 8 Allowed maximum size of message 32 bytes 256 bits Begin Header End Header Begin Body GoToCommand required int32 destina
6. Definition at line 171 of file decl_field_codec_default h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_default h src acomms dccl dccl_field_codec_default cpp 17 6 goby acomms DCCLDefaultBytesCodec Class Reference Provides an fixed length byte string encoder include lt goby acomms dccl dccl_field_codec_default h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 7 goby acomms DCCLDefaultEnumCodec Class Reference 107 Inheritance diagram for goby acomms DCCLDefaultBytesCodec goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt std string std string gt goby acomms DCCLlypedField Codec lt std string gt goby acomms DCCLDefault BytesCodec Additional Inherited Members 17 6 1 Detailed Description Provides an fixed length byte string encoder Definition at line 202 of file dccl_field_codec_default h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_default h src acomms dccl dccl_field_codec_default cpp 17 7 goby acomms DCCLDefaultEnumCodec Class Reference Provides an enum encoder This converts the enumeration to an integer based on the enumeration index not its value and uses DCCLDefaultNumericFieldCodec to encode the integer include lt goby acomms dcecl dccl_field_codec_default h gt Inheritance diagra
7. type ACK signal_receive Figure 5 FSK rate 0 data transmission PSK rate 2 shown others are similar data t ransmission FSK Ke Always present Often present Occasionally present adv Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 47 ModemTransmission src 1 dest 2 rate 2 type DATA ack_requested true frame 1111 64 chars ModemTransmission rate 2 type DATA ack_requested true max_num_frames 3 max_frame_bytes 64 frame 1111 64 chars frame 2222 64 chars Application or other Goby Modules a ModemTransmission src 1 dest 2 rate 2 type DATA max_num_frames 3 max_frame_bytes 64 ack_requested true frame 1111 frame 2222 micromodem protobuf transmit_stat packet_type PSK number_bytes 128 ModemTransmission src 2 dest 1 time 1316033124000000 time_source MODEM_TIME type ACK acked_frame 0 acked_frame 1 micromodem protobuf receive_stat mode RECEIVE_GOOD packet_type PSK_MINI Figure 6 PSK rate 2 shown others are similar data transmission Narrowband transponder LBL ping modemdriver1 initiate_transmission signal_modify_transmission l l gt modified transmission ignal_data_request if ModemTransmi
8. Inheritance diagram for goby acomms DCCLDefaultldentifierCodec goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt uint32 uint32 gt goby acomms DCCLlypedField Codec lt uint32 gt goby acomms DCCLDefault IdentifierCodec Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 8 goby acomms DCCLDefaultidentifierCodec Class Reference 109 Protected Member Functions e virtual Bitset encode Encode an empty field e virtual Bitset encode const uint32 amp wire_value Encode a non empty field e virtual uint82 decode Bitset xbits Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this e virtual unsigned size Calculate the size in bits of an empty field e virtual unsigned size const uint32 amp wire_value Calculate the size in bits of a non empty field e virtual unsigned max_size Calculate maximum size of the field in bits e virtual unsigned min_size Calculate minimum size of the field in bits e virtual void validate Validate a field Use require inside your overloaded validate to assert requirements or throw DCCLExceptions directly as needed Additional Inherited Members 17 8 1 Detailed Description Provides the default 1 byte or 2 byte DCCL ID codec Definition at line 55 of file dccl_field_codec_default h 17 8 2 Member Function Documentat
9. acknowledged receiving message starting with typed_original_message telegram substr 0 5 19 3 acomms dccl dccl_simple dccl_simple cpp simple proto import goby acomms protobuf dccl_option_extensions proto message Simple see http gobysoft org wiki DcclIdTable option dccl msg id 124 if for example we want to use on the WHOI Micro Modem rate 0 option dccl msg max_bytes 32 required string telegram 1 dccl field max_length 30 dccl_simple cpp encodes decodes a string using the DCCL codec library assumes prior knowledge of the message format required fields include goby acomms dccl h for DCCLCodec include simple pb h for Simple protobuf message defined in simple proto include goby util binary h for goby util hex_encode using goby acomms operator lt lt int main goby acomms DCCLCodecx decl goby acomms DCCLCodec get validate the Simple protobuf message type as a valid DCCL message type dccl gt validate lt Simple gt read message content in this case from the command line Simple message std cout lt lt input a string to send up to 10 characters lt lt std endl getline std cin message mutable_telegram std cout lt lt passing message to encoder n lt lt message lt lt std endl encode the message to a byte string std string bytes dccl gt encode amp bytes message
10. max_repeat 4 repeated float float_default_repeat 102 dccl field min 0 dccl field max 100 dccl field precision 3 dccl field max_repeat 4 repeated int32 int32_default_repeat 103 dccl field min 0 dccl field max 100 dcecl field max_repeat 4 repeated int64 int64_default_repeat 104 dccl field min 100 dccl field max 100 dccl field max_repeat 4 repeated uint32 uint32_default_repeat 105 dccl field min 0 dcecl field max 100 dcecl field max_repeat 4 dccl field in_head true repeated uint64 uint64_default_repeat 106 dccl field min 0 dccl field max 100 dccl field max_repeat 4 repeated sint32 sint32_default_repeat 107 dccl field min 60 dcecl field max 100 dccl field max_repeat 4 repeated sint64 sint64_default_repeat 108 dccl field min 600 dccl field max 100 dcecl field max_repeat 4 repeated fixed32 fixed32_default_repeat 109 dccl field min 0 decl field max 100 dccl field max_repeat 4 repeated fixed64 fixed64_default_repeat 110 dccl field min 0 dccl field max 100 dccl field max_repeat 4 repeated sfixed32 sfixed32_default_repeat 111 dccl field min 0 dccl field max 100 dccl field max_repeat 4 repeated sfixed64 sfixed64_default_repeat 112 dccl field min 500 dccl field max 100 decl field max_repeat 4 repeated bool bool_default_repeat 113 dccl field m
11. DCCLFieldCodecBase Class Reference 124 Parameters wire_values Should be set to the desired values to translate field_values Will be set to the converted wire_values Definition at line 271 of file dccl_field_codec h 17 13 2 23 void goby acomms DCCLFieldCodecBase field_pre_encode boost any x wire_value const boost any amp field value inline Pre encodes a non repeated i e optional or required field by converting the FieldType representation the Google Protobuf representation into the WireType representation the type used in the encoded DCCL message This allows for type converting codecs These are called typically by DCCLDefaultMessageCodec to start processing a new field In this exan code message Foo int32 bar 1 FooBar baz 2 Parameters wire_value Will be set to the converted field_value field_value Value to convert to the appropriate wire_value Definition at line 193 of file dccl_field_codec h 17 13 2 24 void goby acomms DCCLFieldCodecBase field_pre_encode_repeated std vector lt boost any gt x wire_values const std vector lt boost any gt 4 field_values inline Pre encodes a repeated field Parameters wire_values Should be set to the converted field_values field_values Values to convert to the appropriate wire_values Definition at line 200 of file dccl_field_codec h 17 13 2 25 void goby acomms DCCLF
12. F 7 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 7 UML models 9 clear void clear_a void clear_b void clear_c 7 7 private unsigned a_ std string b_ RepeatedField lt double gt c_ RepeatedField std vector Clearly the proto representation is more compact and amenable to easy modification All the Protocol Buffers messages used in goby acomms are placed in the goby acomms protobuf namespace for easy identification This doxygen documentation does not understand Protocol Buffers language so you will need to look at the source code directly for the proto e g acomms_modem_message proto 2 7 UML models Model that gives the sequence for sending a message with goby acomms Application decl queue amac modemdriver WHOI Micro Modem Firmware f push_message l f i I initiate transmission message i 1 l i i i data_request message j i encode encoded data LI NA ee cies 5 i requested data I BO MA e a re E E A a a i j cycle init CCCYC gt data request SCADRQ f I A ea a Oe eT i send data CCTXD gt acknowledgement CAACK reirme f i type ACK receive message 1 i i ack pop_message 5 i i Figure 2 UML model that gives the sequence of calls requir
13. Parameters cfg Startup configuration for the driver and modem DriverConfig is defined in acomms_driver _base proto Derived classes can define extensions see http code google com apis protocolbuffers docs proto html extensions to DriverConfig to handle modem specific configuration Implements goby acomms ModemDriverBase Definition at line 47 of file moos_ufield_sim_driver cpp The documentation for this class was generated from the following files goby moos moos_ufield_sim_driver h src moos moos_ufield_sim_driver cpp 17 41 goby pb Application Class Reference Base class provided for users to generate applications that participate in the Goby publish subscribe architecture include lt goby pb application h gt Inherits goby common ZeroMQApplicationBase Inherited by goby acomms Bridge goby acomms FileTransfer and goby acomms ModemDriver Protected Types typedef goby common Colors Colors Protected Member Functions template lt typename ProtoBufMessage gt void subscribe boost function lt void const ProtoBufMessage amp gt handler boost function lt void const ProtoBufMessage amp gt const std string amp group Subscribe to a message of any type derived from google protobuf Message template lt typename ProtoBufMessage class C gt void subscribe void C mem_func const ProtoBufMessage amp C obj const std string amp group Subscribe for
14. Parameters name Name to use for this codec Corresponds to goby field dccl codec name in proto file Returns nothing void Return templates are used for template metaprogramming selection of the proper add overload Definition at line 159 of file dccl_field_codec_manager h 17 14 2 2 template lt class Codec gt static boost disable_if lt boost mpl and_ lt boost is_base_of lt google protobuf Message typename Codec wire type gt boost mpl not_ lt boost is_same lt google protobuf Message typename Codec wire type gt gt gt void gt type goby acomms DCCLFieldCodecManager add const std string amp name static Add a new field codec used for codecs operating on all types except statically generated Protobuf messages Template Parameters Codec A child of DCCLFieldCodecBase Parameters name Name to use for this codec Corresponds to goby field dccl codec name in proto file Returns nothing void Return templates are used for template metaprogramming selection of the proper add overload 17 14 2 3 template lt class Codec google protobuf FieldDescriptor Type type gt static void goby acomms DCCLFieldCodecManager add const std string amp name static Add a new field codec only valid for a specific google protobuf FieldDescriptor Type This is useful if a given codec is designed to work with only a specific Protobuf type that s
15. QueueException goby common ConfigException goby pb Application goby transitional DCCLMessageVal goby transitional DCCLTransitionalCodec goby util LineBasedinterface 140 111 110 128 129 126 141 143 142 145 146 146 150 95 148 167 168 156 161 162 163 164 165 166 114 155 162 170 172 176 178 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 13 Class Index 64 goby util TCPServer 181 goby util SerialClient 179 goby util TCPClient 180 Group 183 GroupSetter 183 13 Class Index 13 1 Class List Here are the classes structs unions and interfaces with brief descriptions boost asio time_traits lt goby common GobyTime gt Time traits specialised for GobyTime 93 ChatCurses Terminal GUI for a chat window lower box to type and upper box to receive messages Part of the chat cpp example 94 goby acomms ABCDriver API to the imaginary ABC modem as an example how to write drivers 95 goby acomms DCCLCodec API to the Dynamic CCL Codec 96 goby acomms DCCLDefaultBoolCodec Provides a bool encoder Uses 1 bit if field is required 2 bits if optional 104 goby acomms DCCLDefaultBytesCodec Provides an fixed length byte string encoder 105 goby acomms DCCLDefaultEnumCodec Provides an enum encoder This converts the enumeration to an integer based on the enumer ation index not its value and
16. amp name Add a new field codec only valid for a specific google protobuf FieldDescriptor Type This is useful if a given codec is designed to work with only a specific Protobuf type that shares an underlying C type e g Protobuf types bytes and string e static boost shared_ptr lt DCCLFieldCodecBase gt find const google protobuf FieldDescriptor field Find the codec for a given field For embedded messages prefers goby field dccl codec inside field over goby msg dccl codec inside embedded message e static boost shared_ptr lt DCCLFieldCodecBase gt find const google protobuf Descriptor desc std string name Find the codec for a given base or embedded message 17 14 1 Detailed Description Todo tes Make sanity check for newly added FieldCodecs Definition at line 37 of file dccl_field_codec_manager h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 14 goby acomms DCCLFieldCodecManager Class Reference 128 17 14 2 Member Function Documentation 17 14 21 template lt class Codec google protobuf FieldDescriptor Type type gt void goby acomms DCCLFieldCodec Manager add const std string 8 name static Add a new field codec used for codecs operating on statically generated Protobuf messages that is children of google protobuf Message but not google protobuf Message itself Template Parameters Codec A child of DCCLFieldCodecBase
17. amp out const std set lt std string gt amp s use this for displaying a human readable version of this STL object e std ostream amp operator lt lt std ostream amp os const DCCLMessageVal amp mv e std ostream amp operator lt lt std ostream amp os const std vector lt DCCLMessageVal gt amp vm Binary encoding e bool char_array2hex_string const unsigned char xc std string amp s const unsigned int n converts a char byte array into a hex string e bool hex_string2char_array unsigned char c const std string amp s const unsigned int n turns a string of hex chars ABCDEF into a character array reading each byte OxAB OxCD OXEF etc std string long2binary_string unsigned long unsigned short bits return a string represented the binary value of 1 for bits number of bits which reads MSB gt LSB std string binary_string2hex_string const std string amp bs converts a binary string 1000101010101010 into a hex string 8AAA std string hex_string2binary_string const std string amp bs converts a boost dynamic_bitset similar to std bitset but without compile time size requirements into a hex string template lt typename T gt bool hex_string2number const std string amp s T amp t converts a hex string 8AAA into a dynamic_bitset template lt typename T gt bool number2hex_string std string amp s const T amp t unsigned int width 2 converts a decimal number of type T into a hex string
18. any amp wire_value 0 Virtual method used to encode virtual void any_decode Bitset bits boost any wire_value 0 Virtual method used to decode virtual void any_pre_encode boost any wire_value const boost any amp field_value Virtual method used to pre encode convert from FieldType to Wire Type The default implementation of this method is for when Wire Type Field Type and simply copies the field_value to the wire_value virtual void any_post_decode const boost any amp wire_value boost any xfield_value Virtual method used to post decode convert from Wire Type to FieldType The default implementation of this method is for when Wire Type Field Type and simply copies the wire_value to the field_ value virtual unsigned any_size const boost any amp wire_value 0 Virtual method for calculating the size of a field in bits virtual void validate Validate a field Use require inside your overloaded validate to assert requirements or throw DCCLExceptions directly as needed virtual std string info Write field specific information in addition to general information such as sizes that are automatically written by this class for all fields virtual unsigned max_size 0 Calculate maximum size of the field in bits virtual unsigned min_size 0 Calculate minimum size of the field in bits virtual void any_encode_repeated Bitset bits const std vector lt boost any gt amp wire_values virtual voi
19. e g CTD samples acoustic modem datagrams e additional special commands e g buoyancy adjustment activate deactivate sensors low power mode that the backseat can command of the frontseat Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 1 FrontSeat 55 8 1 1 2 State charts The state of iFrontSeat as shown in the following diagram is determined by a combination of the state of the frontseat and the state of pHelmlvP Only the state of the frontseat must be determined by each new driver as the state of pHelmlvP is determined by code shared by all the drivers Helm iFrontSeat frontseat Figure 13 State charts of the iFrontSeat interface and connected ends pHelmlvP and frontseat The state of the frontseat consists of two parallel state charts command and data Command state FRONTSEAT_IDLE required The frontseat computer is alive and well but is not running any mission the vehicle is a standby mode FRONTSEAT_ACCEPTING_COMMANDS required The frontseat is accepting the backseat com mands FRONTSEAT_NOT_CONNECTED optional No communication with the frontseat computer has been established or a connection has been lost If there is no way to tell whether the frontseat is alive at any given time this state may not be implemented FRONTSEAT_IN_ CONTROL optional The frontseat is running a mission and driving the vehicle but not accepting commands from the backseat If t
20. e void decode const std string amp bytes google protobuf Message msg bool header_only false Decode a DCCL message when the type is known at compile time unsigned id_from_encoded const std string amp bytes Get the DCCL ID of an unknown encoded DCCL message Alternative Dynamic Protobuf methods including list of Message methods Advanced These methods are intended to be used when the Google Protobuf message types are not known at compile time and work with the Descriptor Reflection meta data introspection API provided by Google e void validate const google protobuf Descriptor desc An alterative form for validating messages for message types not known at compile time dynamic void validate_repeated const std list lt const google protobuf Descriptor gt amp descs Shortcut for validating multiple messages at once void info const google protobuf Descriptor desc std ostream xos const An alterative form for getting information for messages for message types not known at compile time dynamic void info_repeated const std list lt const google protobuf Descriptor x gt amp desc std ostream x os const Shortcut for getting information on multiple messages at once unsigned id const google protobuf Descriptor desc const Provides the DCCL ID given a DCCL type template lt typename GoogleProtobufMessagePointer gt unsigned size_repeated const std list lt GoogleProtobufMessagePointe
21. either bind the mo dem driver to a goby acomms QueueManager goby acomms bind goby acomms ModemDriverBase amp goby acomms QueueManager amp or connect custom function pointers or objects to the driver layer signals e Virtual functions for starting the driver goby acomms ModemDriverBase startup running the driver goby acomms ModemDriverBase do_work and initiating the transmission of a message goby acomms ModemDriverBase handle_initiate_transmission The handle_initiate_transmission slot is typically bound to goby acomms MACManager signal_initiate_transmission 6 1 1 Interacting with the goby acomms ModemDriverBase To use the goby acomms ModemDriverBase you need to create one of its implementations such as WHOI Micro Modem Driver MMDriver goby acomms ModemDriverBasex driver new goby acomms MMDriver Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 2 Protobuf Message goby acomms protobuf ModemTransmission 33 You will also need to configure the driver At the very least this involves a serial port baud and modem ID integer MAC address for the modem goby acomms protobuf DriverConfig cfg cfg set_serial_port dev ttyS0 cfg set_modem_id 3 Most modems will have specific other configuration that is required For example the WHOI Micro Modem NVRAM is set using three character strings followed by a number This modem specific configuration is stored
22. google protobuf FieldDescriptor TYPE_SFIXED32 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_SFIXED64 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE _SINT32 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_SINT64 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_STRING gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_UINT32 gt and goby acomms FromProtoType lt google protobuf Field Descriptor TYPE_UINT64 gt Public Member Functions e virtual std string as_str string representation of the google protobuf FieldDescriptor Type 17 26 1 Detailed Description Provides various representations of a google protobuf FieldDescriptor Type enumeration Implementations are provided for all enumerations Definition at line 38 of file protobuf_cpp_type_helpers h The documentation for this class was generated from the following file goby acomms dccl protobuf_cpp_type_helpers h 17 27 goby acomms MACManager Class Reference provides an API to the goby acomms MAC library MACManager is essentially a std list lt protobuf Modem Transmission gt plus a timer Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 27 goby acomms MACManager Class Reference 148 include lt goby acomms amac h gt Inherits std list lt T gt Public Member Functions
23. if driver std cout lt lt Starting WHOI Micro Modem MMDriver lt lt std endl driver new goby acomms MMDriver turn data quality factor message on example of setting NVRAM configuration cfg AddExtension micromodem protobuf Config nvram_cfg DOF 1 goby acomms connect amp driver gt signal_receive amp handle_data_receive fi 2 Startup the driver fi driver gt startup cfg fi 3 Initiate a transmission cycle with some data ie goby acomms protobuf ModemTransmission transmit_message transmit_message set_type goby acomms protobuf ModemTransmission DATA transmit_message set_src goby util as lt unsigned gt our_id transmit_message set_dest goby acomms BROADCAST_ID i transmit_message set_rate 0 transmit_message add_frame Hello world transmit_message set_ack_requested false std cout lt lt transmit_message lt lt std endl driver gt handle_initiate_transmission transmit_message 4 Run the driver 10 hz is good int i 0 while 1 1 i driver gt do_work send another transmission every 60 seconds if i 600 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 6 acomms queue queue_simple queue_simple cpp 195 driver gt handle_initiate_transmission transmit_message in here you can initiate more transmissions as you want usleep 100000
24. lt command ShortDebugString lt lt std endl send_command_to_frontseat Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 1 FrontSeat 59 The method send_data_to_frontseat is called whenever FrontSeat needs to send data to the frontseat These data could include sensor readings from instruments that are directly connected to the backseat such as a CTD or acoustic modem Our bare bones example frontseat doesn t require any data from the backseat so we just leave an empty implementation here void AbcFrontSeat send_data_to_frontseat const gpb FrontSeatInterfaceData amp data ABC driver doesn t have any data to sent to the frontseat send_data_to_frontseat The method send_raw_to_frontseat is called whenever an external application wants to directly control the frontseat This can be left blank or post a warning to the glog if there is no need or desire to allow for direct control of the frontseat from external applications The method loop is called regularly at the AppTick of iFrontSeat and is where you can read data from the frontseat and do other regular work void AbcFrontSeat loop 1 check_connection_state try_receive if we haven t gotten data for a while set this boolean so that the FrontSeatInterfaceBase class knows if goby_time lt double gt gt last_frontseat_data_time_ allowed_skew frontseat_providing_data_ false loop
25. perhaps goby acomms protobuf ModemTransmission slot slot set_src 1 slot set_dest goby acomms QUERY_DESTINATION_ID i slot set_rate 0 slot set_type goby acomms protobuf ModemTransmission DATA slot SetExtension goby acomms protobuf slot_seconds 10 mac_cfg add_slot slot 1 gt 1 0 wait 10 reuse slot ot set_sre 3 ot set_dest goby acomms BROADCAST_ID ac_cfg add_slot slot 3 gt 0 0 wait 10 3u00uo a ot set_rate 5 mac_cfg add_slot slot 3 gt 0 5 wait 10 slot set_src 4 slot set_rate 0 mac_cfg add_slot slot 4 gt 0 0 wait 10 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 goby acomms modemdriver Driver to interact with modem firmware 32 You can remove vehicles by a call to goby acomms MACManager remove_slot or clear out the entire cycle and start over with goby acomms MACManager clear_all_slots Then for either MAC scheme start the goby acomms MACManager running goby acomms MACManager startup with the goby acomms protobuf MACConfig object and call goby acomms MACManager do_work periodically 5 Hz is ok 10 Hz is better You can modify the MAC scheme while MACManager is running Simply use the std list insert push pop erase methods to changes slots goby acomms protobuf ModemTransmission objects After any changes that invalidate std list iterators insert push pop erase you must call
26. protected Fetchs the newest received message of this type You must subscribe for this type before using this method Definition at line 113 of file application h The documentation for this class was generated from the following files goby pb application h e src pb application cpp 17 42 goby transitional DCCLMessageVal Class Reference defines a DCCL value include lt goby moos transitional message_val h gt Public Types e enum MAX_DBL_PRECISION 15 Public Member Functions Constructors Destructor e DCCLMessageVal emply e DCCLMessageVal const std string amp s construct with string value e DCCLMessageVal const char xs construct with charx value e DCCLMessageVal double d int p MAX_DBL_PRECISION construct with double value optionally givig the precision of the double number of decimal places which is used if a cast to std string is required in the future e DCCLMessageVal long l construct with long value e DCCLMessageVal int i construct with int value e DCCLMessageVal float f construct with float value DCCLMessageVal bool b construct with bool value e DCCLMessageVal const std vector lt DCCLMessageVal gt amp vm construct with vector Setters e void set std string sval set the value with a string overwrites previous value regardless of type e void set double dval int precision MAX_DBL_PRECISION set the value with a double overwrites previous value
27. protobuf ModemTransmission amp request_msg google protobuf Message data_msg gt signal_data_on_demand Forwards the data request to the application layer This advanced feature is used when queue encode_on_ demand true and allows for the application to provide data immediately before it is actually sent for highly time sensitive data Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 31 goby acomms QueueManager Class Reference 159 boost signals2 signal lt void protobuf QueueSize size gt signal_queue_size_change Signals when any queue changes size message is popped or pushed Friends class Queue 17 31 1 Detailed Description provides an API to the goby acomms Queuing Library See Also acomms_queue proto and acomms_modem_message proto for definition of Google Protocol Buffers messages namespace goby acomms protobuf Examples acomms chat chat cpp and acomms queue queue_simple queue_simple cpp Definition at line 52 of file queue_manager h 17 31 2 Member Function Documentation 17 31 2 1 template lt typename ProtobufMessage gt void goby acomms QueueManager add_queue const protobuf QueuedMessageEntry amp queue_cfg inline Add a DCCL queue for use with QueueManager Note that the queue must be added before receiving messages with QueueManager Template Parameters ProtobufMessage Any Google Protobuf Message generated by protoc i e subclass of google pro
28. send this message to my buddy message_out set_destination buddy_id_ message_out set_source my_id_ q_manager_ push_message message_out try mm_driver_ do_work j mac_ do_work q_manager_ do_work catch std runtime_error amp e curses_ cleanup std cerr lt lt exception while running lt lt e what lt lt std endl return 1 return 0 int startup_failure 1 std cerr lt lt usage chat dev tty_modem my_id buddy_id log_file lt lt std endl return 1 void monitor_mac const goby acomms protobuf ModemTransmission amp mac_msg if mac_msg src my_id_ curses_ post_message control starting send to my buddy else if mac_msg src buddy_id_ curses_ post_message control my buddy might be sending to me now void received_data const google protobuf Message amp message_in ChatMessage typed_message_in typed_message_in CopyFrom message_in curses_ post_message typed_message_in source Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 3 acomms dccl dccl_simple dccl_simple cpp 191 typed_message_in telegram void received_ack const goby acomms protobuf ModemTransmission amp ack_message const google protobuf Message amp original_message ChatMessage typed_original_message typed_original_message CopyFrom original_message curses_ post_message ack_message src std string
29. template lt typename T gt std string number2hex_string const T amp t unsigned int width 2 converts a decimal number of type T into a hex string assuming success Variables const unsigned DCCL_NUM_HEADER_BYTES 6 const unsigned DCCL_NUM_HEADER_PARTS 8 const std string DCCL_HEADER_NAMES Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 6 goby transitional Namespace Reference 92 16 6 1 Detailed Description Objects pertaining to transitioning from DCCLv1 to DCCLv2 16 6 2 Typedef Documentation 16 6 2 1 typedef boost function lt void DCCLMessageVal amp gt goby transitional AlgFunction1 boost function for a function taking a single DCCLMessageVal reference Used for algorithm callbacks Think of this as a generalized version of a function pointer void DCCLMessageVal amp See http www boost org doc libs 1_34_0 doc html function html for more on boost function Definition at line 41 of file message_algorithms h 16 6 2 2 typedef boost function lt void DCCLMessageVal amp const std vector lt DCCLMessageVal gt amp gt goby transitional AlgFunction2 boost function for a function taking a dccl MessageVal reference and the MessageVal of a second part of the message Used for algorithm callbacks Think of this as a generalized version of a function pointer void DCCLMessageVal amp const DCCLMessage Val amp See http www boost org doc libs 1_34_0 doc htm
30. 20 message GobyMessage2 option dccl msg id 5 option dccl msg max_bytes 32 optional bool bool_val 1 message GobyMessage3 option dccl msg id 6 option dccl msg max_bytes 32 optional string string_val 1 dccl field max_length 10 See Also dccl4 test cpp 3 5 6 DCCL Test5 dccl5 test proto See Also dccl5 test cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 21 3 5 7 DCCL Test6 dccl6 test proto import goby acomms protobuf dccl_option_extensions proto message ShortIDMsg option dccl msg id 2 option dccl msg max_bytes 1 message ShortIDMsgWithData option dccl msg id 3 option dccl msg max_bytes 10 optional int32 in_head 1 dccl field in_head true dccl field min 0 dccl field max 100 optional int32 in_body 2 dccl field in_head true dccl field min 0 dccl field max 100 message LongIDMsg H a Il option dccl msg i 10000 option dccl msg max_bytes 2 message TooLongIDMsg option dccl msg id 32768 option dccl msg max_bytes 32 message LongIDEdgeMsg option dccl msg id 128 option dccl msg max_bytes 2 message ShortIDEdgeMsg option dccl msg id 127 option dccl msg max_bytes 1 See Also dccl6 test cpp 3 5 8 DCCL Test7 dccl7 test proto import goby acomms protobuf dccl_option_extensions proto me
31. 22 goby util linebasedcomms h 22 goby util primitive_types h 22 goby util sci h 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 14 1 File List 75 goby util linebasedcomms connection h goby util linebasedcomms interface h goby util linebasedcomms nmea_sentence h goby util linebasedcomms serial_client h goby util linebasedcomms tcp_client h goby util linebasedcomms tcp_server h goby util protobuf linebasedcomms pb h goby util protobuf linebasedcomms proto goby util seawater depth h goby util seawater pressure h goby util seawater salinity h goby util seawater swstate h share examples acomms amac amac_simple amac_simple cpp share examples acomms chat chat cpp share examples acomms chat chat proto share examples acomms chat chat_curses cpp share examples acomms chat chat_curses h share examples acomms dccl dccl_simple dccl_simple cpp share examples acomms dccl dccl_simple simple proto share examples acomms dccl two_message two_message cpp share examples acomms dccl two_message two_message proto share examples acomms modemdriver driver_simple driver_simple cpp share examples acomms modemdriver whoi_ranging whoi_ranging cpp share examples acomms queue encode_on_demand encode_on_demand cpp share examples acomms queue encode_on_demand on_demand proto share examples acomms queue multimessage multimessage cpp share examples acomms queue queue_simple queue_simple cpp share examples moos abc_frontseat_driver abc_fr
32. 91 dccl_hex 91 dccl_int 91 dccl_ static 91 dccl_string 91 goby Exception 166 goby acomms 82 goby acomms ABCDriver 95 do_work 95 handle_initiate_transmission 95 startup 96 goby acomms DCCLCodec 96 add_id_codec 99 decode 99 decode_repeated 100 encode 100 encode_repeated 100 id 101 id_from_encoded 101 info 102 info_all 102 load_shared_library_codecs 102 set_id_codec 102 size 102 size_repeated 103 validate 103 validate_repeated 104 goby acomms DCCLDefaultBoolCodec 104 goby acomms DCCLDefaultBytesCodec 105 goby acomms DCCLDefaultEnumCodec 106 goby acomms DCCLDefaultldentifierCodec 107 decode 108 encode 108 109 max_size 109 min_size 109 size 109 goby acomms DCCLDefaultMessageCodec 110 goby acomms DCCLDefaultNumericFieldCodec decode 112 encode 112 goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt 111 goby acomms DCCLDefaultStringCodec 113 goby acomms DCCLException 114 goby acomms DCCLFieldCodecBase 114 any_decode 118 any_encode 118 any_post_decode 118 any_pre_encode 118 any_size 119 base_decode 119 base_encode 119 base_info 119 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen INDEX 199 base_max_size 120 base_min_size 120 base_size 120 base validate 120 dccl_field_options 121 field_decode 121 field_decode_repeated 121 field_encode 121 field_encode_repea
33. Definition at line 304 of file message_val cpp 17 42 2 12 void goby transitional DCCLMessageVal set double dval int precision MAX_DBL_PRECISION set the value with a double overwrites previous value regardless of type Parameters dval values to set precision decimal places of precision to preserve if this is cast to a string Definition at line 121 of file message_val cpp The documentation for this class was generated from the following files goby moos transitional message_val h src moos transitional message_val cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 43 goby transitional DCCLTransitionalCodec Class Reference 177 17 43 goby transitional DCCLTransitionalCodec Class Reference provides an API to the Transitional Dynamic CCL Codec looks like DCCLv1 but calls DCCLv2 Warning this class is for legacy support only new applications should use DCCLCodec directly include lt goby acomms dccl h gt Public Member Functions template lt typename Key gt const google protobuf Descriptor descriptor const Key amp k unsigned message_count template lt typename Key gt unsigned get_repeat const Key amp k e std set lt unsigned gt all_message_ids std set lt std string gt all_message_names template lt typename Key gt std map lt std string std string gt message_var_names const Key amp k const std string i
34. Exception class for libdccl e class QueueManager provides an API to the goby acomms Queuing Library Typedefs e typedef std list lt QueuedMessage gt iterator messages_it e typedef std multimap lt unsigned messages_it gt iterator waiting_for_ack_it Enumerations e enum BYTE_MASK 7 Functions e std ostream amp operator lt lt std ostream amp out const google protobuf Message amp msg void bind ModemDriverBase amp driver QueueManager amp queue_manager binds the driver link layer callbacks to the QueueManager e void bind MACManager amp mac ModemDriverBase amp driver binds the MAC initiate transmission callback to the driver and the driver parsed message callback to the MAC e void bind QueueManager amp queue_manager RouteManager amp route_manager creates bindings for a RouteManager to control a particular queue QueueManager void bind ModemDriverBase amp driver QueueManager amp queue_manager MACManager amp mac bind all three shortcut to calling the other three bind functions e template lt typename Signal typename Slot gt void connect Signal signal Slot slot connect a signal to a slot e g function pointer e template lt typename Signal typename Obj typename A1 gt void connect Signal signal Obj obj void Obj mem_func A1 connect a signal to a member function with one argument e template lt typename Signal typename Obj typename A1 typename A2 gt v
35. Get lt i gt Type where Type is the corresponding google protobuf FieldDescriptor Cpp Type See http code google com apis protocolbuffers docs reference cpp google protobuf message html Reflection Definition at line 193 of file protobuf_cpp_type_helpers h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 25 goby acomms FromProtoCustomMessage lt CustomMessage gt Class Template Reference 146 17 24 23 boost any goby acomms FromProtoCppTypeBase get_value const google protobuf FieldDescriptor x field const google protobuf Message msg inline Get a given field s value from the provided message Parameters field Field to get value for msg Message to get value from Returns boost any containing the value The type is usually the type returned by google protobuf Reflection Get lt i gt Type where Type is the corresponding google protobuf FieldDescriptor Cpp Type See http code google com apis protocolbuffers docs reference cpp google protobuf message html Reflection Definition at line 171 of file protobuf_cpp_type_helpers h 17 24 2 4 void goby acomms FromProtoCppTypeBase set_value const google protobuf FieldDescriptor x field google protobuf Message msg boost any value inline Set a given field s value in the provided message Parameters field Field to set value for msg Message to set value in value boo
36. Goby v2 by Doxygen 5 goby acomms amac Medium Access Control 30 import goby acomms protobuf dccl_option_extensions proto message GobyMessage option dccl msg id 4 option dccl msg max_bytes 32 one byte required int32 telegram 1 dccl field min 0 dccl field max 255 See Also queued test cpp 5 goby acomms amac Medium Access Control Table of Contents for amac Supported MAC schemes e Interacting with the goby acomms MACManager Return to goby acomms An overview of Acoustic Communications Library 5 1 Supported MAC schemes The Medium Access Control schemes provided by amac are based on Time Division Multiple Access TDMA where different communicators share the same bandwidth but transmit at different times to avoid conflicts Time is divided into slots and each vehicle is given a slot to transmit on The set of slots comprising all the vehicles is referred to here as a cycle which repeats itself when it reaches the end MACManager is implemented as a timer and a std list of goby acomms protobuf ModemTransmission objects This allows you to use amac to create a TDMA cycle for any type of transmission data ping LBL etc that your modem supports The two variations on this scheme provided by amac are 1 Decentralized Each vehicle initiates its own transmission at the start of its slot goby acomms protobuf M AC_FIXED_DECENTRALIZED Slots are set at launch and can be up
37. Google Protocol Buffers Google Protocol Buffers are used as a convenient way of generating data structures basic classes with accessors mutators They can also be serialized efficiently though this is not generally used within goby acomms Protocol buffers messages are defined in proto files that have a C like syntax message MyMessage optional uint32 a 1 required string b repeated double c mon wn The identifier optional means a proper MyMessage object may or may not contain that field required means that a proper MyMessage always contains such a field repeated means a MyMessage can contain a vector of this field 0 to n entries The sequence number 1 must be unique for each field and determines the serialized format on the wire For our purposes it is otherwise insignificant See http code google com apis protocolbuffers docs proto html for full details The proto file is pre compiled into a C class that is loosely speaking see http code google com apis protocolbuffers docs reference cpp generated html for precise details class MyMessage public google protobuf Message public MyMessage set void set_a unsigned a void set_b const std string amp b void add_c double c get unsigned a std string b double c int index const RepeatedField lt double gt amp c RepeatedField std vector has bool has_a bool has_b int c_size
38. Now the final task is to call the appropriate signals in FrontSeatInterfaceBase upon receipt of data and responses to commands The signals are called just like normal functions with the corresponding signatures These signals except signal_raw_to_frontseat are typically called in response to data received in the loop method signal_data_from_frontseat Call when a navigation solution is received from the frontseat This may have to be merged from several messages which is why goby moos protobuf NodeStatus has the _time_lag fields These fields can be used to indicate the offset of certain fields from the timestamp on the message You can use the FrontSeatInterfaceBase compute_missing to compute the loocal fix X Y Z from the global fix latitude longitude depth or vice versa signal_command_response Call when the frontseat acknowledges a command if the command re quest includes response_requested true Include the success or failure of the command and an error code with description if applicable signal_raw_from_frontseat Call when a raw message e g CMD RESULT Ok is received from the frontseat This is for logging and debug purposes signal_raw_to_frontseat Call when a raw message e g CMD HEADING 260 SPEED 1 5 DEPTH 100 is send to the frontseat This is for logging and debug purposes For testing the ABC driver to see how it functions you will need to run abc_frontseat_simulator 54321 where 54321 is th
39. Simple see http gobysoft org wiki DcclIdTable option dccl msg id 124 if for example we want to use on the WHOI Micro Modem rate 0 option dccl msg max_bytes 32 required string telegram 1 dccl field max_length 30 See Also dccl_simple cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 16 3 5 2 Two Message example two_message proto import goby acomms protobuf dccl_option_extensions proto message GoToCommand option dccl msg id 125 option dccl msg max_bytes 32 required int32 destination 1 dccl field max 31 decl field min 0 dccl field precision 0 optional string type 2 dccl field static_value goto dccl field codec _static dcecl field max 10000 dccl field min 0 dcecl field precision 0 required int32 goto_y 4 dccl field max 10000 required int32 goto_x 3 dccl field min 0 dccl field precision 0 required bool lights_on 5 required string new_instructions 6 dccl field max_length 10 required double goto_speed 7 dccl field max 3 dccl field min 0 dccl field precision 2 message VehicleStatus option dccl msg id 126 option dccl msg max_bytes 32 required double nav_x 1 dccl field max 10000 dcecl field min 0 decl field precision 1 required double nav_y 2 dccl field max 10000 dccl field min 0 d
40. Verbosity quiet bool is_ gui is there an attached stream with Verbosity gui ncurses GUI void enable_gui e logger Verbosity highest_verbosity void group_name const std string amp s current group name last insertion of group into the stream e void set_die flag bool b exit on error at the next call to sync e void set_verbosity_depth logger Verbosity depth void add_group const std string amp name Group g add a new group std string color2esc_code Colors Color color TODO tes unnecessary e void refresh refresh the display does nothing if lis_gui 17 36 1 Detailed Description Class derived from std stringbuf that allows us to insert things before the stream and control output This is the string buffer used by goby common FlexOstream for the Goby Logger glogger Definition at line 75 of file flex_ostreambuf h The documentation for this class was generated from the following files goby common logger flex_ostreambuf h src common logger flex_ostreambuf cpp 17 37 goby common TermColor Class Reference Converts between string escape code and enumeration representations of the terminal colors include lt goby common logger term_color h gt Static Public Member Functions e static Colors Color from_str const std string amp s Color enumeration from string e g blue gt blue e static std string str_from_col const Colors Color amp c String fro
41. amp wire_value 0 Encode a repeated field e virtual std vector lt WireType gt decode_repeated Bitset bits 0 Decode a repeated field e virtual unsigned size_repeated const std vector lt WireType gt amp wire_values 0 Give the size of a repeated field e virtual unsigned max_size_repeated 0 Give the max size of a repeated field e virtual unsigned min_size_repeated 0 Give the min size of a repeated field e virtual Bitset encode Encode an empty field e virtual Bitset encode const WireType amp wire_value Encode a non empty field e virtual WireType decode Bitset xbits Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 17 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Reference 133 Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this e virtual unsigned size Calculate the size in bits of an empty field e virtual unsigned size const WireType amp wire_value Calculate the size in bits of a non empty field e virtual unsigned max_size Calculate maximum size of the field in bits e virtual unsigned min_size Calculate minimum size of the field in bits Additional Inherited Members 17 17 1 Detailed Description template lt typename WireType typename FieldType WireType gt class goby acomms DCCLRepeatedTypedFieldCodec lt Wire Type FieldType
42. any get_value const google protobuf Message amp msg Get the value of the entire base message only works for CPPTYPE_MESSAGE boost any get_repeated_value const google protobuf FieldDescriptor field const google protobuf Message amp msg int index Get the value of a repeated field at a given index e void set_value const google protobuf FieldDescriptor field google protobuf Message msg boost any value Set a given field s value in the provided message e void set_value google protobuf Message msg boost any value Set the value of the entire base message only works for CPPTYPE_MESSAGE e void add_value const google protobuf FieldDescriptor field google protobuf Message msg boost any value Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 24 goby acomms FromProtoCppTypeBase Class Reference 145 Add a new entry for a repeated field to the back e virtual void _set_ value const google protobuf FieldDescriptor field google protobuf Message msg boost any value e virtual void _add_value const google protobuf FieldDescriptor field google protobuf Message msg boost any value e virtual boost any _get_repeated_value const google protobuf FieldDescriptor field const google protobuf Message amp msg int index e virtual boost any _get_value const google protobuf FieldDescriptor field const google protobuf Message amp msg 17 24 1 Detail
43. as Protobuf extensions to goby acomms protobuf DriverConfig such as micromodem protobuf Config If we were using the WHOI Micro Modem and wanted to add an NVRAM configuration value we could write cfg AddExtension micromodem protobuf Config nvram_cfg DOF 1 We need to connect any signals we are interested in At a minimum this is goby acomms ModemDriverBase usignal_receive goby acomms connect amp driver gt signal_receive amp handle_data_receive where handle_data_receive has the signature void handle_data_receive const goby acomms protobuf ModemTransmission amp data_msg Next we start up the driver with our configuration driver gt startup cfg We need to call goby acomms ModemDriverBase do_work on some reasonable frequency greater than 5 Hz 10 Hz is probably good Whenever we need to transmit something we can either directly call goby acomms ModemDriverBase handle_initiate_transmission or connect goby acomms MACManager to do so for us on some TDMA cycle 6 2 Protobuf Message goby acomms protobuf ModemTransmission The goby acomms protobuf ModemTransmission message is used for all outgoing sending and incoming receiv ing messages The message itself only contains the subset of modem functionality that every modem is expected to support point to point transmission of datagrams All other functionality is provided by extensions to ModemTransmission such as those
44. be used along with a string identifier Template Parameters DCCLTypedFieldCodec Uint32 Subclass of DCCLTypedFieldCodec lt uint32 gt gt that implements encoding decoding of DCCL IDs Parameters identifier a name to give this DCCL ID codec for later use when setting it Definition at line 360 of file dccl h 17 4 2 2 void goby acomms DCCLCodec decode const std string amp bytes google protobuf Message x msg bool header_only false Decode a DCCL message when the type is known at compile time Parameters bytes encoded message to decode must already have been validated msg Pointer to any Google Protobuf Message generated by protoc i e subclass of google protobuf Message The decoded message will be written here Exceptions DCCLException if message cannot be decoded Examples acomms dccl dccl_simple dccl_simple cpp and acomms dccl two_message two_message cpp Definition at line 215 of file dccl cpp 17 4 2 3 template lt typename GoogleProtobufMessagePointer gt GoogleProtobufMessagePointer goby acomms DCCLCodec decode const std string amp bytes bool header_only false inline An alterative form for decoding messages for message types not known at compile time dynamic Template Parameters GoogleProtobufMessage Pointer anything that acts like a pointer has operator to a google protobuf Message s
45. by line text based communications to a one or more remote TCP clients Definition at line 52 of file tcp_server h 17 47 2 Constructor amp Destructor Documentation 17 47 21 goby util TCPServer TCPServer unsigned port const std string amp delimiter r n inline create a TCP server Parameters port port of the server use 50000 to avoid problems with special system ports delimiter string used to split lines Definition at line 59 of file tcp_server h The documentation for this class was generated from the following files goby util linebasedcomms tcp_server h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 48 Group Class Reference 184 e src util linebasedcomms tcp_server cpp 17 48 Group Class Reference Defines a group of messages to be sent to the Goby logger For Verbosity verbose streams all entries appear interleaved but each group is offset with a different color For Verbosity gui streams all groups have a separate subwindow include lt goby common logger logger_manipulators h gt Public Member Functions e Group const std string amp name const std string amp description goby common Colors Color color goby common Colors nocolor Getters e std string name const Name of this group used in the group manipulator e std string description const Human readable description of this group goby common Colors Color c
46. called at 5 Hz or more in pAcommsHandler it is called on the MOOS AppTick Here s where you want to read the modem incoming stream void goby acomms ABCDriver do_work std string in while modem_read amp in std map lt std string std string gt parsed breaks in RECV TO 3 FROM 6 HEX ABCD015910 into parsed KEY gt RECV TO gt 3 FROM gt 6 HEX gt ABCD015910 try boost trim in get whitespace off from either end parse_in in amp parsed let others know about the raw feed protobuf ModemRaw raw raw set_raw in ModemDriverBase signal_raw_incoming raw protobuf ModemTransmission msg msg set_src goby util as lt int32 gt parsed FROM msg set_dest goby util as lt int32 gt parsed TO msg set_time goby common goby_time lt uint 64 gt O glog is DEBUG1 amp amp glog lt lt group modem_in lt lt in lt lt std endl if parsed KEY RECV msg set_type protobuf ModemTransmission DATA msg add_frame hex_decode parsed HEX glog is DEBUG1 amp amp glog lt lt group modem_in lt lt received lt lt msg lt lt std endl else if parsed KEY ACKN msg set_type protobuf ModemTransmission ACK ModemDriverBase signal_receive msg catch std exceptiont e glog is WARN amp amp glog lt lt Bad line lt lt in lt
47. common logger logger_manipulators h src common logger logger_manipulators cpp 18 File Documentation 18 1 goby moos moos_protobuf_helpers h File Reference Helpers for MOOS applications for serializing and parsed Google Protocol buffers messages include lt limits gt include lt boost format hpp gt include lt boost regex hpp gt include lt google protobuf io printer h gt include lt google protobuf io tokenizer h gt include goby common logger flex_ostream h include goby util as h include goby util binary h include goby util dynamic_protobuf_manager h include goby moos moos_string h include goby util primitive_types h include goby moos transitional message_algorithms h include goby moos transitional message_val h include goby moos protobuf translator pb h Include dependency graph for moos_protobuf_helpers h This graph shows which files directly or indirectly include this file gobyimoosimoos_protobuf _helpers h src appsimoos pAcommsHandler IpAcommsHander cpp goby moas moos_translator h srcimoosfiaison_commander cpp sre moosfiaison_scope cpp srcimoos moos_bluefin _driver cpp goby apps moos ifrontSeat fiFrontSeat goby apps moos ptansiator src testimoos transiatorl th IpTranslat eest cpp
48. configuration good Starting modem lt lt std endl ModemDriverBase modem_start driver_cfg_ set your local modem id MAC address std stringstream raw raw lt lt CONF MAC lt lt driver_cfg_ modem_id lt lt r n signal_and_write raw str now set our special configuration values std stringstream raw raw lt lt CONF FOO lt lt driver_cfg_ GetExtension ABCDriverConfig enable_foo lt lt r n signal_and_write raw str std stringstream raw raw lt lt CONF BAR lt lt driver_cfg_ GetExtension ABCDriverConfig enable_bar lt lt r n signal_and_write raw str startup At shutdown you should make yourself ready to startup again if necessary and stop the modem void goby acomms ABCDriver shutdown put the modem in a low power state ModemDriverBase modem_close shutdown handle_initiate_transmission is called when you are expected to initiate a transmission lt may contain data in the ModemTransmission frame field If not you are required to request data using the goby acomms ModemDriverBase signal_data_request signal Once you have data you are responsible for sending it think a bit of code will make this clearer void goby acomms ABCDriver handle_initiate_transmission const protobuf ModemTransmission amp orig_msg copy so we can modify protobuf ModemTransmission msg orig_msg rate ca
49. cpp 2 src moos liaison_commander cpp 22 src moos liaison_geodesy cpp 2 src moos liaison_scope cpp 2 src moos modem_id_convert cpp 22 src moos moos_bluefin_driver cpp 22 src moos moos_geodesy cpp 2 src moos moos _liaison_load cpp 22 src moos moos_node cpp 2 src moos moos_translator cpp 2 src moos moos_ufield_sim_driver cpp 22 src moos frontseat frontseat cpp 2 src moos frontseat bluefin bluefin cpp 22 src moos frontseat bluefin bluefin_incoming cpp 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen src test acomms queue4 test cpp 14 1 File List 78 src moos transitional message cpp 2 src moos transitional message_algorithms cpp 2 src moos transitional message_publish cpp 2 src moos transitional message_val cpp 2 src moos transitional message_var cpp 2 src moos transitional message_var_float cpp 2 src moos transitional message_xml_callbacks cpp 2 src moos transitional queue_xml_callbacks cpp 2 src pb application cpp 22 src pb iridium_driver cpp 22 src pb iridium_driver_fsm cpp 22 src pb pb_modem_driver cpp 22 src pb protobuf_node cpp 2 src pb rudics_packet cpp 2 src test acomms amact test cpp 2 src test acomms bitset1 test cpp 2 src test acomms dccl1 test cpp 2 src test acomms dccl10 test cpp 2 src test acomms dccl2 test cpp 2 src test acomms dccl3 test cpp 2 src test acomms dccl4 test cpp 2 src test acomms dccl6 test cpp 2 src test acomms dccl7 test cpp 2 src test acomms d
50. current UTC time as seconds and fractional seconds since 1970 01 01 00 00 00 template lt gt boost posix_time ptime goby_time lt boost posix_time ptime gt template lt gt std string goby_time lt std string gt Returns current UTC time as a human readable string std string goby_time_as_string const boost posix_time ptime amp t goby_time Simple string representation of goby_time std string goby_file_timestamp ISO string representation of goby_time boost posix_time ptime time_t2ptime std time_t t convert to ptime from time_t from time h whole seconds since UNIX std time_t ptime2time_t boost posix_time ptime t convert from ptime to time_t from time h whole seconds since UNIX double time_duration2double boost posix_time time_duration time_of_day time duration to double number of seconds good to the microsecond Detailed Description Utility objects for performing functions such as logging non acoustic communication ethernet serial time scien tific string manipulation etc Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 4 goby common tcolor Namespace Reference 89 16 4 goby common tcolor Namespace Reference Contains functions for adding color to Terminal window streams Functions e std ostream amp add_escape_code std ostream amp os const std string amp esc_code e std ostream red std ostream amp os All text following this manipula
51. defines a DCCL value Definition at line 38 of file message_val h 17 42 2 Member Function Documentation 17 42 2 1 bool goby transitional DCCLMessageVal get std string amp s const extract as std string all reasonable casts are done Parameters s std string to store value in Returns successfully extracted and if necessary successfully cast to this type Definition at line 129 of file message_val cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 42 goby transitional DCCLMessageVal Class Reference 175 17 42 2 2 bool goby transitional DCCLMessageVal get bool amp b const extract as bool all reasonable casts are done Parameters b bool to store value in Returns successfully extracted and if necessary successfully cast to this type Definition at line 160 of file message_val cpp 17 42 2 3 bool goby transitional DCCLMessageVal get long amp t const extract as long all reasonable casts are done Parameters long to store value in Returns successfully extracted and if necessary successfully cast to this type Definition at line 192 of file message_val cpp 17 42 2 4 bool goby transitional DCCLMessageVal get double amp d const extract as double all reasonable casts are done Parameters d double to store value in Returns successfully extracted and if necessary succ
52. ee Re ee A 149 17 28 2 Member Function Documentation a a aoaaa a a 150 17 29goby acomms ModemDriverBase Class Reference ooo a 150 17291 Detailed Description lt oc too s gcosa moit oa areon mm e a ee eee a 152 17 29 2 Member Function Documentation a a o aooaa a 152 11293 Member Data DOCUINGNIANON s s a sa s aeos ad g eee AR d a ee Re 154 17 30goby acomms QueueException Class Reference ooo a 155 17 301 Detailed Descnplhon s pa scie saoi mce A A A 155 17 31 goby acomms QueueManager Class Reference oaoa a 156 17911 Detailed Deschpioh lt gore ad A d e p a 158 17 31 2 Member Function Documentation a a aooaa a 158 1731 3 Member Data Documentation lt se ce a e swa aa sa pd taa ee ew ee 160 17 32goby common Colors Struct Reference a 161 17321 Detaled Descriptio oo moe ke e aioe a A aka A A a dB 161 17 33goby common ConfigException Class Reference ooo a 162 17 33 1 Detailed Descriplion gt s sa c sup bon ra RA a e EUa d a ae da aa 162 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen CONTENTS vi 17 34goby common FlexNCurses Class Reference 2 2 0 0 ee ee 162 1734 1 Detailed DESCAQUOT lt e Re a A RR A ea E A 163 17 35goby common FlexOstream Class Reference a a a 163 17 391 Detailed Descnplhon 2 ac hae ba Bae a E a RG ee EER a 164 17 35 2 Member Function Documentation co co 2 a 164 17 36goby common FlexOStreamBuf Clas
53. effectively bypasses the queue and forwards the modem s data request to the application layer Use this for sending highly time sensitive data which needs to be encoded immediately prior to sending Set the encode_on_demand option to true for that particular Protobuf message and if desired change the on_demand_skew_seconds You must also connect a slot that will be executed each time data is requested to the signal goby acomms Queue Manager signal_data_on_demand Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 4 Example messages 28 4 3 3 Operation At this point the goby acomms QueueManager is ready to use At the application layer new messages are pushed to the queues for sending using goby acomms QueueManager push_message Each queue is identified by its DCCL Protobuf name At the driver layer messages are requested using goby acomms QueueManager handle_modem_data_request and incoming messages including acknowledgments are published using goby acomms QueueManager handle _modem_receive If using the goby acomms drivers i e some class derived from goby acomms ModemDriver Base simply call goby acomms bind ModemDriverBase amp QueueManager amp and these methods slots will be invoked automatically from the proper driver signals You must run goby acomms QueueManager do_work regularly faster than 1 Hz 10 Hertz is good to process expired messages goby acomms QueueManager signal_
54. get information on Use google protobuf Message GetDescriptor or My ProtobufType descriptor to get this object part the part of the Message to act on Definition at line 289 of file dccl_field_codec cpp 17 13 2 9 void goby acomms DCCLFieldCodecBase base_max_size unsigned x bit_size const google protobuf Descriptor desc MessageHandler MessagePart part Calculate the maximum size of a message given its Descriptor alone no data Parameters bit_size Pointer to unsigned integer to store calculated maximum size in bits desc Descriptor to calculate the maximum size of Use google protobuf Message GetDescriptor or MyProtobufType descriptor to get this object part part of the Message Definition at line 202 of file dccl_field_codec cpp 17 13 2 10 void goby acomms DCCLFieldCodecBase base_min_size unsigned x bit_size const google protobuf Descriptor x desc MessageHandler MessagePart part Calculate the minimum size of a message given its Descriptor alone no data Parameters bit_size Pointer to unsigned integer to store calculated minimum size in bits desc Descriptor to calculate the minimum size of Use google protobuf Message GetDescriptor or MyProtobufType descriptor to get this object part part of the Message Definition at line 232 of file dccl_field_codec cpp 17 13 2 11 void goby acomms DCCLFieldC
55. goby acomms protobuf ModemTransmission DRIVER_SPECIFIC mac back SetExtension micromodem protobuf type micromodem protobuf MICROMODEM_REMUS_LBL_RANGING 7 must call update after manipulating MACManager before calling do_work again mac update Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 2 acomms chat chat cpp 188 Jf 6 Run it for 77 mac do_work usleep 100000 return 0 void init_transmission const goby acomms protobuf ModemTransmission amp msg std cout lt lt starting transmission with these values lt lt msg lt lt std endl 19 2 acomms chat chat cpp usage connect two modems and then run gt chat dev tty_modem_A 1 2 log_file_A gt chat dev tty_modem_B 2 1 log_file_B type into a window and hit enter to send a message and sent on a fixed rotating cycle include lt iostream gt include goby acomms dccl h include goby acomms queue h include goby acomms modem_driver h include goby acomms amac h include goby acomms bind h include goby util as h include goby common time h include chat pb h include lt boost lexical_cast hpp gt include chat_curses h using goby util as using goby common goby_time int startup_failure void received_data const google protobuf Message amp void received_ack const goby acomms protobuf ModemTran
56. goby acomms DCCLDefaultBytesCodec Class Reference o e 105 16 1 Detailed Pesci lt s roca oet ra A e AR A ee A 106 17 7 goby acomms DCCLDefaultEnumCodec Class Reference 0 o e 106 17 221 Detailed Desctetion coos a cc 50862 ae eb ees RA A 107 17 8 goby acomms DCCLDefaultldentifierCodec Class Reference 0 107 1761 Detailed Desc s oa 0084608 Pee Path baer Peete 108 17 8 2 Member Function Documentation e e eee es 108 17 9 goby acomms DCCLDefaultMessageCodec Class Reference 0 a 110 118 1 Detailed Descrpll n ss e a e a ete 110 17 10goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt Class Template Reference1 11 17 10 1 Detailed Description lt lt a ee oso error bee ad ede be hw 112 17 10 2 Member Function Documentation 0 0 a ee 112 17 11 goby acomms DCCLDefaultStringCodec Class Reference o e 113 12 111 Detailed DSscretion i soes gee ai ER hE ak E a eae wale Wek 113 17 12goby acomms DCCLException Class Reference 0000 eee eee 114 1121 Detaled Descriptio csm ee ee A a hak Se RA he ee dh ae 114 17 13goby acomms DCCLFieldCodecBase Class Reference 114 11 131 Detailed Descrption os so L222 BRAG BRE SG ewe ra a da A 118 17 13 2 Member Function Documentation 2 2 e a 118 17 14goby acomms DCCLFieldCodecManager Class Referenc
57. goby acomms MACManager update before the next call to goby acomms MACManager do_work See amac_simple cpp for a basic complete example 6 goby acomms modemdriver Driver to interact with modem firmware Table of contents for modemdriver Abstract class ModemDriverBase Protobuf Message goby acomms protobuf ModemTransmission e Writing a new driver e WHOI Micro Modem Driver MMDriver Return to goby acomms An overview of Acoustic Communications Library 6 1 Abstract class ModemDriverBase goby acomms ModemDriverBase defines the core functionality for an acoustic modem It provides A serial or serial like over TCP reader writer This is an instantiation of an appropriate derivative of the goby util LineBasedInterface class which reads the physical interface serial or TCP to the acous tic modem The data assumed to be ASCII lines offset by a delimiter such as NMEA0183 or the Hayes command set AT are read into a buffer for use by the goby acomms ModemDriverBase derived class e g goby acomms MMDriver The type of interface is configured using a goby acomms protobuf Driver Config The modem is accessed by the derived class using goby acomms ModemDriverBase modem _ start goby acomms ModemDriverBase modem_read goby acomms ModemDriverBase modem_write and goby acomms ModemDriverBase modem_close e Signals to be called at the appropriate time by the derived class At the application layer
58. gt Base class for repeated multiple value static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire Use DCCLTypedFieldCodec if your fields are always singular optional or required Singular fields are default implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector Template Parameters WireType the type used for the encode and decode functions This can be any C type and is often the same as FieldType unless a type conversion should be performed The reason for using a different Wire Type and Field Type should be clear from the DCCLDefaultEnum Codec which uses DCCLDefaultNumericFieldCodec to do all the numerical encoding decoding while DCCLDefaultEnumCodec does the type conversion pre_encode and post_decode Field Type the type used in the Google Protobuf message that is exposed to the end user DCCL Codec decode DCCLCodec encode etc functions Definition at line 199 of file dccl_field_codec_typed h 17 17 2 Member Function Documentation 17 17 21 template lt typename WireType typename FieldType WireType gt virtual WireType goby acomms D CCLRepeatedTypedFieldCodec lt WireType FieldType gt decode Bitset x bits inline virtual Decode a field If
59. in the child class include lt goby acomms dccl dccl_field_codec_typed h gt Inheritance diagram for goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable _if lt boost is_same lt WireType FieldType gt gt type gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt Wire Type FieldType typename boost disable_if lt boost is same lt Wrelype FieldType gt gt itype gt Protected Member Functions e virtual WireType pre_encode const FieldType amp field_value 0 Convert from the FieldType representation used in the Google Protobuf message to the WireType representation used with encode and decode i e on the wire e virtual FieldType post_decode const WireType amp wire_value 0 Convert from the WireType representation used with encode and decode i e on the wire to the FieldType representation used in the Google Protobuf message Additional Inherited Members 17 16 1 Detailed Description template lt typename WireType typename FieldType gt class goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt If WireType FieldType adds some more pure virtual methods to handle the type conversions pre_encode and post_decode If WireType FieldType this class is not inherited and this pure virtual methods do not exist and thus
60. lt goby uint32 goby uint32 gt 128 goby acomms DCCLTypedFieldCodec lt goby uint32 goby uint32 gt 137 goby acomms DCCLTypedFixedFieldCodec lt goby uint32 gt 140 goby acomms DCCLFieldCodecSelector lt int32 const google protobuf EnumValue Descriptor gt 128 goby acomms DCCLTypedFieldCodec lt int32 const google protobuf EnumValue Descriptor gt 137 goby acomms DCCLTypedFixedFieldCodec lt int32 const google protobuf Enum ValueDescriptor x gt 140 goby acomms DCCLDefaultNumericFieldCodec lt int32 const google protobuf EnumValueDescriptor x gt 111 goby acomms DCCLDefaultEnumCodec 106 goby acomms DCCLFieldCodecSelector lt int32 TimeType gt 128 goby acomms DCCLTypedFieldCodec lt int32 TimeType gt 137 goby acomms DCCLTypedFixedFieldCodec lt int32 TimeType gt 140 goby acomms DCCLDefaultNumericFieldCodec lt int32 TimeType gt 111 goby acomms DCCLTimeCodec lt TimeType gt 135 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 12 1 Class Hierarchy 62 goby acomms DCCLFieldCodecSelector lt Model value_type const google protobuf Enum ValueDescriptor x gt 128 goby acomms DCCLTypedFieldCodec lt Model value type const google protobuf EnumValueDescriptor x gt 137 goby acomms DCCLRepeatedTypedFieldCodec lt Model value_type const google protobuf EnumValueDescriptor gt 130 goby acomms DCCLFieldCodecSelector lt Model value_
61. moos_translator h 22 goby moos moos_ufield_sim_driver h 22 goby moos frontseat frontseat h 22 goby moos frontseat frontseat_exception h 22 goby moos frontseat bluefin bluefin h 22 goby moos frontseat bluefin bluefin pb h 22 goby moos frontseat bluefin bluefin proto 22 goby moos frontseat bluefin bluefin_config pb h 22 22 goby moos frontseat bluefin bluefin_config proto Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby moos transitional message_val h 14 1 File List 72 goby moos protobuf bluefin_driver pb h 22 goby moos protobuf bluefin_driver proto 22 goby moos protobuf ctd_sample pb h 22 goby moos protobuf ctd_sample proto 2 goby moos protobuf desired_course pb h 22 goby moos protobuf desired_course proto 2 goby moos protobuf frontseat pb h 22 goby moos protobuf frontseat proto 2 goby moos protobuf frontseat_config pb h 22 goby moos protobuf frontseat_config proto 22 goby moos protobuf goby_moos_app pb h 22 goby moos protobuf goby_moos_app proto 2 goby moos protobuf liaison_config pb h 22 goby moos protobuf liaison_config proto 22 goby moos protobuf modem_id_lookup pb h 22 goby moos protobuf modem_id_lookup proto 2 goby moos protobuf node_status pb h 2 goby moos protobuf node_status proto 2 goby moos protobuf pAcommsHandler_config pb h 22 goby moos protobuf pAcommsHandler_config proto 22 goby moos protobuf transitional pb h 22 goby moos protobuf transitional proto 22 goby moos protobuf translator pb h 2
62. or slotting Networks with multiple frequency bands will have to employ a different MAC scheme or augment amac for the frequency division multiple access FDMA scenario The Goby AMAC provides two basic types of TDMA e Decentralized Each node initiates its own transaction at the appropriate time in the TDMA cycle This requires reasonably well synchronized clocks any skew must be included in the time of the slot as a guard so skews of less than 0 1 seconds are generally acceptable e Centralized also called polling For legacy support polling is also provided This is a TDMA enforced by a central computer the poller The poller sends a request for data from a list of nodes in sequential order The advantage of polling is that synchronous clocks are not needed and the MAC scheme can be changed on short notice by the topside operator Clearly this only works with modem hardware capable of third party mediation of transmission such as the WHOI Micro Modem Detailed documentation for goby acomms amac Medium Access Control 2 6 Software concepts used in goby acomms 2 6 1 Signal Slot model for asynchronous events The layers of goby acomms use a signal slot system for asynchronous events such as receipt of an acoustic message Each signal can be connected goby acomms connect to one or more slots which are functions or member functions matching the signature of the signal When the signal is emitted the slots are
63. or user defined encoder This allows the codecs to be matched to the data s physical origins and thus make the most of the limited throughput available by making very small encoded messages Detailed documentation for goby acomms DCCL Dynamic Compact Control Language 2 3 queue Priority based message queuing The goby acomms queuing queue component interacts with both the application level process and the modem driver process that talks directly to the modem On the application side queue provides the ability for the application level process to push DCCL messages to various queues and receive messages from a remote sender that correspond to messages in the same queue e g you have a queue for STATUS_MESSAGE that you can push messages to you and also receive other STATUS_ MESSAGEs on The push feature is called by the application level process and received messages are signaled to all previous bound slots see Signal Slot model for asynchronous events Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 4 modemdriver Modem driver 7 On the driver side queue provides the modem driver with data upon request It chooses the data to send based on dynamic priorities and several other configuration parameters It will also pack as many messages from the user into a single frame from the modem as possible using the DCCLCodec s repeated encoding functionality Note however that queue will not split a use
64. proto html extensions to DriverContfig to handle modem specific configuration Implements goby acomms ModemDriverBase Definition at line 54 of file moos_bluefin_driver cpp The documentation for this class was generated from the following files goby moos moos_bluefin_driver h src moos moos_bluefin_driver cpp 17 40 goby moos UFidDriver Class Reference provides an simulator driver to the uUFldNodeComms MOOS module http oceanai mit edu moos ivp pmwiki pmwi php n Modules UF1dNodeComms include lt goby moos moos_ufield_sim_driver h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 40 goby moos UFIdDriver Class Reference 170 Inheritance diagram for goby moos UFldDriver goby acomms ModemDriverBase goby moos UFldDriver Public Member Functions e void startup const goby acomms protobuf DriverConfig amp cfg Starts the modem driver Must be called before poll e void shutdown Shuts down the modem driver e void do_work Allows the modem driver to do its work e void handle_initiate_transmission const goby acomms protobuf ModemTransmission gm Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Additional Inherited Members 17 40 1 Detailed Description provides an simulator driver to the uUFldNodeComms MOOS module http oceanai mit edu moos ivp pmwiki pmwi php n Module
65. protobuf Message root_message e static MessageHandler MessagePart part the part of the message currently being encoded head or body 17 13 1 Detailed Description Provides a base class for defining DCCL field encoders decoders Most users will use the DCCLTypedFieldCodec or its children e g DCCLTypedFixedFieldCodec instead of directly inheriting from this class Definition at line 55 of file dccl_field_codec h 17 13 2 Member Function Documentation 17 13 2 1 virtual void goby acomms DCCLFieldCodecBase any decode Bitset x bits boost any wire_value protected pure virtual Virtual method used to decode Parameters bits Bitset containing bits to decode This will initially contain min_size bits If you need more bits call get_more_bits with the number of bits required This bits will be consumed from the bit pool and placed in bits wire_value Place to store decoded value as FieldType 17 13 2 2 virtual void goby acomms DCCLFieldCodecBase any_encode Bitset x bits const boost any amp wire_value protected pure virtual Virtual method used to encode Parameters bits Bitset to store encoded bits Bits is just the bits from the current operation unlike base_ encode and field_encode where bits are added to the most significant end wire_value Value to encode WireType 17 13 2 3 virtual void goby acomms DCCLFieldCodecBase any _p
66. push Examples acomms chat chat cpp and acomms queue queue_simple queue_simple cpp Definition at line 132 of file queue_manager cpp 17 31 3 Member Data Documentation 17 31 3 1 boost signals2 signal lt void const protobuf ModemTransmission amp ack_msg const google protobuf Message amp orig_msg gt goby acomms QueueManager signal_ack Signals when acknowledgment of proper message receipt has been received This is only sent for queues with queue ack true with an explicit destination ModemMessageBase dest 0 Parameters ack_msg a message containing details of the acknowledgment and the acknowledged transmission protobuf ModemMsgAck is defined in acomms_modem_message proto Examples acomms chat chat cpp Definition at line 191 of file queue_manager h 17 31 3 2 boost signals2 signal lt void const protobuf ModemTransmission amp request_msg google protobuf Messagex data_msg gt goby acomms QueueManager signal_data_on_demand Forwards the data request to the application layer This advanced feature is used when queue encode_on_demand true and allows for the application to provide data immediately before it is actually sent for highly time sensitive data Parameters request_msg the details of the requested data protobuf ModemDataRequest is defined in acomms_ modem_message proto data_msg pointer to store the supplied data The messag
67. push_back slot 3 gt 1 0 wait 10 a ot set_rate 5 mac push_back slot 3 gt 1 5 wait 10 slot set_src 4 slot set_rate 0 mac push_back slot 4 gt 1 0 wait 10 mac update important call update after any modifying changes to the MACManager underlying std list goby acomms protobuf MAC_POLLED On the vehicles you do not need to run the goby acomms MAC Manager at all or simply give it the do nothing goby acomms protobuf MAC_NONE type All the MAC is done on the topside the centralized poller On the poller you need to manually set up a list of vehicles to be polled by adding an goby acomms protobuf Slot in the initial goby acomms protobuf MACConfig object or at runtime via goby acomms MACManager add_slot for each vehicle to be polled You can poll the same vehicle multiple times just add more goby acomms protobuf Slot objects corresponding to that vehicle Each slot has a source destination rate type data or ping not yet implemented and length in seconds If the source is the poller you can set the destination to goby acomms QUERY_DESTINATION _ID 1 to let queue determine the next destination based on the highest priority message to send All goby acomms protobuf Slot objects for vehicles must have a specified destination the goby acomms BR OADCAST_ID is a good choice or the id of the poller For example poll ourselves for commands
68. std cout lt lt received hexadecimal string lt lt goby util hex_encode bytes lt lt std endl message Clear j input contents right back to decoder std cout lt lt passed hexadecimal string to decoder lt lt goby util hex_encode bytes lt lt std endl dccl gt decode bytes amp message std cout lt lt received message lt lt message lt lt std endl return 0 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 4 acomms dccl two_message two_ message cpp 192 19 4 acomms dccl two message two message cpp two_message proto import goby acomms protobuf dccl_option_extensions proto message GoToCommand option dccl msg id 125 option dccl msg max_bytes 32 required int32 destination 1 dccl field max 31 dccl field min 0 dccl field precision 0 optional string type 2 dccl field static_value goto required int32 goto_x 3 dccl decl decl required int32 goto_y 4 dccl decl decl required bool lights_on 5 required string new_instructions dccl field codec _static field max 10000 field min 0 field precision 0 field max 10000 field min 0 field precision 0 6 dccl field max_length 10 required double goto_speed 7 dccl field max 3 dccl field min 0 dccl field precision 2 message VehicleStatus option dccl msg id 126 opti
69. std string std goby acomms DCCLIypedField goby acomms DCCLDefault y e string gt Codec lt std string gt BytesCodec goby acomms DCCLFeldCodec goby acomms DCCLypedField Le Selector lt T T gt Codec lt T T gt goby acomms DCCLIypedField goby acomms DCCLFieldCodec Codec lt uint32 gt Selector lt uint32 uint32 gt goby acomms DCCLFieldCodec goby acomms DCCLypedField Selector lt uint64 uint64 gt Codec lt uint32 uint32 gt goby acomms DCCLFieldCodec goby acomms DCCLiypedField Selector lt WireType FieldType gt Codec lt uint64 uint64 gt goby acomms DCCLDefault goby acomms DCCLIypedField MessageCodec Codec lt WireType FieldType gt goby acomms DCCLFieldCodec Selector lt WreType FieldType Enable gt goby acomms DCCLFeldCodec Selector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt Public Member Functions Constructor Destructor e DCCLFieldCodecBase e virtual DCCLFieldCodecBase Base message functions These are called typically by DCCLCodec to start processing a new message In this example Foo code message Foo int32 bar 1 FooBar baz 2 e void base_encode Bitset bits const google protobuf Message amp msg MessageHandler MessagePart part Encode this part body or head of
70. the following file Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 39 goby moos BluefinCommsDriver Class Reference 168 goby common exception h 17 39 goby moos BluefinCommsDriver Class Reference provides a driver for the Bluefin Huxley communications infrastructure initially uses SonarDyne as underlying hard ware include lt goby moos moos_bluefin_driver h gt Inheritance diagram for goby moos BluefinCommsDriver goby acomms ModemDriverBase goby moos BluefinComms Driver Public Member Functions e BluefinCommsDriver goby acomms MACManager mac e void startup const goby acomms protobuf DriverConfig amp cfg Starts the modem driver Must be called before poll e void shutdown Shuts down the modem driver void do_work Allows the modem driver to do its work e void handle_initiate_transmission const goby acomms protobuf ModemTransmission gm Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Additional Inherited Members 17 39 1 Detailed Description provides a driver for the Bluefin Huxley communications infrastructure initially uses SonarDyne as underlying hard ware Definition at line 47 of file moos_bluefin_driver h 17 39 2 Member Function Documentation 17 39 2 1 void goby moos BluefinCommsDriver do_work virtual Allows the modem driver to do its work Generated on We
71. typename FieldType WireType gt virtual unsigned goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt max_size inline virtual Calculate maximum size of the field in bits Returns Maximum size of this field in bits Implements goby acomms DCCLFieldCodecBase Definition at line 263 of file dccl_field_codec_typed h 17 17 2 5 template lt typename WireType typename FieldType WireType gt virtual unsigned goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt min size inline virtual Calculate minimum size of the field in bits Returns Minimum size of this field in bits Implements goby acomms DCCLFieldCodecBase Definition at line 266 of file dccl_field_codec_typed h 17 17 2 6 template lt typename WireType typename FieldType WireType gt virtual unsigned goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt size inline virtual Calculate the size in bits of an empty field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 18 goby acomms DCCLStaticCodec lt T gt Class Template Reference 135 Returns the size in bits of the empty field Implements goby acomms DCCLTypedFieldCodec lt WireType Field Type gt Definition at line 253 of file dccl_field_codec_typed h 17 17 2 7 template lt typename WireType typename FieldType WireType gt virtual unsigned goby acomms DCCL RepeatedTypedFieldCod
72. util linebasedcomms tcp_client cpp 2 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 15 1 API classes for the Dynamic Compact Control Language includes writing custom encoders 80 15 1 API classes for the Dynamic Compact Control Language includes writing custom encoders Collaboration diagram for API classes for the Dynamic Compact Control Language includes writing custom encoders API classes for the API classes for the a i x major components of Dynamic Compact Control _goby acomms DCCLCodec the Goby Acomms acoustic Language includes writing communications libra custom encoders y DCCL Queue AMAC ModemDriver Classes class goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Base class for static typed field encoders decoders that use a fixed number of bits on the wire regardless of the value of the field Use DCCL TypedFieldCodec if your encoder is variable length See DCCL TypedFieldCodec for an explanation of the template parameters Field Type and Wire Type class goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Base class for static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCL TypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire class goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Ba
73. v2 by Doxygen 17 29 goby acomms ModemDriverBase Class Reference 151 17 28 2 Member Function Documentation 17 28 2 1 void goby acomms MMDriver startup const protobuf DriverConfig amp cfg virtual Starts the driver Parameters cfg Configuration for the Micro Modem driver DriverConfig is defined in acomms_driver_base proto and various extensions specific to the WHOI Micro Modem are defined in acomms_ mm_driver proto Implements goby acomms ModemDriverBase Examples acomms chat chat cpp Definition at line 80 of file mm_driver cpp The documentation for this class was generated from the following files goby acomms modemdriver mm_driver h src acomms modemdriver mm_driver cpp 17 29 goby acomms ModemDriverBase Class Reference provides an abstract base class for acoustic modem drivers This is subclassed by the various drivers for different manufacturers modems include lt goby acomms modem_driver h gt Inheritance diagram for goby acomms ModemDriverBase goby acomms ABCDriver goby acomms MMDriver goby moos BluefinComms Driver goby moos UFldDriver goby acomms ModemDriverBase Public Member Functions e virtual ModemDriverBase Public Destructor Control Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 29 goby acomms ModemDriverBase Class Reference 152 e virtual void startup const protobuf DriverConfig a
74. 000 hh ll Fh oil Fh 00 H oO Fh I H oO 14 dccl field max_length 8 deccl field max_length 9 17 dccl field min 100 ield max 126 ield precision 2 ield in_head true dccl field min 20 ield max 150 ield precision 3 dccl field min 20 field max 3000 dccl field min 710 field max 3000 25 dccl field min 0 field max 3000 26 dccl field min 5 field max 3000 27 dccl field min 60 field max 3000 28 dccl field min 70 Mh FH HDN Fh Fh 29 dccl field min 0 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 18 deccl field max 400 required fixed64 fixed64_default_required 30 dccl field min 0 dccl field max 3000 required sfixed32 sfixed32_default_required 31 dccl field min 11 dccl field max 3000 required sfixed64 sfixed64_default_required 32 dccl field min 120 dccl field max 3000 required bool bool_default_required 33 required string string_default_required 34 dccl field max_length 8 required bytes bytes_default_required 35 dccl field max_length 9 required Enuml enum_default_required 36 required EmbeddedMsgl msg_default_required 37 repeated double double_default_repeat 101 dccl field min 0 dccl field max 100 dccl field precision 3 dcecl field
75. 1 49 for Goby v2 by Doxygen 17 12 goby acomms DCCLException Class Reference 115 length of following string 1 byte string 0 255 bytes Definition at line 184 of file dccl_field_codec_default h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_default h src acomms dccl dccl_field_codec_default cpp 17 12 goby acomms DCCLException Class Reference Exception class for libdccl include lt goby acomms dccl dccl_exception h gt Inheritance diagram for goby acomms DCCLException goby Exception goby acomms DCCLException Public Member Functions e DCCLException const std string amp s 17 12 1 Detailed Description Exception class for libdccl Definition at line 35 of file dccl_exception h The documentation for this class was generated from the following file goby acomms dccl dccl_exception h 17 13 goby acomms DCCLFieldCodecBase Class Reference Provides a base class for defining DCCL field encoders decoders Most users will use the DCCLTypedFieldCodec or its children e g DCCLTypedFixedFieldCodec instead of directly inheriting from this class include lt goby acomms dccl dccl_field_codec h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 116 Inheritance diagram for goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selecto
76. 1 Designing a message o o co g be ke o a Bee ee ee 9 Se IDCOLIPMOIOBUPORUONS cns o ca ee EO ee eG he a bee Baws 12 3 interacting with ihe DOCLCodec o saas be we eR a daa 13 OM ENGO o o erona cak e mok a a e a e eee eee ed 14 a Exampe messages caia A a rd dA 14 3 5 1 Minimal functional DCCL Message ee 14 3 5 2 Two Message example ccsa oe sa correrse rd e a a ea 15 3 5 3 DCCL Test2 showing an embedded message encoded by a custom non default codec 18 geet o II 18 goo BOOL TES cisnes vi ia Aa PE SAS Sots 19 306 DOCU TS ima ll eee A a Ra AA oS 19 See DEOL ANA ae Se Ga 20 das DOOL TST rrp acd Bae we aes Sate Ysa BES a ed ee O da 20 Set DUCL Testes a age se Gp es ws Boar ah Do ig we Sper A Eth A Bares eG 21 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen CONTENTS ii Sa lO DOOL TES seek bee Pee vee GR REEL ERE ER ee RR a eed Aw 21 4 goby acomms queue Message Priority Queuing 22 4 1 Understanding dynamic priority queuing 2 a 22 4 2 Queuing Prolobut QUOS co ek eae aa g Bok we a be ee Pek ae we eS 23 4 3 Interacting with the QueueManager 00 26 431 instantiate and CONQUE so s eee ee ee ae ee ea ke we ha Or eS 26 4 3 2 Signals and application layer slots 0 0 00002 eee ee eee 26 Aso AAA 27 dA Example messages oce da i a ee a eo ee Be a es ee 27 4 4 1 Minimal functional DCCL Queue message o e e e o 27 HAD E iiae iak e b
77. 11 of file dccl cpp 17 4 2 17 void goby acomms DCCLCodec validate_repeated const std list lt const google protobuf Descriptor x gt amp descs Shortcut for validating multiple messages at once Exceptions DCCLException if message s are invalid Parameters descs list of Google Protobuf Descriptors to validate See Also test acomms dccl4 test cpp and test acomms dccl4 test proto Definition at line 424 of file dccl cpp The documentation for this class was generated from the following files goby acomms dccl dccl h src acomms dccl dccl cpp 17 5 goby acomms DCCLDefaultBoolCodec Class Reference Provides a bool encoder Uses 1 bit if field is requirea 2 bits if optional include lt goby acomms dccl dccl_field_codec_default h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 6 goby acomms DCCLDefaultBytesCodec Class Reference 106 Inheritance diagram for goby acomms DCCLDefaultBoolCodec goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt bool bool gt goby acomms DCCLlypedField Codec lt bool bool gt goby acomms DCCLlypedFixed FieldCodec lt bool gt goby acomms DCCLDefault BoolCodec Additional Inherited Members 17 5 1 Detailed Description Provides a bool encoder Uses 1 bit if field is required 2 bits if optional presence bit 0 bits if required 1 bit if optional value 1 bit
78. 13 2 6 void goby acomms DCCLFieldCodecBase base decode Bitset bits google protobuf Message msg MessageHandler MessagePart part Decode part of a message Parameters bits Pointer to a Bitset containing bits to decode The least significant bits will be consumed first Any bits not consumed will remain in bits after this method returns msg DCCL Message to merge the decoded result into part part of the Message to decode Definition at line 130 of file dccl_field_codec cpp 17 13 2 7 void goby acomms DCCLFieldCodecBase base_encode Bitset bits const google protobuf Message amp msg MessageHandler MessagePart part Encode this part body or head of the base message Parameters bits pointer to a Bitset where all bits will be pushed on to the most significant end msg DCCL Message to encode part Part of the message to encode Definition at line 45 of file dccl_field_codec cpp 17 13 2 8 void goby acomms DCCLFieldCodecBase base_info std ostream x os const google protobuf Descriptor desc MessageHandler MessagePart part Get human readable information size of fields etc about this part of the DCCL message Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 121 Parameters OS Pointer to stream to store this information desc Descriptor to
79. 2 goby moos protobuf translator proto 22 goby moos protobuf ufield_sim_driver pb h 22 goby moos protobuf ufield_sim_driver proto 22 goby moos transitional dccl_constants h 2 goby moos transitional dccl_transitional h 22 goby moos transitional message h 22 goby moos transitional message_algorithms h 22 goby moos transitional message_publish h 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby pb protobuf iridium_driver pb h 14 1 File List 73 goby moos transitional message_var h 22 goby moos transitional message_var_bool h 22 goby moos transitional message_var_enum h 22 goby moos transitional message_var_float h 22 goby moos transitional message_var_head h 22 goby moos transitional message_var_hex h 22 goby moos transitional message_var_int h 22 goby moos transitional message_var_static h 2 goby moos transitional message_var_string h 22 goby moos transitional message_xml_callbacks h 2 goby moos transitional queue_xml_callbacks h 22 goby moos transitional xml message_schema xsd h 2 goby moos transitional xml tags h 22 goby moos transitional xml xerces_strings h 22 goby moos transitional xml xml_parser h 22 goby pb application h 22 goby pb iridium_driver h 22 goby pb iridium_driver_fsm h 22 goby pb pb_modem_driver h 22 goby pb protobuf_node h 22 goby pb protobuf_pubsub_node wrapper h 22 goby pb rudics_packet h 22 goby pb subscription h 22 goby pb protobuf config pb h 22 goby pb protobuf config proto 22 go
80. 52 modem_read 153 modem _start 153 modem_write 153 signal_data_request 154 signal_modify_transmission 154 signal_raw_incoming 154 signal_raw_outgoing 154 signal_receive 154 signal_transmit_result 155 startup 153 goby acomms QueueException 155 goby acomms QueueManager 156 add_queue 158 flush_queue 158 handle_modem_data_request 158 handle_modem_receive 159 info 159 info_all 159 push_message 159 signal_ack 160 signal_data_on_demand 160 signal_expire 160 signal_queue_size_change 160 signal_receive 161 goby common 85 goby common Colors 161 goby common ConfigException 162 goby common FlexNCurses 162 goby common FlexOStreamBuf 164 goby common FlexOstream 163 add_group 164 goby common TermColor 165 goby common tcolor 88 add_escape_code 88 goby moos BluefinCommsDriver 167 do_work 167 handle_initiate_transmission 168 startup 168 goby moos UFldDriver 168 do_work 169 handle_initiate_transmission 169 startup 170 goby pb 89 goby pb Application 170 Application 171 subscribe 171 zeromq_service 171 goby transitional 89 AlgFunction1 91 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen INDEX 200 AlgFunction2 91 char_array2hex_string 92 DCCL_HEADER_NAMES 93 DCCLCppType 91 DCCLType 91 hex_string2binary_string 92 hex_string2number 92 number2hex_string 92 goby transitional DCCLMessageVal 172 get 173 174 operator bool 174 o
81. 7 45 goby util SerialClient Class Reference 180 Protected Member Functions e virtual void do_start 0 e virtual void do_write const protobuf Datagram amp line 0 e virtual void do_close const boost system error_code amp error 0 e void set_active bool active e std string amp delimiter e std deque lt goby util protobuf Datagram gt amp in e boost mutex amp in_mutex Protected Attributes e std string delimiter_ boost asio io_service io_service__ e std deque lt protobuf Datagram gt in_ boost mutex in_mutex_ Friends class LineBasedConnection 17 44 1 Detailed Description basic interface class for all the derived serial and networking mimics line based nodes serial tcp udp etc Definition at line 48 of file interface h 17 44 2 Member Function Documentation 17 44 2 1 bool goby util LineBasedinterface readline std string s AccessOrder order OLDEST_FIRST inline returns string line including delimiter Returns true if data was read false if no data to read Definition at line 68 of file interface h The documentation for this class was generated from the following files e goby util linebasedcomms interface h e src util linebasedcomms interface cpp 17 45 goby util SerialClient Class Reference provides a basic client for line by line text based communications over a 8N1 tty such as an RS 232 serial link without flow control includ
82. 9 of file dccl_field_codec_fixed h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_fixed h 17 22 goby acomms DCCLTypeHelper Class Reference Provides FromProtoTypeBase and FromProtoCppTypeBase type identification helper classes for various represen tations of the underlying field include lt goby acomms dccl dccl_type_helper h gt Static Public Member Functions e static boost shared_ptr lt FromProtoTypeBase gt find google protobuf FieldDescriptor Type type e static boost shared_ptr lt FromProtoCppTypeBase gt find const google protobuf FieldDescriptor field e static boost shared_ptr lt FromProtoCppTypeBase gt find const google protobuf Descriptor xdesc e static boost shared_ptr lt goby acomms FromProtoCppTypeBase gt find google protobuf FieldDescriptor CppType cpptype const std string amp type_name Friends class DCCLFieldCodecManager e template lt typename T gt void boost checked_delete T x 17 22 1 Detailed Description Provides FromProtoTypeBase and FromProtoCppTypeBase type identification helper classes for various represen tations of the underlying field Definition at line 45 of file dccl_type_helper h The documentation for this class was generated from the following files Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 23 goby acomms FromProtoCppType lt google protobuf Field
83. CACFG TAT if sent Coen ee CCPNT SNPNT type MICROMODEN a kej Always present req Often present typ Occasionally present advan NARROWBAND_LBL_ RANGING signal_receive Figure 7 Narrowband transponder LBL ping REMUS transponder LBL ping Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 49 ModemTransmission src 1 type MICROMODEM_REMUS_LBL_RANGING micromodem protobuf remus_lbl Ibl_max_range 1000 ModemTransmission src 1 time 1316033104000000 time_source MODEM_TIME type MICROMODEM_REMUS_LBL_RANGING micromodem protobuf ranging_reply one_way_travel_time 0 3216 one_way_travel_time 0 4920 one_way_travel_time 0 1541 one_way_travel_time 0 1226 Application or other Goby Modules ig a ae n WHOI Micro Modem Fi modemdriver1 1 initiate_transmission l signal_modify_transmission l E eF 1 modified transmission CCCFG TAT if needed CACFG TAT if sent a e l CCPDT l i gt l SNPDT i E A o teat eae i SNTTA type MICROMODEM_REMUS_LBL_RANGING signal_receive Figure 8 REMUS transponder LBL ping User mini packet 13 bit data transmission Key Always present required usag Often present typical usage Occasionally present advanced or spe Gene
84. Client const std string amp server unsigned port const std string amp delimiter r n int retry_interval 10 create a TCPClient Parameters server domain name or IP address of the remote server port port of the remote server delimiter string used to split lines Definition at line 29 of file tcp_client cpp The documentation for this class was generated from the following files goby util linebasedcomms tcp_client h e src util linebasedcomms tcp_client cpp 17 47 goby util TCPServer Class Reference provides a basic TCP server for line by line text based communications to a one or more remote TCP clients include lt goby util linebasedcomms tcp_server h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 47 goby util TCPServer Class Reference 183 Inheritance diagram for goby util TCPServer goby util LineBasedinterface goby util TCPServer Public Member Functions e TCPServer unsigned port const std string amp delimiter r n create a TCP server e std string local_endpoint string representation of the local endpoint e g 192 168 1 105 54230 e const std set lt boost shared_ptr lt TCPConnection gt gt amp connections Friends e class TCPConnection class LineBasedConnection lt boost asio ip tcp socket gt Additional Inherited Members 17 47 1 Detailed Description provides a basic TCP server for line
85. Constructors Destructor e MACManager Default constructor MACManager Control void startup const protobuf MACConfig amp cfg Starts the MAC with given configuration void restart Restarts the MAC with original configuration void shutdown Shutdown the MAC void do_work Allows the MAC timer to do its work Does not block If you prefer more control you can directly control the underlying boost asio io_service get_io_service instead of using this function This function is equivalent to get_io_service poll void update You must call this after any change to the underlying list that would invalidate iterators or change the size insert push_back erase etc bool running Modem Signals boost signals2 signal lt void const protobuf ModemTransmission amp m gt signal_initiate_transmission Signals when it is time for this platform to begin transmission of an acoustic message at the start of its TDMA slot Typically connected to ModemDriverBase handle_initiate_transmission using bind unsigned cycle_count double cycle_duration boost asio io_service get_io_service const std string glog_mac_group const Additional Inherited Members 17 27 1 Detailed Description provides an API to the goby acomms MAC library MACManager is essentially a std list lt protobuf Modem Transmission gt plus a timer See Also acomms_amac proto and acomms_modem
86. DCCLCodec DCCL Protobuf Options e Encryption e Example messages Return to goby acomms An overview of Acoustic Communications Library 3 1 Designing a message DCCL uses the Google Protocol Buffers Protobuf language to define messages DCCL specific components are defined as extensions to the Protobuf language message and field options You should familiarize yourself with basic Protobuf using before reading the rest of this document see Google Protocol Buffers and http code google com apis protocolbuffers docs overview html Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 1 Designing a message 11 Scenario 1 Send a string command to a vehicle We need to send an ASCII string command to an underwater vehicle We thus make a Protobuf message with a single string field let s call it telegram to hold our command message Simple required string telegram 1 The 1 indicates that this is the first field on the wire in our DCCL message All fields must have a unique index but otherwise these index values are not particularly important required means a valid Simple message always contains something for telegram could be an empty string To turn this Protobuf message into a DCCL message we need to add a few options All the options are defined in acomms_option_extensions proto so we include that import goby common protobuf option_extensions proto message Simple require
87. DCCLFieldCodecBase this_descriptor inline static Returns the Descriptor message schema meta data for the immediate parent Message for code message Foo int32 bar 1 FooBar baz 2 returns Descriptor for Foo if this_field 0 returns Descriptor for Foo if this_field FieldDescriptor for bar returns Descriptor for FooBar if this_field FieldDescriptor for baz Definition at line 99 of file dccl_field_codec h 17 13 2 34 const google protobuf FieldDescriptor goby acomms DCCLFieldCodecBase this_field const inline Returns the FieldDescriptor field schema meta data for this field Returns FieldDescriptor for the current field or 0 if this codec is encoding the base message Definition at line 83 of file dccl_field_codec h 17 13 2 35 google protobuf FieldDescriptor CppType goby acomms DCCLFieldCodecBase wire type const inline the C type used on the wire This is the type visible after pre_encode and before post_decode functions are called The wire type allows codecs to make type changes e g from string to integer before reusing another codec that knows how to encode that wire type e g DCCLDefaultNumericFieldCodec Returns the C type used to encode and decode See http code google com apis protocolbuffers docs refer protobuf descriptor html FieldDescriptor CppType details Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 14 goby acomms DCCL
88. Descriptor CPPTYPE_MESSAGE gt Class Template Reference 143 goby acomms dccl dccl_type_helper h e src acomms dccl dccl_type_helper cpp 17 23 goby acomms FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAGE gt Class Template Reference Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using the dynamic google protobuf Message as the underlying class include lt goby acomms dccl protobuf_cpp_type_helpers h gt Inheritance diagram for goby acomms FromProtoCppType lt google protobuf FieldDescriptor CPPT YPE_MESS AGE gt goby acomms FromProtoCpp TypeBase goby acomms FromProtoCpp Type lt google protobuf FieldDescriptor CPPTYPE _MESSAGE gt goby acomms FromProtoCustom Message lt CustomMessage gt Public Types e typedef const google protobuf Message const_type e typedef google protobuf Message mutable_type Public Member Functions e std string as_str string representation Protected Member Functions e virtual boost any _get_value const google protobuf FieldDescriptor field const google protobuf Message amp msg Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 24 goby acomms FromProtoCppTypeBase Class Reference 144 e virtual boost any _get_repeated_ value const google protobuf FieldDescriptor field const google protobuf Message amp msg int index e virtual void _set_value const google protobuf FieldDes
89. Destructor Documentation o e e 176 17 43 3 Member Function Documentation 0 00 e o 177 17 44goby util LineBasedInterface Class Reference o eee eee e 178 1744 1 Detailed Descriptio lt s o a A IR A a 179 17 44 2 Member Function Documentation oaaao 02 eee ee ees 179 17 45goby util SerialClient Class Reference oaoa ee 179 1745 1 Detailed DESIGN i eo o os aio d acs aioe noa oe eRe adoi i 180 17 45 2 Constructor amp Destructor Documentation a aa ea a 180 17 46goby util TCPClient Class Reference a 180 17 46 1 Detailed Description occiso A 181 17 46 2 Constructor amp Destructor Documentation o e e 181 17 47goby util TCPServer Class Reference o e eo 181 17 471 Detailed Desorption o nn ee eb ee PRL AEA aa bd E de wee 182 17 47 2 Constructor amp Destructor Documentation o o e e 182 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 1 Goby Underwater Autonomy Project 1 17 48Group Class Reference ee 183 11421 Detailed DESCAQUOT lt o soe sa ee ek A A 183 17 49GroupSetter Class Reference a 183 1749 1 Detailed Description lt pa o racs poca Re ae ee ke ee a ee eae 184 18 File Documentation 184 18 1 goby moos moos_protobuf_helpers h File Reference lt lt 184 18141 Detailed Descen
90. FG NVRAM setting stored internally CACLK Checked against system clock and if skew is unacceptable another CCCLK will be sent CADRQ Data request is anticipated from the CCCYC or CACYC and buffered Thus it is not translated into any of the Protobuf messages Control Computer to Modem CC CCTXD SRC goby acomms protobuf ModemTransmission src DEST goby acomms protobuf ModemTransmission dest A goby acomms protobuf ModemTransmission ack_requested HH HH goby acomms hex_encode goby acomms protobuf ModemTransmission frame n which n is an integer 0 1 2 corresponding to the Goby frame that this CCTXD belongs to Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 42 CCCYC Augment the ModemTransmission goby acomms protobuf ModemTransmission max_ frame_bytes 32 for Packet Type 0 64 for Packet Type 2 256 for Packet Type 3 or 5 goby acomms protobuf ModemTransmission max_ num_frames 1 for Packet Type 0 3 for Packet Type 2 2 for Packet Type 3 or 8 for Packet Type If ADR1 modem ID and frame_size lt max_frame_size buffer data for later CADRQ by passing the ModemTransmission to signal_data_request CMD 0 deprecated field ADR1 goby acomms protobuf ModemTransmission src ADR2 goby acomms protobuf ModemTransmission dest Packet Typ
91. FieldCodec 132 133 goby acomms DCCLTypedFieldCodec 138 encode_repeated goby acomms DCCLCodec 100 field_decode goby acomms DCCLFieldCodecBase 121 field_decode_repeated goby acomms DCCLFieldCodecBase 121 field_encode goby acomms DCCLFieldCodecBase 121 field_encode_repeated goby acomms DCCLFieldCodecBase 121 field_info goby acomms DCCLFieldCodecBase 122 field_max_size goby acomms DCCLFieldCodecBase 122 field_min_size goby acomms DCCLFieldCodecBase 122 field_post_decode goby acomms DCCLFieldCodecBase 122 field_post_decode_repeated goby acomms DCCLFieldCodecBase 122 field_pre_encode goby acomms DCCLFieldCodecBase 123 field_pre_encode_repeated goby acomms DCCLFieldCodecBase 123 field_size goby acomms DCCLFieldCodecBase 123 field_size_repeated goby acomms DCCLFieldCodecBase 123 field_type goby acomms DCCLFieldCodecBase 124 field_validate goby acomms DCCLFieldCodecBase 124 find goby acomms DCCLFieldCodecManager 127 flush_queue goby acomms QueueManager 158 get goby transitional DCCLMessageVal 173 174 get_repeat goby transitional DCCLTransitionalCodec 177 get_repeated_value goby acomms FromProtoCppTypeBase 144 get_value goby acomms FromProtoCppTypeBase 144 goby 80 run 82 goby moos moos_protobuf_helpers h 184 goby transitional cpp_bool 91 cpp_double 91 cpp_long 91 cpp_notype 91 cpp_string 91 dccl_bool 91 dccl_enum 91 dccl_float
92. FieldCodecManager Class Reference 127 Definition at line 77 of file dccl_field_codec h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec h src acomms dccl dccl_field_codec cpp 17 14 goby acomms DCCLFieldCodecManager Class Reference include lt goby acomms dccl dccl_field_codec_manager h gt Static Public Member Functions template lt class Codec gt static boost enable_if lt boost mpl and_ lt boost is_base_of lt google protobuf Message typename Codec wire_type gt boost mpl not_ lt boost is_same lt google protobuf Message typename Codec wire_type gt gt gt void gt type add const std string amp name Add a new field codec used for codecs operating on statically generated Protobuf messages that is children of google protobuf Message but not google protobuf Message itself e template lt class Codec gt static boost disable_if lt boost mpl and_ lt boost is_base_of lt google protobuf Message typename Codec wire_type gt boost mpl not_ lt boost is_same lt google protobuf Message typename Codec wire_type gt gt gt void gt type add const std string amp name Add a new field codec used for codecs operating on all types except statically generated Protobuf messages template lt class Codec google protobuf FieldDescriptor Type type gt static void add const std string
93. Goby v2 Generated by Doxygen 1 8 1 2 Wed Mar 26 2014 01 42 06 CONTENTS i Contents 1 Goby Underwater Autonomy Project 1 A IROSQUICHE bee bee PATER SESS OH ERE ETRE Lives 1 1 2 Developer Mantal ooo Sa a A ne Fe A me Ge Se ee A RR 1 ee IPUBNGADIONS a A A aa a A A A A 1 1 4 Download and Install GODY lt is s sos sc mox s o o 1 LS BOING EXamHPES oo a a ee a A BAe a aaea a Boe a a e a eee E E 2 Be AUS 24 ouda maed ar aa a e e G i 2 2 goby acomms An overview of Acoustic Communications Library 2 20 QUECASAS G 2 2 1 1 Acoustic Communications are slow o e e e 3 2 1 2 Efficiency to make messages small is good o a 4 2 1 3 Total throughput unrealistic prioritize data lt s eao aoso eee ee ee ee 4 2 1 4 Despite all this simplicity is good a aoa aoaaa 4 215 Component model seu e p ed iaie de aa oo eee AA E E 4 22 deck Encodinganddecoding cui a eee hee PL e ee es 5 2 3 queue Priority based message queuing aooaa a e e eo 5 2 4 modemdriver Modem driver lt ea ssa careca ea neede ritare yrt aite 6 2 5 amac Medium Access Control MAC aoaaa ee 6 2 6 Software concepts used in goby acomMmmS s aoso s oao o e e e ee ee 6 2 6 1 Signal Slot model for asynchronous events ooo e a a 6 26 2 Google Protocol Butlers o is a i acei iee ci Son apana E ai aaa i a AE A 7 ea UMTON oo oir A A o A a a ae ok A 8 3 goby acomms DCCL Dynamic Compact Control Language 9 3
94. HELM_ERROR INTERFACE_STANDBY HELM_DRIVE INTERFACE_FRONTSEAT_ERR OR INTERFACE_STANDBY if ERROR_FRONTSEAT_NOT_ CONNECTED IFRONTSEAT_NOT_CONNECT ED if ERROR_FRONTSEAT_NOT_ PROVIDING_DATA frontseat_providing_data true 8 1 1 3 Example ABC driver We will show you how to a write a new driver by example To do so we have created a simple frontseat simulator abc_frontseat_simulator that is intended to represent the real vehicle frontseat control system The full source code for this example is given at examples moos abc_frontseat_driver abc_frontseat_driver h examples moos abc_frontseat_driver abc_frontseat_driver cpp examples moos abc_frontseat_driver abc_frontseat_driver_config proto A complete production driver is provided by BluefinFrontSeat for the Bluefin Robotics AUVs that conform to the Bluefin Standard Payload Interface version 1 8 and newer The transport for the ABC frontseat is TCP the simulator frontseat listens on a given port and the driver connects to that machine and port The wire protocol is a simple ascii line based protocol where lines are terminated by carriage return and newline lt CR gt lt NL gt or r n Each message has a name key followed by a number of comma delimited colon separated fields Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 1 iFrontSeat 57 Key Description Directio
95. Namespaces namespace goby The global namespace for the Goby project Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 Example Documentation 186 Functions e std map lt int std string gt goby moos run_serialize_algorithms const google protobuf Message amp in const google protobuf RepeatedPtrField lt protobuf TranslatorEntry PublishSerializer Algorithm gt amp algo rithms e std string goby moos strip_name_from_enum const std string amp enum_value const std string amp field_ name e std string goby moos add_name_to_enum const std string amp enum_value const std string amp field_ name e void serialize_for_moos std string out const google protobuf Message amp msg Converts the Google Protocol Buffers message msg into a suitable human readable string out for sending via MOOS e void parse_for_moos const std string amp in google protobuf Message msg Parses the string in to Google Protocol Buffers message msg All errors are written to the goby util glogger e boost shared_ptr lt google protobuf Message gt dynamic_parse_for_moos const std string amp in Variables const std string goby moos MAGIC_PROTOBUF_HEADER PB 18 1 1 Detailed Description Helpers for MOOS applications for serializing and parsed Google Protocol buffers messages Definition in file moos_protobuf_helpers h 18 1 2 Function Documentation 18 1 2 1 void par
96. PR goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission dest SRC SRC and DEST flipped to be SRC and DEST of CCMPC goby acomms protobuf ModemTransmission src DEST goby acomms protobuf ModemTransmission type MICROMODEM_TWO_WAY_PING in extension micromodem protobuf ranging_reply micromodem protobuf RangingReply one_way_ travel_time 0 Travel Time Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 40 CAMPA goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission src SRC goby acomms protobuf ModemTransmission dest DEST goby acomms protobuf ModemTransmission type MICROMODEM_TWO_WAY_PING SNTTA goby acomms protobuf ModemTransmission time hhmmsss ss converted to microseconds since 1970 01 01 00 00 00 UTC goby acomms protobuf ModemTransmission time_ source goby acomms protobuf MODEM_TIME goby acomms protobuf ModemTransmission type goby acomms protobuf MICROMODEM_REMUS _LBL_RANGING or goby acomms protobuf MICROMODEM_NARROW BAND_LBL_RANGING depending on which LBL type was last initiated goby acomms protobuf ModemTransmission src modem ID in extension micromodem protobuf ranging_reply micromodem protobuf R
97. User selectable bit rates The steps to writing a new driver include e Fully understand the basic usage of the new acoustic modem manually using minicom or other terminal emulator Have a copy of the modem software interface manual handy e Figure out what type of configuration the modem will need For example the WHOI Micro Modem is config ured using string values e g SNV 1 Extend goby acomms protobuf DriverConfig to accomodate these configuration options You will need to claim a group of extension field numbers that do not overlap with any of the drivers The WHOI Micro Modem driver goby acomms MMDriver uses extension field numbers 1000 1100 see mm_driver proto You can read more about extensions in the official Google Protobuf documentation here http code google com apis protocolbuffers docs proto html extensions For example if was writing a new driver for the ABC Modem that needs to be configured using a few boolean flags might create a new message abc_driver proto import goby acomms protobuf driver_base proto load up message DriverBaseConfig message ABCDriverConfig extend goby acomms protobuf DriverConfig optional bool enable_foo optional bool enable_bar true false 1201 default 1202 default make a note in driver_base proto claiming extension numbers 1201 and 1202 and others you may expect to need in the future Extension field numbers can go up to 536 870 911 so don t w
98. VehicleStatus HEALTH_ABORT std cout lt lt lt lt lt lt passing values to encoder n command lt lt n status lt lt std endl std string bytes2 bytes3 dccl encode amp bytes2 command dccl encode amp bytes3 status std cout lt lt lt lt lt lt std cout lt lt lt lt lt lt received hexadecimal string for message 2 GoToCommand goby util hex_encode bytes2 std endl received hexadecimal string for message 3 VehicleStatus goby util hex_encode bytes3 std endl command Clear status Clear std cout lt lt lt lt lt lt std cout lt lt lt lt lt lt passed hexadecimal string for message 2 to decoder goby util hex_encode bytes2 std endl passed hexadecimal string for message 3 to decoder goby util hex_encode bytes3 std endl dccl decode bytes2 amp command dccl decode bytes3 amp status std cout lt lt lt lt lt lt return 0 received values n command lt lt n status lt lt std endl 19 5 acomms modemdriver driver_simple driver_simple cpp te Usage WHOI Micro Modem run gt driver_simple dev tty_of_modem_A 1 fy wait a few seconds le gt driver_simple dev tty_of_modem_B 2 be careful of collisions if you start them at the same time this is why libamac exists Usage example ABCModem run gt driver_
99. Verbosity gui streams all groups have a separate subwindow 183 GroupSetter Helper class for enabling the group std string manipulator 183 14 File Index 14 1 File List Here is a list of all documented files with brief descriptions goby acomms h 22 goby util h 22 goby version h 22 goby acomms acomms_constants h 22 goby acomms acomms_helpers h 22 goby acomms amac h 22 goby acomms bind h 22 goby acomms connect h 22 goby acomms dccl h 22 goby acomms modem_driver h 22 goby acomms queue h 22 goby acomms route h 22 goby acomms amac mac_manager h 22 goby acomms dccl dccl h 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby acomms protobuf ccl_extensions proto 14 1 File List 68 goby acomms dccl dccl_bitset h 22 goby acomms dccl dccl_ccl_compatibility h 22 goby acomms dccl dccl_common h 22 goby acomms dccl dccl_exception h 22 goby acomms dccl dccl_field_codec h 22 goby acomms dccl dccl_field_codec_arithmetic h 22 goby acomms dccl dccl_field_codec_default h 22 goby acomms dccl dccl_field_codec_default_message h 22 goby acomms dccl dccl_field_codec_fixed h 22 goby acomms dccl dccl_field_codec_helpers h 22 goby acomms dccl dccl_field_codec_manager h 22 goby acomms dccl dccl_field_codec_typed h 2 goby acomms dccl dccl_type_helper h 22 goby acomms dccl protobuf_cpp_type_helpers h 22 goby acomms dccl WhoiUtil h 22 goby acomms modemdriver abc_driver h 22 goby acomms modemdriver driver_base h 22 goby acomms mod
100. WreType FieldType gt goby acomms DCCLIypedFixed FieldCodec lt WreType FieldType gt Public Types e typedef WireType wire_type typedef FieldType field_type Public Member Functions e virtual Bitset encode 0 Encode an empty field e virtual Bitset encode const WireType amp wire_value 0 Encode a non empty field e virtual WireType decode Bitset bits 0 Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this e virtual unsigned size 0 Calculate the size in bits of an empty field e virtual unsigned size const WireType amp wire_value 0 Calculate the size in bits of a non empty field Additional Inherited Members 17 20 1 Detailed Description template lt typename WireType typename FieldType WireType gt class goby acomms DCCLTypedFieldCodec lt WireType Field Type gt Base class for static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 20 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Class Template Reference 139 Template Parameters Wire Type the type used for the encode and decode functions This can be any C type
101. _extensions proto as messages DCCLFieldOptions and DCCL MessageOptions DCCL message options name type default description id uint32 required A unique ID for each DCCL message max_bytes uint32 required Maximum allowed size in bytes for the encoded message codec string _default Name of the codec to use for encoding the base message add more codecs with goby acomms DCCLField CodecManager add DCCL field options name type default required for description codecs codec string default optional Name of the codec to use for encoding this field omit bool false optional Omit this field from all DCCL encoding has_field will be false on receipt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 3 3 Interacting with the DCCLCodec 14 in_head bool false optional Set true for fields in the header will not be encrypted rather will be used to create the encrytion IV precision int32 0 goby acomms D Number of decimal CCLDefault digits of precision NumericField to keep can be Codec double negative float min double 0 goby acomms D Minimum value that CCLDefault can be encoded in NumericField this field Codec double float int32 uint32 int64 uint64 fixed32 fixed64 sfixed32 sfixed64 max double 0 goby acomms D Maximum value CCLDefault that can be NumericField encoded in this Codec d
102. _message proto for definition of Google Protocol Buffers messages namespace goby acomms protobuf Examples acomms amac amac_simple amac_simple cpp and acomms chat chat cpp Definition at line 56 of file mac_manager h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 28 goby acomms MMDriver Class Reference 149 17 27 2 Member Function Documentation 17 27 2 1 void goby acomms MACManager startup const protobuf MACConfig amp cfg Starts the MAC with given configuration Parameters cfg Initial configuration values protobuf MACConfig defined in acomms_amac proto Examples acomms amac amac_simple amac_simple cpp and acomms chat chat cpp Definition at line 74 of file mac_manager cpp 17 27 3 Member Data Documentation 17 27 3 1 boost signals2 signal lt void const protobuf ModemTransmission amp m gt goby acomms MACManager signal_ initiate_transmission Signals when it is time for this platform to begin transmission of an acoustic message at the start of its TDMA slot Typically connected to ModemDriverBase handle_initiate_transmission using bind Parameters m a message containing details of the transmission to be initated protobuf ModemMsgBase defined in acomms_modem_message proto Examples acomms amac amac_simple amac_simple cpp and acomms chat chat cpp Definition at line 98 of file mac_manager h The documentation for
103. _modem_message proto Definition at line 95 of file driver_base h 17 29 3 2 boost signals2 signal lt void protobuf ModemTransmissionx msg_request gt goby acomms ModemDriverBase signal_modify_transmission Called before the modem driver begins processing a transmission This allows a third party to modify the parameters of the transmission such as destination or rate on the fly You may connect one or more slots a function or member function to this signal to handle data requests Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll Modem Transmission is defined in acomms_modem_message proto Definition at line 101 of file driver_base h 17 29 3 3 boost signals2 signal lt void const protobuf ModemRaw amp msg gt goby acomms ModemDriverBase signal_raw_ incoming Called after any message is received from the modem by the driver Used by the MACManager for auto discovery of vehicles Also useful for higher level analysis and debugging of the transactions between the driver and the modem If desired you should connect one or more slots a function or member function to this signal to listen on incoming transactions Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll ModemRaw is defined in acomms_modem_message proto Definition at line 108 of file driver_base h 17 29 3 4 boost signals2
104. _optional decl optional sfixed32 sfixed32_default_optional dicey optional sfixed64 sfixed64_default_optiona decl optional bool bool_default_optional 13 o ptional string string_default_optional ptional bytes bytes_default_optional 15 o optional Enuml enum_default_optional 16 optional EmbeddedMsgl msg_default_optional required double double_default_required decl decl deol required float float_default_required 22 t sel dccl required int32 int32_default_required 23 decl required int64 int64 default_required 24 deol required uint32 uint32_default_required dccl required uint64 uint64_default_required decl required sint32 sint32_default_required decl required sint64 sint64_default_required dcc required fixed32 fixed32_default_required field max 3000 deccl field min 100 field max 126 field precision 2 field in_head true dccl field min 20 field max 150 field precision 3 dccl field min 20 field max 3000 dccl field min 710 field max 3000 5 dccl field min 0 field max 3000 6 dccl field min 5 field max 3000 7 decl field min 60 field max 3000 dcecl field min 70 ield max 3000 9 dccl field min 0 ield max 400 LO dccl field min 0 1d max 3000 11 decl field min 11 ld max 3000 l 12 dccl field min 12 field max 3
105. a single byte of the message You may now send this message through whatever channel you would like To decode a message stored in bytes as a byte string simply pass bytes as a reference along with pointers to the Protobuf message to store the results message Clear dccl gt decode bytes amp message For line by line interaction with the goby acomms DCCLCodec and for advanced use investigate the code exam ples given in the Examples column of this table 3 4 Encryption Encryption of all messages can be enabled by providing a secret passphrase to the goby acomms protobuf DC CLConfig object passed to goby acomms DCCLCodec set_cfg All parties to the communication must have the same secret key DCCL provides AES Rijndael encryption for the body of the message The header which is sent in plain text is hashed to form an initialization vector IV and the passphrase is hashed using SHA 256 to form the cipher key You will want to make sure the header designate fields for the header with goby field dccl in_head true is anonce by including a constantly changing value such as time AES is considered secure and is used for United States top secret information 3 5 Example messages This section provides a listing of DCCL example Protobuf messages used in the code examples and unit tests 3 5 1 Minimal functional DCCL message simple proto import goby acomms protobuf dccl_option_extensions proto message
106. a type using a class member function as the handler common ZeroMQService amp zeromq_service Fetchs the newest received message of this type Constructors Destructor e Application google protobuf Message cfg 0 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 41 goby pb Application Class Reference 172 e virtual Application Publish Subscribe e void publish const google protobuf Message amp msg const std string amp group Additional Inherited Members 17 41 1 Detailed Description Base class provided for users to generate applications that participate in the Goby publish subscribe architecture Definition at line 47 of file application h 17 41 2 Constructor amp Destructor Documentation 17 41 21 goby pb Application Application google protobuf Message cfg 0 protected Parameters cfg pointer to object derived from google protobuf Message that defines the configuration for this Application This constructor will use the Description of cfg to read the command line parameters and configuration file if given and use these values to populate cfg cfg must be a static member of the subclass or global object since member objects will be constructed after the Application constructor is called Definition at line 40 of file application cpp 17 41 3 Member Function Documentation 17 41 3 1 template lt typename ProtoBufMessage gt void goby pb Ap
107. and is often the same as FieldType unless a type conversion should be performed The reason for using a different Wire Type and Field Type should be clear from the DCCLDefaultEnum Codec which uses DCCLDefaultNumericFieldCodec to do all the numerical encoding decoding while DCCLDefaultEnumCodec does the type conversion pre_encode and post_decode Field Type the type used in the Google Protobuf message that is exposed to the end user DCCL Codec decode DCCLCodec encode etc functions Definition at line 105 of file dccl_field_codec_typed h 17 20 2 Member Function Documentation 17 20 2 1 template lt typename WireType typename FieldType WireType gt virtual WireType goby acomms DCCLTypedFieldCodec lt WireType FieldType gt decode Bitset bits pure virtual Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this Parameters bits Bits to use for decoding Returns the decoded value Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms D CCLRepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedField Codec lt Model value_type const google protobuf EnumValueDescriptor x gt goby acomms DCCLRepeated TypedFieldCodec lt goby int32 gt goby acomms DCCLDefaultNumericFieldCodec lt WireType F
108. angingReply one_way_ travel_time 0 TA micromodem protobuf RangingReply one_way_ travel_time 1 TB micromodem protobuf RangingReply one_way_ travel_time 2 TC micromodem protobuf RangingReply one_way_ travel_time 3 TD Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 41 CAXST maps onto extension micromodem protobuf transmit_stat of type micromodem protobuf TransmitStatistics The two CAXST messages CYC and data for a rate 0 FH FSK transmission are grouped and reported at once CACST maps onto extension micromodem protobuf receive_stat of type micromodem protobuf ReceiveStatistics The two CACST messages for a rate O FH FSK transmission are grouped and reported at once Note that this message contains the one way time of flight for synchronous ranging used instead of CATOA Also sets which will overwrite goby_time set previously goby acomms protobuf ModemTransmission time TOA time converted to microseconds since 1970 01 01 00 00 00 UTC goby acomms protobuf ModemTransmission time_ source goby acomms protobuf MODEM_TIME CAREV Not translated into any of the modem_message proto messages Monitored to detect excessive clock skew between Micro Modem clock and system clock or reboot INIT CAERR Not translated into any of the modem_message proto messages Reported to goby glog CAC
109. apis protocolbuffers docs reference protobuf descriptor html FieldDescriptor Type details Definition at line 72 of file dccl_field_codec h 17 13 2 28 void goby acomms DCCLFieldCodecBase field_validate bool x b const google protobuf FieldDescriptor x field Validate this field checking that all required option extensions are set e g goby field dccl max and goby field dccl min for arithmetic codecs Parameters b Currently unused will be set to false field Protobuf descriptor to the field Set to 0 for base message Exceptions DCCLException If field is invalid Definition at line 278 of file dccl_field_codec cpp 17 13 2 29 std string goby acomms DCCLFieldCodecBase info protected virtual Write field specific information in addition to general information such as sizes that are automatically written by this class for all fields Returns string containing information to display Definition at line 365 of file dccl_field_codec cpp 17 13 2 30 virtual unsigned goby acomms DCCLFieldCodecBase max_size protected pure virtual Calculate maximum size of the field in bits Returns Maximum size of this field in bits Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms DCCL RepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedFieldCodec lt Model value_type const googl
110. arameters identifier name of this special DCCL ID codec that matches the identifier used when registering with add_id_codec Definition at line 370 of file dccl h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 104 17 4 2 13 unsigned goby acomms DCCLCodec size const google protobuf Message amp msg Provides the encoded size in bytes of msg This is useful if you need to know the size of a message before encoding it encoding it is generally much more expensive than calling this method Parameters msg Google Protobuf message with DCCL extensions for which the encoded size is requested Returns Encoded using DCCL size in bytes Definition at line 361 of file dccl cpp 17 4 2 14 template lt typename GoogleProtobufMessagePointer gt unsigned goby acomms DCCLCodec size_repeated const std list lt GoogleProtobufMessagePointer gt amp msgs inline Returns the encoded size of multiple messages at once sum of all sizes You must use this method instead of N calls to size where N is msgs size to get the size of messages encoded using encode_repeated as repeated encoding may be more efficient in terms of the encoded message size than N calls of encode Template Parameters GoogleProtobufMessage anything that acts like a pointer has operator to a google protobuf Message smart Pointer pointer
111. ary tackle the extremely rate limited acoustic networking problem This library was designed with four modules that can operate independently for a de veloper looking integrate a specific component e g just encoding decoding without committing to the entire goby acomms stack goby util Overview of Utility Libraries provide utility functions for tasks such as logging scientific calcula tions string parsing and serial device i o Goby also relies on the boost libraries http www boost org for many utility tasks to fill in areas where the C Standard Library is insufficient or unelegant goby moos An overview of the Goby MOOS interoperability library classes applications e g pAcomms Handler and iFrontSeat and functions for interoperating between Goby and the MOOS middleware Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 1 3 Publications 2 1 3 Publications T Schneider and H Schmidt The Dynamic Compact Control Language A Compact Marshalling Scheme for Acoustic Communications IEEE OCEANS 10 Sydney e T Schneider and H Schmidt Goby Acomms A modular acoustic networking framework for short range marine vehicle communication Unpublished working paper T Schneider and H Schmidt Goby Acomms version 2 extensible marshalling queuing and link layer interfacing for acoustic telemetry 9th IFAC Con ference on Manoeuvring and Control of Marine Craft 12 Arenzano Italy T Schneider Ad
112. as the driver does not run in its own thread This allows us to guarantee that no signals are called except inside this method Does not block Implements goby acomms ModemDriverBase Definition at line 116 of file abc_driver cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 97 17 3 2 2 void goby acomms ABCDriver handle_initiate transmission const protobuf ModemTransmission 4 m virtual Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Parameters m ModemTransmission defined in acomms_modem_message proto containing the details of the transmission to be started This may contain data frames If not data will be requested when the driver calls the data request signal ModemDriverBase signal_data_request Implements goby acomms ModemDriverBase Definition at line 79 of file abc_driver cpp 17 3 2 3 void goby acomms ABCDriver startup const protobuf DriverConfig amp cfg virtual Starts the modem driver Must be called before poll Parameters cfg Startup configuration for the driver and modem DriverConfig is defined in acomms_driver _base proto Derived classes can define extensions see http code google com apis protocolbuffers docs proto html extensions to DriverConfig to handle modem specific configuration Implements goby ac
113. ation for this class was generated from the following files share examples acomms chat chat_curses h share examples acomms chat chat_curses cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 3 goby acomms ABCDriver Class Reference 96 17 3 goby acomms ABCDriver Class Reference provides an API to the imaginary ABC modem as an example how to write drivers include lt goby acomms modemdriver abc_driver h gt Inheritance diagram for goby acomms ABCDriver goby acomms ModemDriverBase goby acomms ABCDriver Public Member Functions e void startup const protobuf DriverConfig amp cfg Starts the modem driver Must be called before poll e void shutdown Shuts down the modem driver e void do_work Allows the modem driver to do its work e void handle_initiate_transmission const protobuf ModemTransmission amp m Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Additional Inherited Members 17 3 1 Detailed Description provides an API to the imaginary ABC modem as an example how to write drivers Examples acomms modemdriver driver_simple driver_simple cpp Definition at line 41 of file abc_driver h 17 3 2 Member Function Documentation 17 3 2 1 void goby acomms ABCDriver do_work virtual Allows the modem driver to do its work Should be called regularly to perform the work of the driver
114. ax_repeat 4 repeated string string_default_repeat 114 dccl field max_length 4 dccl field max_repeat 4 repeated bytes bytes_default_repeat 115 dccl field max_length 4 dccl field max_repeat 4 repeated Enuml enum_default_repeat 116 dccl field max_repeat 4 repeated EmbeddedMsgl msg_default_repeat 117 dccl field max_repeat 4 See Also dccl1 test cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 19 3 5 3 DCCL Test2 showing an embedded message encoded by a custom non default codec dccl2 test proto import goby acomms protobuf dccl_option_extensions proto message CustomMsg option dccl msg id 3 option dccl msg max_bytes 256 option dccl msg codec custom_codec optional uint32 a 1 optional bool b 2 message CustomMsg2 option dccl msg id 4 option dccl msg max_bytes 256 optional CustomMsg msg 1 repeated int32 c 3 dccl field max 100 dccl field min 0 dccl field max_repeat 4 dccl field codec int32_test_codec See Also dccl2 test cpp 3 5 4 DCCL Test3 dccl3 test proto import goby common protobuf option_extensions proto import goby acomms protobuf dccl_option_extensions proto import goby test acomms dccl3 header proto message GobyMessage option dccl msg id 4 option dccl msg max_bytes 32 required string telegram 1 decl field max_length 10 r
115. b Namespace Reference eee ee 89 1631 Detailed Descmwiont 2 240 4 PAS ee Pea a Sh ere PB ee Rade G 89 16 6 goby transitional Namespace Reference 0000 eee ee 89 1661 Detailed Description 624528404 bee ee Yee SR a ew ee e 91 16 6 2 Typedef Documentation s lt s s s sa sa eee eae ee ee ee 91 16 6 3 Enumeration Type Documentation 0 00000 eee ee 91 16 6 4 Function Documentation lt lt s dobe aud ne bed ee bebe eee be hee 92 1665 Variable DOCUMPBATADOR 2 c c 28s var ke aeev bhi deed peewee eed ewe 93 17 Class Documentation 93 17 1 boost asio time_traits lt goby common GobyTime gt Struct Template Reference 93 TACI Doral IBESCAQUOT aseos cd Ra Sle ede dae A 94 17 2 ChatCurses Class Reference e 94 12210 Detailed DesceHion es es so bebe e AA da AE 94 17 3 goby acomms ABCDriver Class Reference eee eee eee 95 17 3 4 Detailed Deschiphoni is iaa PN or ee ae ae OS 95 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen CONTENTS iv 17 3 2 Member Function Documentation e e es 95 17 4 goby acomms DCCLCodec Class Reference o e eee ee 96 1741 Detaled Descrmption cota da e e 98 17 4 2 Member Function Documentation e e eo 99 17 5 goby acomms DCCLDefaultBoolCodec Class Reference 0 a 104 17 5 1 Detailed Description 2 20 same ee ee ewe 105 17 6
116. by acomms DCCLFieldCodecBase field_encode_repeated Bitset x bits const std vector lt boost any gt field_values const google protobuf FieldDescriptor x field Encode a repeated field Parameters bits Pointer to bitset to store encoded bits Bits are added to the most significant end of bits field_values Values to encode FieldType field Protobuf descriptor to the field Set to 0 for base message Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 123 Definition at line 76 of file dccl_field_codec cpp 17 13 2 18 void goby acomms DCCLFieldCodecBase field_info std ostream x os const google protobuf FieldDescriptor x field Write human readable information about the field and its bounds to the provided stream Parameters os Stream to write info to field Protobuf descriptor to the field Set to 0 for base message Definition at line 303 of file dccl_field_codec cpp 17 13 2 19 void goby acomms DCCLFieldCodecBase field_max_size unsigned bit_size const google protobuf FieldDescriptor x field Calculate the upper bound on this field s size in bits Parameters bit_size Location to add calculated maximum bit size to Be sure to zero bit_size if you want only the size of this field field Protobuf descriptor to the field Set to O for ba
117. by pb protobuf database_request pb h 22 goby pb protobuf database_request proto 2 goby pb protobuf header pb h 22 goby pb protobuf header proto 22 goby pb protobuf interprocess_notification pb h 22 goby pb protobuf interprocess_notification proto 2 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby util linebasedcomms client_base h 14 1 File List 74 goby pb protobuf iridium_driver proto 22 goby pb protobuf pb_modem_driver pb h 22 goby pb protobuf pb_modem_driver proto 22 goby pb protobuf rudics_shore pb h 22 goby pb protobuf rudics_shore proto 22 goby test acomms dccl1 test proto 22 goby test acomms dccl10 test proto 2 goby test acomms dccl2 test proto 22 goby test acomms dccl3 header proto 22 goby test acomms dccl3 test proto 2 goby test acomms dccl4 test proto 22 goby test acomms dccl6 test proto 2 goby test acomms dccl7 test proto 22 goby test acomms dccl8 test proto 2 goby test acomms dccl9 test proto 2 goby test acomms driver_tester driver_tester h 22 goby test acomms mmdriver2 test_config proto 22 goby test acomms queue1 test proto 2 goby test acomms queue5 test proto 2 goby test acomms queue6 test proto 2 goby test acomms route1 test proto 2 goby test moos translator1 basic_node_report proto 2 goby test util dynamic_protobuf test_a proto 2 goby test util dynamic_protobuf test_b proto 2 goby util as h 22 goby util base_convert h 22 goby util binary h 22 goby util dynamic_protobuf_manager h
118. c apps acomms abc_modem_simulator abc_modem_simulator cpp 22 src apps acomms analyze_dccl analyze_dccl cpp 2 src apps acomms goby_bridge bridge cpp 2 src apps acomms goby _file_transfer file_transfer cpp 22 src apps acomms goby_modemdriver modemdriver cpp 22 src apps acomms goby_rudics_shore goby_rudics_shore cpp 2 src apps acomms goby_store_server goby_store_server cpp 2 src apps common liaison liaison cpp 22 src apps common liaison liaison_home cpp 22 src apps common liaison liaison_wt_thread cpp 2 src apps moos abc_frontseat_simulator abc_frontseat_simulator cpp 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen src moos transitional dccl_transitional cpp 14 1 File List 77 src apps moos iFrontSeat iFrontSeat cpp 2 src apps moos iFrontSeat legacy_translator cpp 2 src apps moos moos_gateway_g moos_gateway cpp 2 src apps moos pAcommsHandler pAcommsHandler cpp 2 src apps moos pAcommsHandler pAcommsHandlerMain cpp 22 src apps moos pTranslator pTranslator cpp 22 src apps moos pTranslator pTranslatorMain cpp 22 src apps util serial2tcp_server serial2tcp_server cpp 2 src common application_base cpp 2 src common configuration_reader cpp 2 src common time cpp 22 src common zeromq_service cpp 2 src common logger flex_ncurses cpp 2 src common logger flex_ostream cpp 2 src common logger flex_ostreambuf cpp 2 src common logger logger_manipulators cpp 2 src common logger term_color cpp 2 src moos goby_moos_app
119. called in order they were connected To ensure synchronous behavior and thread safety throughout goby acomms signals are only emitted during a call to a given components API class do_work method i e goby acomms ModemDriverBase udo_work goby acomms QueueManager do_work goby acomms MACManager do_work For example if want to receive data from queue need to connect to the signal QueueManager signal_receive Thus need to define a function or class method with the same signature void receive_data const google protobuf Message amp msg Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 6 Software concepts used in goby acomms 8 At startup then connect the signal to the slot goby acomms connect amp q_manager signal_receive amp receive_data If instead was using a member function such as class MyApplication public void receive_data const google protobuf Message amp msg would call connect probably in the constructor for MyApplication passing the pointer to the class MyApplication MyApplication goby acomms connect amp q_ manager signal_receive this amp MyApplication receive_data The Boost Signals library is used without modification so for details see http www boost org doc libs 1_46_0 doc html signals html Member function binding is provided by Boost Bind http www boost org doc libs 1_46_0 libs bind bind html 2 6 2
120. can be omitted in the child class Definition at line 44 of file dccl_field_codec_typed h 17 16 2 Member Function Documentation Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 17 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Reference 131 17 16 21 template lt typename WireType typename FieldType gt virtual FieldType goby acomms DCCLFieldCodec Selector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt post_decode const WireType wire value protected pure virtual Convert from the WireType representation used with encode and decode i e on the wire to the FieldType representation used in the Google Protobuf message Parameters wire_value Value to convert Returns Converted value 17 16 2 2 template lt typename WireType typename FieldType gt virtual WireType goby acomms DCCLFieldCodec Selector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt pre_encode const FieldType field_value protected pure virtual Convert from the FieldType representation used in the Google Protobuf message to the Wire Type representation used with encode and decode i e on the wire Parameters field_value Value to convert Returns Converted value The documentation
121. ccl8 test cpp 2 src test acomms dccl9 test cpp 2 src test acomms driver_tester driver_tester cpp 22 src test 1acomms mmdriver1 test cpp 22 src test acomms mmdriver2 test cpp 22 src test 1acomms queue1 test cpp 2 src test acomms queue2 test cpp 2 src test acomms queue3 test cpp 2 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen src util linebasedcomms tcp_server cpp 15 Module Documentation 15 Module Documentation 79 src test acomms queue5 test cpp 2 src test acomms queue6 test cpp 2 src test acomms route1 test cpp 2 src test acomms udpdriver1 test cpp 22 src test acomms udpdriver2 test cpp 22 src test common log test cpp 2 src test common zero_mqg_node1 test cpp 2 src test common zero_mg_node2 test cpp 2 src test common zero_mq_node3 test cpp 2 src test common zero_mq_node4 test cpp 2 src test moos transitional1 test cpp 22 src test moos translator1 test cpp 2 src test pb iridiumdriver1 test cpp 22 src test pb pbdriver1 test cpp 22 src test util as as cpp 2 src test util base255 base255 cpp 2 src test util dynamic_protobuf dynamic_protobuf cpp 2 src test util hex_codec hex_codec cpp 22 src test util nmea nmea cpp 22 src test util salinity salinity cpp 22 src test util sci sci cpp 22 src test util time time cpp 22 src util dynamic_protobuf_manager cpp 2 src util linebasedcomms interface cpp 2 src util linebasedcomms nmea_sentence cpp 2 src util linebasedcomms serial_client cpp 2 src
122. cecl field precision 1 required HealthEnum health enum HealthEnum HEALTH_GOOD 0 HEALTH_LOW_BATTERY 1 HEALTH_ABORT 2 See Also two_message cpp Test1 showing all Protobuf types using default codecs dccl1 test proto import goby acomms protobuf dccl_option_extensions proto enum Enuml ENUM_A 1 ENUM_B 2 ENUM_C 3 message EmbeddedMsgl optional double val 1 dccl field min 0 dccl field max 126 dccl field precision 3 optional EmbeddedMsg2 msg 2 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 17 message EmbeddedMsg2 optional double val 1 dccl field min 0 dccl field max 126 dccl field precision 2 optional string sval 2 dccl field max_length 10 optional Enuml enum_default 3 message TestMsg o ption dccl msg id 2 ption dccl msg max_bytes 512 o test default enc dec optional double double_default_optional decl decl dec optional float float_default_optional 2 decl decis optional int32 int32_default_optional 3 decl optional int64 int64_default_optional 4 dice optional uint32 uint32_default_optional decl optional uint64 uint64_default_optional decl optional sint32 sint32_default_optional decl optional sint64 sint64_default_optional decl optional fixed32 fixed32_default_optional decl optional fixed64 fixed64_default
123. cific statically generated Protobuf class Definition at line 566 of file protobuf_cpp_type_helpers h The documentation for this class was generated from the following file goby acomms dccl protobuf_cpp_type_helpers h 17 26 goby acomms FromProtoTypeBase Class Reference Provides various representations of a google protobuf FieldDescriptor Type enumeration Implementations are provided for all enumerations include lt goby acomms dccl protobuf_cpp_type_helpers h gt Inherited by goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_BOOL gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_BYTES gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_DOUBLE gt goby acomms FromProtoType lt google protobuf Field Descriptor TYPE_ENUM gt goby acomms FromProtoType lt google protobuf FieldDescriptor T YPE_FIXE D32 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_FIXED64 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_FLOAT gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_GROUP gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_INT32 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_INT64 gt goby acomms FromProtoType lt google protobuf FieldDescriptor TYPE_MESSAGE gt goby acomms FromProto Type lt
124. comms protobuf route pb h 22 goby acomms protobuf route proto 2 goby acomms protobuf store_server pb h 22 goby acomms protobuf store_server proto 2 goby acomms protobuf udp_driver pb h 22 goby acomms protobuf udp_driver proto 22 goby acomms queue queue h 22 goby acomms queue queue_constants h 2 goby acomms queue queue_exception h 22 goby acomms queue queue_manager h 22 goby acomms route route h 22 goby apps acomms goby_bridge bridge_config proto 22 goby apps acomms goby _file_transfer file_transfer_config proto 2 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby common protobuf liaison_config proto 14 1 File List 70 goby apps acomms goby_rudics_shore goby_rudics_shore_config proto 2 goby apps acomms goby_store_server goby_store_server_config proto 2 goby apps common liaison liaison h 22 goby apps common liaison liaison_home h 22 goby apps common liaison liaison_wt_thread h 22 goby apps moos iFrontSeat iFrontSeat h 22 goby apps moos iFrontSeat legacy_translator h 22 goby apps moos moos_gateway_g moos_gateway_config proto 2 goby apps moos pAcommsHandler pAcommsHandler h 22 goby apps moos pTranslator pTranslator h 22 goby apps moos pTranslator pTranslator_config proto 22 goby common application_base h 22 goby common configuration_reader h 22 goby common core_constants h 22 goby common core_helpers h 22 goby common exception h 22 goby common liaison_container h 22 goby common logger h 22 goby common node_in
125. criptor field google protobuf Message msg boost any value e virtual void _add_value const google protobuf FieldDescriptor field google protobuf Message msg boost any value 17 23 1 Detailed Description template lt gt class goby acomms FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAGE gt Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using the dynamic google protobuf Message as the underlying class Definition at line 496 of file protobuf_cpp_type_helpers h The documentation for this class was generated from the following file goby acomms dccl protobuf_cpp_type_helpers h 17 24 goby acomms FromProtoCppTypeBase Class Reference Provides various representations of a google protobuf FieldDescriptor CppType enumeration and ways to access the google protobuf Reflection object for a given type include lt goby acomms dccl protobuf_cpp_type_helpers h gt Inheritance diagram for goby acomms FromProtoCppTypeBase goby acomms FromProtoCpp goby acomms FromProtoCpp Type lt google protobuf goby acomms FromProtoCustom TypeBase FieldDescriptor CPPTYPE Message lt CustomMessage gt _MESSAGE gt Public Member Functions e virtual std string as_str string representation e boost any get_value const google protobuf FieldDescriptor field const google protobuf Message amp msg Get a given field s value from the provided message boost
126. d Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 40 goby moos UFldDriver Class Reference 169 Should be called regularly to perform the work of the driver as the driver does not run in its own thread This allows us to guarantee that no signals are called except inside this method Does not block Implements goby acomms ModemDriverBase Definition at line 188 of file moos_bluefin_driver cpp 17 39 2 2 void goby moos BluefinCommsDriver handle_initiate transmission const goby acomms protobuf Modem Transmission amp m virtual Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Parameters m ModemTransmission defined in acomms_modem_message proto containing the details of the transmission to be started This may contain data frames If not data will be requested when the driver calls the data request signal ModemDriverBase signal_data_request Implements goby acomms ModemDriverBase Definition at line 100 of file moos_bluefin_driver cpp 17 39 2 3 void goby moos BluefinCommsDriver startup const goby acomms protobuf DriverConfig amp cfg virtual Starts the modem driver Must be called before poll Parameters cfg Startup configuration for the driver and modem DriverConfig is defined in acomms_driver _base proto Derived classes can define extensions see http code google com apis protocolbuffers docs
127. d any_decode_repeated Bitset repeated_bits std vector lt boost any gt xfield_values virtual void any_pre_encode_repeated std vector lt boost any gt wire_values const std vector lt boost any gt amp field_values virtual void any_post_decode_repeated const std vector lt boost any gt amp wire_values std vector lt boost any gt x field_values virtual unsigned any_size_repeated const std vector lt boost any gt amp wire_values virtual unsigned max_size_repeated virtual unsigned min_size_repeated Friends class DCCLFieldCodecManager Information Methods std string name const the name of the codec used to identifier it in the proto custom option extension google protobuf FieldDescriptor Type field_type const the type exposed to the user in the original and decoded Protobuf messages google protobuf FieldDescriptor CppType wire_type const the C type used on the wire This is the type visible after pre_encode and before post_decode functions are called const google protobuf FieldDescriptor x this_field const Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 119 Returns the FieldDescriptor field schema meta data for this field e static const google protobuf Descriptor this_descriptor Returns the Descriptor message schema meta data for the immediate parent Message e static const google
128. d by Goby 89 goby transitional Objects pertaining to transitioning from DCCLv1 to DCCLv2 89 12 Class Index 12 1 Class Hierarchy This inheritance list is sorted roughly but not completely alphabetically boost asio time_traits lt goby common GobyTime gt 93 ChatCurses 94 goby acomms DCCLCodec 96 goby acomms DCCLFieldCodecBase 114 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 12 1 Class Hierarchy 61 goby acomms DCCLFieldCodecSelector lt bool bool gt 128 goby acomms DCCLTypedFieldCodec lt bool bool gt 137 goby acomms DCCLTypedFixedFieldCodec lt bool gt 140 goby acomms DCCLDefaultBoolCodec 104 goby acomms DCCLFieldCodecSelector lt CustomMsg CustomMsg gt 128 goby acomms DCCLTypedFieldCodec lt CustomMsg CustomMsg gt 137 goby acomms DCCLTypedFixedFieldCodec lt CustomMsg gt 140 goby acomms DCCLFieldCodecSelector lt double double gt 128 goby acomms DCCLTypedFieldCodec lt double double gt 137 goby acomms DCCLTypedFixedFieldCodec lt double gt 140 goby acomms DCCLFieldCodecSelector lt float float gt 128 goby acomms DCCLTypedFieldCodec lt float float gt 137 goby acomms DCCLTypedFixedFieldCodec lt float gt 140 goby acomms DCCLFieldCodecSelector lt goby int32 goby int32 gt 128 goby acomms DCCLTypedFieldCodec lt goby int32 goby int32 gt 137 goby acomms DCCLRepeatedTypedFieldCodec lt goby int32 gt 130 goby acomms DCCLFieldCodecSelector
129. d string telegram 1 At a minimum we must give a unique ID for our DCCL message and a maximum number of bytes we allow the message to be before throwing an exception when it is loaded This allows us to ensure that we are not creating messages larger than we can send with the physical hardware We want to have the ability to use the lowest rate WHOI Micro Modem message size so we pick max_bytes to be 32 We are testing so we ll use an id of 124 See http gobysoft org wiki DcclIdTabl1le for a list of the assigned DCCL IDs After these additions we have import goby common protobuf option_extensions proto message Simple option dccl msg id 124 option dccl msg max_bytes 32 required string telegram 1 Finally we need to pick an encoder decoder codec for each field in our message DCCL comes with defaults for all the Protobuf types So if we don t specifically list a codec for a given field the default is used The default string codec is goby acomms DCCLDefaultStringCodec and is variable length It uses one byte to list the length of the string and then up to 255 bytes to hold the contents To ensure we stay within our bounds for the entire message goby msg dccl max_bytes 32 we have to give a maximum allowed length for a string when using the DCCLDefaultStringCodec goby field dccl max_length import goby acomms protobuf dccl_option_extensions proto message Simple see http g
130. d2name unsigned id unsigned name2id const std string amp name std vector lt DCCLMessage gt amp messages Constructors Destructor e DCCLTransitionalCodec Instantiate optionally with a ostream logger for human readable output e DCCLTransitionalCodec destructor Initialization Methods These methods are intended to be called before doing any work with the class However they may be called at any time as desired e void convert_to_v2_representation pAcommsHandlerConfig cfg 17 43 1 Detailed Description provides an API to the Transitional Dynamic CCL Codec looks like DCCLv1 but calls DCCLv2 Warning this class is for legacy support only new applications should use DCCLCodec directly See Also transitional proto and acomms_modem_message proto for definition of Google Protocol Buffers messages namespace goby transitional protobuf Definition at line 99 of file dccl_transitional h 17 43 2 Constructor amp Destructor Documentation 17 43 21 goby transitional DCCLTransitionalCodec DCCLTransitionalCodec Instantiate optionally with a ostream logger for human readable output Parameters Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 43 goby transitional DCCLTransitionalCodec Class Reference 178 log std ostream object or FlexOstream to capture all humanly readable runtime and debug infor mation optional Definition at line 46 of f
131. dated using the std 1ist insert push pop erase etc Each vehicle can have more than one slot in the cycle The cycles must agree across all platforms the network designer is responsible for this Most of the time you will want to use this mode 2 Centralized Polling goby acomms protobuf MAC_POLLED on the master goby acomms protobuf MA C_NONE on all other nodes The TDMA cycle is set up and operated by a centralized master modem poller which is usually the modem connected to the vehicle operator s topside The poller initiates each transmission and thus the vehicles are not required to maintain synchronous clocks This mode requires third party initiation of transmissions to function 5 2 Interacting with the goby acomms MACManager To use the goby acomms MACManager you need to instantiate it goby acomms MACManager mac Then you need to provide a callback or slot not to be confused with a TDMA slot for initiated transmissions for the signal goby acomms MACManager signal_initiate_transmission This signal will be called when the goby acomms MACManager determines it is time to send a message If using modemdriver simply call goby uacomms bind goby acomms MACManager amp goby acomms ModemDriverBase amp to bind this callback to the modem driver Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 5 2 Interacting with the goby acomms MACManager 31 Next you need to decide which t
132. delete driver return 0 ff 5 Post the received data El void handle_data_receive const goby acomms protobuf ModemTransmission amp data_msg std cout lt lt got a message lt lt data_msg lt lt std endl 19 6 acomms queue queue_simple queue_simple cpp simple proto import goby acomms protobuf dccl_option_extensions proto message Simple see http gobysoft org wiki DcclIdTable option if r option required string telegram 1 dccl field max_length 30 dccl msg id 124 for example we want to use on the WHOI Micro Modem rate 0 dccl msg max_bytes 32 queue_simple cpp queues a single message from the DCCL library include include include include include goby acomms queue h goby acomms connect h simple pb h goby util binary h lt iostream gt using goby acomms operator lt lt void received_data const google protobuf Message amp msg int main Vi Hib 1 Initialize the QueueManager goby acomms QueueManager q_ manager our modem id arbitrary but must be unique in the network const int our_id 1 goby acomms protobuf QueueManagerConfig cfg cfg set_modem_id our_id cfg add_message_entry gt set_protobuf_name Simple q_manager set_cfg cfg set up the callback to handle received DCCL messages goby acomms connect amp q_manager signal_receive r ie A
133. e o o 126 1141 Detaled Descriptio soci A Re a As Ra AA A ek 126 17 14 2 Member Function Documentation e e ore 127 17 15goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt Class Template Refer ODOT A Ba es 128 1715 1 Detailed DOSCRBUION eses a a a a ee 128 17 16goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt Class Template Reference 129 1716 Detailed Descrion s ogai bide bee aw eae bb Pk de ee eS 129 17 16 2 Member Function Documentation 1 2 2 2 e eee a es 129 17 17goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Reference130 7 47 1 Detailed Desorption css tasa ee eo a a a a ae 132 17 17 2 Member Function Documentation 0 e a es 132 17 18goby acomms DCCLStaticCodec lt T gt Class Template Reference 134 1718 1 Detailed Description ca c ciccone RP pe ee ee eA RP ae he R 135 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen CONTENTS v 17 19goby acomms DCCLTimeCodec lt TimeType gt Class Template Reference 135 1719 1 Detailed DOSCQUOT 02 ora RA RRA RR Oe Bo a 136 17 20goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Class Template Reference 137 17 20 1 Detailed Descriplhon s ab bee a a Re Ree a eG Ra 137 17 20 2 Member Fu
134. e goby acomms protobuf ModemTransmission rate ACK if ADR1 modem ID then goby acomms protobuf ModemTransmission ack_requested else 4 Nframes goby acomms protobuf Modem Transmission max_num_frames Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 43 CCCLK Not translated from any of the modem_message proto messages taken from the system time using the boost date_time library CCCFG Not translated from any of the modem_message proto messages taken from values passed to the extension micromodem protobuf Config nvram_cfg of goby acomms protobuf DriverConfig If the extension micromodem protobuf Config reset_nvram is set to true CCCFG ALL O will be sent before any other CCCFG values CCCFQ Not translated from any of the modem_message proto messages CCCFQ ALL sent at startup CCMPC protobuf MICROMODEM_TWO_WAY_PING goby acomms protobuf ModemTransmission type SRC goby acomms protobuf ModemTransmission src DEST goby acomms protobuf ModemTransmission dest CCPDT protobuf MICROMODEM_REMUS_LBL_RANGING goby acomms protobuf ModemTransmission type micromodem protobuf REMUSLBLParams type used to determine the parameters of the LBL ping The object provided with configuration micromodem protobuf Config remus_lbl is merged with the object provided with the ModemTran
135. e 119 DCCLFieldCodecBase 119 DCCLFieldCodecBase 119 DCCLFieldCodecBase 120 DCCLFieldCodecBase 120 DCCLFieldCodecBase 120 char_array2hex_string goby transitional 92 ChatCurses 94 cpp_bool goby transitional 91 cpp_double goby transitional 91 cpp_long goby transitional 91 cpp_notype goby transitional 91 cpp_string goby transitional 91 DCCL_HEADER_NAMES goby transitional 93 DCCLCppType goby transitional 91 DCCLTransitionalCodec goby transitional DCCLTransitionalCodec 176 DCCLType goby transitional 91 dccl_bool goby transitional 91 dccl_enum goby transitional 91 dccl_float goby transitional 91 dccl_hex goby transitional 91 dccl_int goby transitional 91 dccl_static goby transitional 91 decl_string goby transitional 91 dccl_field_options goby acomms DCCLFieldCodecBase 121 decode goby acomms goby acomms goby acomms 112 goby acomms 132 goby acomms decode_repeated goby acomms do_work goby acomms ABCDriver 95 goby acomms ModemDriverBase 152 goby moos BluefinCommsDriver 167 goby moos UFldDriver 169 DCCLCodec 99 DCCLDefaultldentifierCodec 108 DCCLDefaultNumericFieldCodec DCCLRepeatedTypedFieldCodec DCCLTypedFieldCodec 138 DCCLCodec 100 encode goby acomms DCCLCodec 100 INDEX 198 goby acomms DCCLDefaultldentifierCodec 108 109 goby acomms DCCLDefaultNumericFieldCodec 112 goby acomms DCCLRepeatedTyped
136. e QueueManager destructor Initialization Methods These methods are intended to be called before doing any work with the class void set_cfg const protobuf QueueManagerConfig amp cfg Set and overwrite completely if present the current configuration protobuf QueueManagerContig defined in acomms_queue proto e void merge_cfg const protobuf QueueManagerConfig amp cfg Set and merge repeat fields the current configuration protobuf QueueManagerContfig defined in acomms_ queue proto e template lt typename ProtobufMessage gt void add_queue const protobuf QueuedMessageEntry amp queue_cfg Add a DCCL queue for use with QueueManager Note that the queue must be added before receiving messages with QueueManager e void add_queue const google protobuf Descriptor desc const protobuf QueuedMessageEntry amp queue_cfg Alternative method for adding Queues when using Dynamic Protobuf Messages Application level Push Receive Methods These methods are the primary higher level interface to the QueueManager From here you can push messages and set the callbacks to use on received messages void push_message const google protobuf Message amp new_message Push a message and add the queue if it does not exist e void push_message const google protobuf Message amp new_message const protobuf Queued MessageMeta x meta e void flush_queue const protobuf QueueFlush amp flush Flush delete all messages in a que
137. e lt goby util linebasedcomms serial_client h gt Inherits goby util LineBasedClient lt ASIOAsyncReadStream gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 46 goby util TCPClient Class Reference 181 Public Member Functions e SerialClient const std string amp name unsigned baud 9600 const std string amp delimiter r n create a serial client e void set_name const std string amp name set serial port name e g dev ttySO e void set_baud unsigned baud baud rate e g 4800 e std string name const serial port name e g dev ttySO unsigned baud const baud rate e g 4800 boost asio serial_port amp socket e std string local_endpoint our serial port e g dev ttyUSB1 std string remote_endpoint who knows where the serial port goes empty string Additional Inherited Members 17 45 1 Detailed Description provides a basic client for line by line text based communications over a 8N1 tty such as an RS 232 serial link without flow control Definition at line 37 of file serial_client h 17 45 2 Constructor amp Destructor Documentation 17 45 21 goby util SerialClient SerialClient const std string amp name unsigned baud 9600 const std string delimiter r n create a serial client Parameters name name of the serial connection e g dev ttyS0 baud baud rate of the serial connection e g 9600
138. e protobuf EnumValueDescriptor x gt goby acomms DCCLRepeatedTypedField Codec lt goby int32 gt and goby acomms DCCLDefaultldentifierCodec 17 13 2 31 virtual unsigned goby acomms DCCLFieldCodecBase min_size protected pure virtual Calculate minimum size of the field in bits Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 126 Returns Minimum size of this field in bits Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms DCCL RepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedFieldCodec lt Model value_type const google protobuf EnumValueDescriptor x gt goby acomms DCCLRepeatedTypedField Codec lt goby int32 gt and goby acomms DCCLDefaultldentifierCodec 17 13 2 32 void goby acomms DCCLFieldCodecBase require bool b const std string amp description inline protected Essentially an assertion to be used in the validate virtual method Parameters b Boolean to assert if true execution continues if false an exception is thrown description Debugging description for this assertion will be appended to the exception Exceptions DCCLException Thrown if lb Definition at line 323 of file dccl_field_codec h 17 13 2 33 static const google protobuf Descriptorx goby acomms
139. e any end of line character s Definition at line 60 of file driver_base cpp 17 29 2 6 virtual void goby acomms ModemDriverBase startup const protobuf DriverConfig amp cfg pure virtual Starts the modem driver Must be called before poll Parameters cfg Startup configuration for the driver and modem DriverConfig is defined in acomms_driver _base proto Derived classes can define extensions see http code google com apis protocolbuffers docs proto html extensions to DriverContfig to handle modem specific configuration Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 29 goby acomms ModemDriverBase Class Reference 155 Implemented in goby acomms MMDriver goby moos BluefinCommsDriver goby moos UFldDriver and goby acomms ABCDriver Examples acomms modemdriver driver_simple driver_simple cpp 17 29 3 Member Data Documentation 17 29 3 1 boost signals2 signal lt void protobuf ModemTransmission msg gt goby acomms ModemDriverBase signal_ data request Called when the modem or modem driver needs data to send The returned data should be stored in Modem Transmission frame You should connect one or more slots a function or member function to this signal to handle data requests Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll Modem Transmission is defined in acomms
140. e is of the type for this queue Definition at line 208 of file queue_manager h 17 31 3 3 boost signals2 signal lt void const google protobuf Message amp orig_msg gt goby acomms QueueManager signal_expire Signals when a message is expires exceeds its time to live or ttl before being sent if queue ack false or before being acknowledged if queue ack true Parameters expire_msg the expired transmission protobuf ModemDataExpire is defined in acomms_modem_ message proto Definition at line 201 of file queue_manager h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 32 goby common Colors Struct Reference 162 17 31 3 4 boost signals2 signal lt void protobuf QueueSize size gt goby acomms QueueManager signal_queue_size change Signals when any queue changes size message is popped or pushed Parameters size message containing the queue that changed size and its new size protobuf QueueSize is defined in acomms_queue proto Definition at line 213 of file queue_manager h 17 31 3 5 boost signals2 signal lt void const google protobuf Message amp msg gt goby acomms QueueManager signal_ receive Signals when a DCCL message is received Parameters msg the received transmission Examples acomms chat chat cpp and acomms queue queue_simple queue_simple cpp Definition at line 196 of file queue_
141. e of the last send from this queue and ft is the ttl option Essentially a message with low ttl will become effective quickly again after a sent message the priority line grows faster See Understanding dynamic priority queuing for further discussion Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 2 Queuing Protobuf Options 26 encode_on_demand bool false Advanced enable on demand encoding where rather than queueing data the data request is forwarded up to the application level via the signal goby acomms Queue Manager signal_data_ on_demand on_demand_skew_ double seconds Advanced if encode_on_demand true this sets the number of seconds before data encoded on demand are considering stale and thus must be demanded again with the signal goby acomms Queue Manager signal_data_ on_demand Setting this to 0 is unadvisable as it will cause many calls to goby acomms Queue Manager signal_data_ on_demand and thus waste CPU cycles needlessly encoding Queue Role options Queue needs to know how to address a message the source ID and destination ID as well as the time the message was generated This information either read from the fields of the of the DCCL message setting FIELD _VALUE or is statically configured setting STATIC In the latter case the configuration value static_value is set and used for every DCCL message of this typ
142. e port for the simulator to listen on Then run iFrontSeat in a MOOS community with pHelmlvP with the following configuration ProcessConfig iFrontSeat_bluefin common verbosity DEBUG1 abc_config optional tcp_address localhost required tcp_port 54321 optional default 54321 start lat 44 0888889 lon 9 84861111 duration 600 You can change the start position as desired Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 9 Todo List 60 9 Todo List Class goby acomms DCCLFieldCodecManager tes Make sanity check for newly added FieldCodecs 10 Module Index 10 1 Modules Here is a list of all modules API classes for the Dynamic Compact Control Language includes writing custom encoders 79 API classes for the major components of the Goby Acomms acoustic communications library D CCL Queue AMAC ModemDriver 79 11 Namespace Index 11 1 Namespace List Here is a list of all documented namespaces with brief descriptions goby The global namespace for the Goby project 80 goby acomms Objects pertaining to acoustic communications acomms 82 goby common Utility objects for performing functions such as logging non acoustic communication ethernet serial time scientific string manipulation etc 85 goby common tcolor Contains functions for adding color to Terminal window streams 88 goby pb Contains objects relating to the core publish subscribe architecture provide
143. e sent when the channel quality is high but important messages are not swamped by low priority data In contrast TCP IP considers all packets equally Packets made from a spam email are given the same consideration as a high priority email from the President This is a trade off in efficiency versus simplicity that makes sense for EM networking but does not for acoustic communications 2 1 4 Despite all this simplicity is good The law of diminishing returns means that at some point if we try to optimize excessively we will end up making the system more complex without substantial gain Thus goby acomms makes some concessions for the sake of simplicity e Numerical message fields are bounded by powers of 10 rather than 2 Humans deal much better with decimal than binary e User data splitting and subsequent stitching is not done This is a key component of TCP IP but with the number of dropped packets one can expect with acomms at the moment this does not seem like a good idea The user is expected to provide data that is smaller or equal to the packet size of the physical layer e g 32 256 bytes for the WHOI Micro Modem 2 1 5 Component model A relatively simple component model for the goby acomms library showing the interface classes Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 2 dccl Encoding and decoding
144. e that gets queued by this QueueManager In the former case the default you can tag a given field of a DCCL message to a particular role This takes the place of a fixed transport layer header that protocols such as UDP use The fields used in a given role can be anywhere within the message The field is identified by its name in the configuration value field Submessage fields can be used by separating the field names by periods until the child is a primitive type e g uint32 RoleType allowed field types description SOURCE_ID All integer types uint32 int32 uint64 int64 The value in this field is used to represent the sending address similar to an IP address of the message DESTINATION_ID All integer types uint32 int32 uint64 int64 The value in this field is used to represent the destination address similar to an IP address of the message 0 is reserved to indicate broadcast TIMESTAMP uint64 or double The value in this field is used as the timestamp of the message If the type is double it must be seconds and fractional seconds since the UNIX epoch 1970 01 01 midnight UTC If it is a uint64 it must be microseconds since the UNIX epoch This field used for expiring messages that exceed their ttl and thus must in general be set and correct Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 3 Interacting with the Que
145. ec lt WireType FieldType gt size const WireType 4 wire value inline virtual Calculate the size in bits of a non empty field Parameters wire_value Value to use when calculating the size of the field If calculating the size requires encoding the field completely cache the encoded value for a likely future call to encode for the same wire_value Returns the size in bits of the field Implements goby acomms DCCLTypedFieldCodec lt WireType Field Type gt Definition at line 260 of file dccl_field_codec_typed h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_typed h 17 18 goby acomms DCCLStaticCodec lt T gt Class Template Reference Placeholder codec that takes no space on the wire 0 bits include lt goby acomms dccl dccl_field_codec_default h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 19 goby acomms DCCLTimeCodec lt TimeType gt Class Template Reference 136 Inheritance diagram for goby acomms DCCLStaticCodec lt T gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt T T gt goby acomms DCCLlypedField Codec lt T T gt goby acomms DCCLTypedFixed FieldCodec lt T gt goby acomms DCCLStatic Codec lt T gt Additional Inherited Members 17 18 1 Detailed Description template lt typename T gt class goby acomms DCCLStaticC
146. ect is an extension to the Google Protobuf message iFrontSeatConfig For the ABC frontseat driver we use the abc_frontseat_ driver_config proto file to define the configuration import goby moos protobuf frontseat_config proto import goby common protobuf option_extensions proto message ABCFrontSeatConfig required string tcp_address 1 optional uint32 tcp _ port 2 default 54321 message StartParams required double lat required double lon Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 1 FrontSeat 58 required int32 duration 3 required StartParams start 3 extend iFrontSeatConfig optional ABCFrontSeatConfig abc_config 1001 In this case we need to know what IP address and TCP port the abc_frontseat_simulator is listening on and the starting position of the simulator Next you should fill out the virtual methods of FrontSeatInterfaceBase The method frontseat_state reports the driver s belief of the frontseat command state see State charts goby moos protobuf FrontSeatState AbcFrontSeat frontseat_state const return frontseat_state_ frontseat_state In this case we set the value of frontseat_status_ based on the received CTRL messages if parsed KEY CTRL if parsed STATE PAYLOAD frontseat_state_ gpb FRONTSEAT_ACCEPTING_COMMANDS else if parsed STATE AUV frontseat_state_ gpb FRONTSEAT_IN_CONTROL
147. ed Description Provides various representations of a google protobuf FieldDescriptor CppType enumeration and ways to access the google protobuf Reflection object for a given type Definition at line 158 of file protobuf_cpp_type_helpers h 17 24 2 Member Function Documentation 17 24 2 1 void goby acomms FromProtoCppTypeBase add_value const google protobuf FieldDescriptor x field google protobuf Message msg boost any value inline Add a new entry for a repeated field to the back Parameters msg Message to set value in Returns boost any containing the value The type is usually the type returned by google protobuf Reflection Add lt i gt Type where Type is the corresponding google protobuf FieldDescriptor Cpp Type See http code google com apis protocolbuffers docs reference cpp google protobuf message html Reflection Definition at line 229 of file protobuf_cpp_type_helpers h 17 24 2 2 boost any goby acomms FromProtoCppTypeBase get_repeated_value const google protobuf FieldDescriptor field const google protobuf Message amp msg int index inline Get the value of a repeated field at a given index Parameters field Field to get value for msg Message to get value from index Index of the repeated array to get value for Returns boost any containing the value The type is usually the type returned by google protobuf Reflection
148. ed in sending a message using goby acomms The WHOI Micro Modem is used as example firmware but the specific modemdriver firmware interaction will depend on the acoustic modem used Model that shows the commands needed to start and keep goby acomms running Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 goby acomms DCCL Dynamic Compact Control Language 10 Application libdccl libqueue libamac libmodemdriver l l bind modem DriverBase amp queue QueueManager amp amac MACManager amp connect slots to QueueManager signals l l i l l l set_cfg t gt l l l l set_cfg H gt 1 startup gt i l startup i l l l gt l l do_work E A i do_work run DriverBase do_work i i at at least 5 Hz gt do_work i I i gt do_work i j T T gt do_work do_work r run MACManager do_work and i QueueManager do_work at at least 1 Hz i do_work L fi 1 gt i l l do_work l i L fi i i i do_work l l l i Figure 3 UML model that illustrates the set of commands needed to start up goby acomms and keep it running 3 goby acomms DCCL Dynamic Compact Control Language Table of contents for libdccl e Designing a message e Interacting with the
149. edhead goebbet eee td tbea Pewee eta Ge 4 27 4 4 3 Test2 Test3 Test4 2 ee 28 ABA TOSS eset woe ee ee OR ee ee wee ee te RA 28 5 goby acomms amac Medium Access Control 29 5 1 Supported MAC schemes 226658 ne ee bee eee Re eee eed ees 29 5 2 Interacting with the goby acomms MACManager 000 eee ee ee ee 29 6 goby acomms modemdriver Driver to interact with modem firmware 31 6 1 Abstract class ModemDriverBase 31 6 1 1 Interacting with the goby acomms ModemDriverBase 31 6 2 Protobuf Message goby acomms protobuf ModemTransmission o 32 Gnd VEN anew GNIVEN osas os s ak ee Roe A RA Be Awa RR E fa 32 6 4 WHOI Micro Modem Driver MMDriver 2 2 2 ee ee 36 6 4 1 Supported Functionality lt lt ss eee ede eee ee dura eee rdw 36 6 4 2 Micro Modem NMEA to Goby ModemTransmission mapping 36 6 4 3 Sequence diagrams for various Micro Modem features using Goby 44 7 goby util Overview of Utility Libraries 50 8 goby moos An overview of the Goby MOOS interoperability library 53 Gl e o o 6 he he He be eb eth so bE AER a aeaa eA wd onde ee oS 4 53 8 1 1 Writing a new driver for iFrontSeat 2 2 0 e 2 53 9 Todo List 59 10 Module Index 59 TOT Modules ie iaa dead ee e Pe a de rr e a 59 11 Namespace Index 59 TET o AENA 59 12 Class Index 59 Generated on Wed Mar 26 2014 01 41 49 for Goby
150. else frontseat_state_ gpb FRONTSEAT_IDLE The method frontseat_providing_data reports the frontseat s data state see State charts lt must return true if the frontseat is providing data to the driver reasonably often where reasonable is defined by the driver Here we set the class member variable frontseat_providing_data_ to true each time we get a NAV message and then false if we have had no NAV messages in the last 10 seconds bool AbcFrontSeat frontseat_providing_data const i return frontseat_providing_data_ frontseat_providing_data The method send_command_to_frontseat is called whenever iFrontSeat needs to send a command to the frontseat This command typically contains a desired heading speed and depth but could alter natively contain a special command defined via an extension to the goby moos protobuf Command Request message void AbcFrontSeat send_command_to_frontseat const gpb CommandRequest amp command if command has_desired_course std stringstream cmd_ss const goby moos protobuf DesiredCourse amp desired_course command desired_course cmd_ss lt lt CMD lt lt HEADING lt lt desired_course heading lt lt lt lt SPEED lt lt desired_course speed lt lt lt lt DEPTH lt lt desired_course depth write cmd_ss str last_request_ command else 1 glog is VERBOSE amp amp glog lt lt Unhandled command lt
151. emdriver driver_exception h 22 goby acomms modemdriver mm_driver h 22 goby acomms modemdriver udp_driver h 22 goby acomms protobuf abc_driver pb h 22 goby acomms protobuf abc_driver proto 22 goby acomms protobuf amac pb h 22 goby acomms protobuf amac proto 22 goby acomms protobuf amac_config pb h 22 goby acomms protobuf amac_config proto 22 goby acomms protobuf arithmetic_extensions pb h 22 goby acomms protobuf arithmetic_extensions proto 2 goby acomms protobuf ccl pb h 22 goby acomms protobuf ccl proto 2 goby acomms protobuf ccl_extensions pb h 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen goby apps acomms goby_modemdriver modemdriver_config proto 14 1 File List 69 goby acomms protobuf dccl pb h 22 goby acomms protobuf dccl proto 2 goby acomms protobuf dccl_option_extensions pb h 22 goby acomms protobuf dccl_option_extensions proto 2 goby acomms protobuf driver_base pb h 22 goby acomms protobuf driver_base proto 2 goby acomms protobuf file_transfer pb h 22 goby acomms protobuf file_transfer proto 22 goby acomms protobuf manipulator pb h 22 goby acomms protobuf manipulator proto 2 goby acomms protobuf mm_driver pb h 22 goby acomms protobuf mm_driver proto 22 goby acomms protobuf modem_message pb h 2 goby acomms protobuf modem_message proto 2 goby acomms protobuf network_ack pb h 22 goby acomms protobuf network_ack proto 22 goby acomms protobuf queue pb h 22 goby acomms protobuf queue proto 2 goby a
152. equired Header header 2 protobuf header proto import goby common protobuf option_extensions proto import goby acomms protobuf dccl_option_extensions proto required fields will be filled in for you by ApplicationBase if you choose not to do so yourself message Header result of goby util as lt std string gt goby_time e g 2002 01 20 23 59 59 000 required string time 10 dccl field codec _time Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 20 dccl field in_head true source Pe required string source_platform 11 dccl field codec _platform lt gt modem_id dccl field in_head true optional string source_app 12 dccl field omit true destination ff enum PublishDestination PUBLISH_SELF 1 PUBLISH_OTHER 2 PUBLISH_ALL 3 optional PublishDestination dest_type 13 default PUBLISH_SELF dccl field in_head true optional string dest_platform 14 dccl field codec _platform lt gt modem_id dcecl field in_head true required if dest_type other See Also dccl3 test cpp 3 5 5 DCCL Test4 dccl4 test proto import goby acomms protobuf dccl_option_extensions proto import goby test acomms dccl3 header proto message GobyMessagel option dccl msg id 4 option dccl msg max_bytes 32 optional int32 int32_val 1 dccl field min 0 dccl field max
153. er_ mac_ Initiate DCCL libdccl fy goby acomms protobuf DCCLConfig dccl_cfg dccl_ gt validate lt ChatMessage gt fi Initiate queue manager libqueue goby acomms protobuf QueueManagerConfig q_manager_cfg q_manager_cfg set_modem_id my_id_ goby acomms protobuf QueuedMessageEntryx q_entry q_manager_cfg add_message_entry q_entry gt set_protobuf_name ChatMessage goby acomms protobuf QueuedMessageEntry Rolex src_role q_entry gt add_role src_role gt set_type goby acomms protobuf QueuedMessageEntry SOURCE_ID src_role gt set_field source goby acomms protobuf QueuedMessageEntry Rolex dest_role q_entry gt add_role dest_role gt set_type goby acomms protobuf QueuedMessageEntry DESTINATION_ID dest_role gt set_field destination goby acomms connect amp q_manager_ signal_receive amp received_data goby acomms connect amp q_manager_ signal_ack amp received_ack Initiate modem driver libmodemdriver Ke goby acomms protobuf DriverConfig driver_cfg driver_cfg set_modem_id my_id_ driver_cfg set_serial_port serial_port tt Initiate medium access control libamac ee goby acomms protobuf MACConfig mac_cfg mac_cfg set_type goby acomms protobuf MAC_FIXED_DECENTRALIZED mac_cfg set_modem_id my_id_ goby acomms connect amp mac_ s
154. espace Reference 83 const std string VERSION_STRING 2 0 5 rc1 const std string VERSION_DATE 2014 03 25 Logger common FlexOstream glog Access the Goby logger through this object 16 1 1 Detailed Description The global namespace for the Goby project All objects related to the Goby Underwater Autonomy Project 16 1 2 Function Documentation 16 1 2 1 template lt typename App gt int goby run int argc char x argv Run a Goby application derived from MinimalApplicationBase blocks caller until MinimalApplicationBase _ run returns Parameters argc same as int main int argc charx argv argv same as int main int argc charx argv Returns same as int main int argc charx argv Definition at line 109 of file application_base h 16 2 goby acomms Namespace Reference Objects pertaining to acoustic communications acomms Classes e class MACManager provides an API to the goby acomms MAC library MACManager is essentially a std list lt protobuf Modem Transmission gt plus a timer class DCCLCodec provides an API to the Dynamic CCL Codec e class DCCLException Exception class for libdccl class DCCLFieldCodecBase Provides a base class for defining DCCL field encoders decoders Most users will use the DCCL TypedFieldCodec or its children e g DCCL TypedFixedFieldCodec instead of directly inheriting from this class class DCCLDefaultldentifierCodec Provide
155. essfully cast to this type Definition at line 231 of file message_val cpp 17 42 2 5 goby transitional DCCLMessageVal operator bool const allows statements of the form bool b DCCLMessageVal 1 Definition at line 278 of file message_val cpp 17 42 2 6 goby transitional DCCLMessageVal operator double const allows statements of the form double d DCCLMessageVal 3 23 Definition at line 270 of file message_val cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 42 goby transitional DCCLMessageVal Class Reference 176 17 42 2 7 goby transitional DCCLMessageVal operator float const allows statements of the form float f DCCLMessageVal 3 5 Definition at line 309 of file message_val cpp 17 42 2 8 goby transitional DCCLMessageVal operator int const allows statements of the form int i DCCLMessageVal 2 Definition at line 299 of file message_val cpp 17 42 2 9 goby transitional DCCLMessageVal operator long const allows statements of the form long 1 DCCLMessageVal 5 Definition at line 292 of file message_val cpp 17 42 2 10 goby transitional DCCLMessageVal operator std string const allows statements of the form std string s DCCLMessageVal 3 Definition at line 285 of file message_val cpp 17 42 2 11 goby transitional DCCLMessageVal operator unsigned const allows statements of the form unsigned u DCCLMessageVal 2
156. est proto Definition at line 297 of file decl h 17 4 2 7 template lt typename ProtobufMessage gt unsigned goby acomms DCCLCodec id const inline Gives the DCCL id defined by the custom message option extension goby msg dccl id in the proto file This ID is used on the wire to unique identify incoming message types Template Parameters ProtobufMessage Any Google Protobuf Message generated by protoc i e subclass of google protobuf Message Definition at line 164 of file decl h 17 4 2 8 unsigned goby acomms DCCLCodec id_from_encoded const std string amp bytes Get the DCCL ID of an unknown encoded DCCL message You can use this method along with id to handle multiple types of known static incoming DCCL me code unsigned dccl_id codec gt id_from_encoded bytes if dccl_id codec gt id lt MyProtobufType1 gt MyProtobuf Type1 msg_out1 codec gt decode bytes amp msg_ out else if dccl_id codec gt id lt MyProtobufType2 gt My ProtobufType2 msg_out2 codec gt decode bytes amp msg_out2 Parameters bytes encoded message to get the DCCL ID of Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 103 Returns DCCL ID See Also test acomms dccl8 test cpp and test acomms dccl8 test proto Definition at line 197 of file dccl cpp 17 4 2 9 template lt typename ProtobufMessa
157. eueManager 159 readline goby util LineBasedInterface 179 require goby acomms DCCLFieldCodecBase 125 run goby 82 SerialClient goby util SerialClient 180 serialize_for_moos moos_protobuf_helpers h 185 set goby transitional DCCLMessageVal 175 set_id_codec goby acomms DCCLCodec 102 set_value goby acomms FromProtoCppTypeBase 145 signal_ack goby acomms QueueManager 160 signal_data_on_demand goby acomms QueueManager 160 signal_data_request goby acomms ModemDriverBase 154 signal_expire goby acomms QueueManager 160 signal_initiate_transmission goby acomms MACManager 148 signal_modify_transmission goby acomms ModemDriverBase 154 signal_queue_size_change goby acomms QueueManager 160 signal_raw_incoming goby acomms ModemDriverBase 154 signal_raw_outgoing goby acomms ModemDriverBase 154 signal_receive goby acomms ModemDriverBase 154 goby acomms QueueManager 161 signal_transmit_result goby acomms ModemDriverBase 155 size goby acomms DCCLCodec 102 goby acomms DCCLDefaultldentifierCodec 109 goby acomms DCCLRepeatedTypedFieldCodec 133 134 goby acomms DCCL TypedFieldCodec 139 size_repeated goby acomms DCCLCodec 103 startup goby acomms ABCDriver 96 goby acomms MACManager 148 goby acomms MMDriver 150 goby acomms ModemDriverBase 153 goby moos BluefinCommsDriver 168 goby moos UFldDriver 170 subscribe goby pb Applicatio
158. expire All other signals are emitted in response to a driver level signal and thus are called during a call to goby acomms ModemDriverBase do_work if using the Goby modemdriver See queue_simple cpp for a basic complete example 4 4 Example messages This section provides a listing of queue example Protobuf messages used in the code examples and unit tests 4 4 1 Minimal functional DCCL Queue message simple proto import goby acomms protobuf dccl_option_extensions proto message Simple see http gobysoft org wiki DcclIdTable option dccl msg id 124 if for example we want to use on the WHOI Micro Modem rate 0 option dccl msg max_bytes 32 required string telegram 1 dccl field max_length 30 4 4 2 Testi queue1 test proto import goby acomms protobuf dccl_option_extensions proto message TestMsg o ption dccl msg id 2 ption dccl msg max_bytes 32 o test default enc dec ptional double double_default_optional 1 dccl field min 100 dcecl field max 126 decl field precision 2 dccl field in_head true optional float float_default_optional 2 dccl field min 20 dccl field max 150 dccl field precision 3 o Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 4 Example messages 29 See Also queue1 test cpp 4 4 3 Test2 Test3 Test4 dccl3 test proto import goby common protobuf option_extensi
159. f bits on the wire 137 goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Base class for static typed field encoders decoders that use a fixed number of bits on the wire regardless of the value of the field Use DCCLTypedFieldCodec if your encoder is variable length See DCCLTypedFieldCodec for an explanation of the template parameters Field Type and WireType 140 goby acomms DCCLTypeHelper Provides FromProtoTypeBase and FromProtoCppTypeBase type identification helper classes for various representations of the underlying field 141 goby acomms FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAGE gt Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using the dynamic google protobuf Message as the underlying class 142 goby acomms FromProtoCppTypeBase Provides various representations of a google protobuf FieldDescriptor CppType enumera tion and ways to access the google protobuf Reflection object for a given type 143 goby acomms FromProtoCustomMessage lt CustomMessage gt Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using a specific statically gen erated Protobuf class 145 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 13 1 Class List 66 goby acomms FromProtoTypeBase Provides various representations of a google protobuf FieldDescriptor Type enumeration Implementations are provided for all enumerations 146 goby acomms MACManager API to the g
160. f the value of the field Use DCCL TypedFieldCodec if your encoder is variable length See DCCL TypedFieldCodec for an explanation of the template parameters FieldType and Wire Type e class DCCLFieldCodecManager class DCCLFieldCodecSelector if Wire Type FieldType we don t have to add any more virtual methods for converting between them e class DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt Wire Type FieldType gt gt type gt If WireType FieldType adds some more pure virtual methods to handle the type conversions pre_encode and post_decode If WireType FieldType this class is not inherited and this pure virtual methods do not exist and thus can be omitted in the child class class DCCLTypedFieldCodec Base class for static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCL TypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire class DCCLRepeatedTypedFieldCodec Base class for repeated multiple value static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCL TypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire Use DCCL TypedFieldCodec if your fields are always singular optional or required Singular fields are defau
161. figure with a few slots fy goby acomms protobuf MACConfig cfg cfg set_modem_id 1 cfg set_type goby acomms protobuf MAC_FIXED_DECENTRALIZED goby acomms protobuf ModemTransmissionx slot cfg add_slot slot gt set_src 1 slot gt set_rate 0 slot gt set_type goby acomms protobuf ModemTransmission DATA slot gt set_slot_seconds 5 3 Set up the callback fy give a callback to use for actually initiating the transmission this would be bound to goby acomms ModemDriverBase initiate_transmission if using libmodemdriver goby acomms connect amp mac signal_initiate_transmission amp init_transmission fil 4 Let it run for a bit alone in the world th mac startup cfg for unsigned i 1 i lt 150 i mac do_work usleep 100000 5 Add some slots modem ids 2 amp 3 and LBL ping from 1 remember MACManager is a std list lt goby acomms protobuf ModemTransmission gt at heart one way we can do this goby acomms protobuf ModemTransmission new_slot new_slot set_src 2 new_slot set_rate 0 new_slot set_type goby acomms protobuf ModemTransmission DATA new_slot set_slot_seconds 5 mac push_back new_slot another way mac resize mac size 1 mac back CopyFrom mac front mac back set_src 3 mac resize mac size 1 mac back CopyFrom mac front mac back set_type
162. for this class was generated from the following file goby acomms dccl dccl_field_codec_typed h 17 17 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Refer ence Base class for repeated multiple value static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire Use DCCLTypedFieldCodec if your fields are always singular optional or required Singular fields are default implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector include lt goby acomms dccl dccl_field_codec_typed h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 17 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Reference 132 Inheritance diagram for goby acomms DCCLRepeatedTypedFieldCodec lt Wire Type Field Type gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt Wire Type FieldType gt goby acomms DCCLlypedField Codec lt WireType Field Type gt goby acomms DCCLRepeated TypedFieldCodec lt WireType FieldType gt Public Types e typedef WireType wire_type typedef FieldType field_type Public Member Functions e virtual Bitset encode_repeated const std vector lt WireType gt
163. for this class was generated from the following files goby acomms dccl dccl_field_codec_default h src acomms dccl dccl_field_codec_default cpp 17 9 goby acomms DCCLDefaultMessageCodec Class Reference Provides the default codec for encoding a base Google Protobuf message or an embedded message by calling the appropriate field codecs for every field include lt goby acomms dccl dccl_field_codec_default_message h gt Inheritance diagram for goby acomms DCCLDefaultMessageCodec goby acomms DCCLFieldCodecBase goby acomms DCCLDefault MessageCodec Additional Inherited Members 17 9 1 Detailed Description Provides the default codec for encoding a base Google Protobuf message or an embedded message by calling the appropriate field codecs for every field Definition at line 38 of file dccl_field_codec_default_message h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_default_message h src acomms dccl dccl_field_codec_default_message cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 10 goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt Class Template Reference 112 17 10 goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt Class Template Refer ence Provides a basic bounded arbitrary length numeric double float uint82 uint64 int32 int64 encoder include lt goby acom
164. frastructure initially uses SonarDyne as un derlying hardware 167 goby moos UFldDriver Simulator driver to the uFldNodeComms MOOS module http oceanai mit edu moos ivp pmwiki pmwiki php n Modules UF1dNodeComms 168 goby pb Application Base class provided for users to generate applications that participate in the Goby publish subscribe architecture 170 goby transitional DCCLMessageVal Defines a DCCL value 172 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 14 File Index 67 goby transitional DCCLTransitionalCodec API to the Transitional Dynamic CCL Codec looks like DCCLv1 but calls DCCLv2 Warning this class is for legacy support only new applications should use DCCLCodec directly 176 goby util LineBasedinterface Basic interface class for all the derived serial and networking mimics line based nodes serial tcp udp etc 178 goby util SerialClient Basic client for line by line text based communications over a 8N1 tty such as an RS 232 serial link without flow control 179 goby util TCPClient Basic TCP client for line by line text based communications to a remote TCP server 180 goby util TCPServer Basic TCP server for line by line text based communications to a one or more remote TCP clients 181 Group Defines a group of messages to be sent to the Goby logger For Verbosity verbose streams all entries appear interleaved but each group is offset with a different color For
165. g one of the classes inheriting ModemDriverBase this method should be bound and passed to ModemDriver Base signal_receive Parameters message The received ModemMessage Examples acomms queue queue_simple queue_simple cpp Definition at line 529 of file queue_manager cpp 17 31 2 5 template lt typename ProtobufMessage gt void goby acomms QueueManager info std ostream os const inline Writes a human readable summary including DCCLCodec info of the queue for the provided DCCL type to the stream provided Template Parameters ProtobufMessage Any Google Protobuf Message generated by protoc i e subclass of google protobuf Message Parameters os Pointer to a stream to write this information Definition at line 149 of file queue_manager h 17 31 2 6 void goby acomms QueueManager info_all std ostream os const Writes a human readable summary including DCCLCodec info of all loaded queues Parameters os Pointer to a stream to write this information Definition at line 176 of file queue_manager cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 31 goby acomms QueueManager Class Reference 161 17 31 2 7 void goby acomms QueueManager push_message const google protobuf Message new_message Push a message and add the queue if it does not exist Parameters new_message DCCL message to
166. ge gt void goby acomms DCCLCodec info std ostream os const inline Writes a human readable summary including field sizes of the provided DCCL type to the stream provided Template Parameters ProtobufMessage Any Google Protobuf Message generated by protoc i e subclass of google protobuf Message Parameters OS Pointer to a stream to write this information Definition at line 152 of file dccl h 17 4 2 10 void goby acomms DCCLCodec info_all std ostream os const Writes a human readable summary including field sizes of all the loaded validated DCCL types Parameters OS Pointer to a stream to write this information Definition at line 533 of file decl cpp 17 4 2 11 void goby acomms DCCLCodec load_shared_library_codecs void x di_handle Load any codecs present in the given shared library handle Codecs must be loaded within the shared library using a C function declared extern C called goby_dccl_load with the signature void goby_dccl_load goby acomms DCCLCodec codec Definition at line 492 of file dccl cpp 17 4 2 12 void goby acomms DCCLCodec set_id_codec const std string amp identifier inline Sets the DCCL id codec currently in use The DCCL ID codec will be set and used for all relevant calls to encode decode etc until this method is called again with a different identifier or reset_id_codec is called P
167. hares an underlying C type e g Protobuf types bytes and string Template Parameters Codec A child of DCCLFieldCodecBase type The google protobuf FieldDescriptor Type enumeration that this codec works on Parameters name Name to use for this codec Corresponds to goby field dccl codec name in proto file Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 15 goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt Class Template Reference 129 17 14 2 4 static boost shared_ptr lt DCCLFieldCodecBase gt goby acomms DCCLFieldCodecManager find const google protobuf Descriptor x desc std string name inline static Find the codec for a given base or embedded message Parameters desc Message descriptor to find codec for name Codec name used for embedded messages to prefer the codec listed as a field option Omit for finding the codec of a base message one that is not embedded Definition at line 94 of file dccl_field_codec_manager h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_manager h src acomms dccl dccl_field_codec_manager cpp 17 15 goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt Class Template Refer ence if WireType FieldType we don t have to add any more virtual methods for converting between
168. he frontseat never runs missions without backseat control this state may not be implemented Data state not diagrammed above frontseat_providing_data true The frontseat is providing all required data What is required is deter mined by the specific driver but at a minimum is the navigation solution frontseat_providing_data false The frontseat is not providing all required data The state transitions for the iFrontSeat interface states are using the names as defined in the enumerations in moos protobuf frontseat proto Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 1 FrontSeat 56 From To Action Start INTERFACE_STANDBY Configuration Read INTERFACE_STANDBY INTERFACE_LISTEN frontseat_providing_data true INTERFACE_LISTEN INTERFACE_COMMAND FRONTSEAT_ACCEPTING_CO MMANDS amp amp HELM_DRIVE INTERFACE_COMMAND INTERFACE_LISTEN FRONTSEAT_IN_CONTROL FRONTSEAT_IDLE amp amp HELM_DRIVE INTERFACE_COMMAND INTERFACE_HELM_ERROR HELM_NOT_RUNNING HELM_PARK INTERFACE_LISTEN INTERFACE_COMMAND INTERFACE_HELM_ERROR HELM_PARK if nhelm_enabled HELM_NOT_RUNNING after timeout INTERFACE_LISTEN INTERFACE_COMMAND INTERFACE_FS_ERROR FRONTSEAT_NOT_CONNECTE D frontseat_providing_data false INTERFACE_STANDBY INTERFACE_FS_ERROR FRONTSEAT_NOT_CONNECTE D after timeout INTERFACE_
169. hen a message is sent to goby acomms BROADCAST_ID 0 it should be broadcast if the modem sup ports such functionality Otherwise the driver should throw an goby acomms ModemDriverException indi cating that it does not support broadcast allowing the user to reconfigure their MAC addressing scheme 6 4 WHOI Micro Modem Driver MMDriver 6 4 1 Supported Functionality The goby acomms MMDriver extends the goby acomms ModemDriverBase for the WHO Micro Modem acoustic modem It is tested to work with revision 0 94 0 00 of the Micro Modem firmware but is known to work with older firmware at least 0 92 0 85 It is likely to work properly with newer firmware and any problems while using newer Micro Modem firmware should be filed as abug in Goby The following features of the WHOI Micro Modem are implemented which comprise the majority of the Micro Modem functionality FSK rate 0 data transmission PSK rates 1 2 3 4 5 data transmission Narrowband transponder LBL ping REMUS transponder LBL ping User mini packet 13 bit data transmission e Two way ping See the UML diagrams for a graphical diagram of using Goby for each of these features 6 4 2 Micro Modem NMEA to Goby ModemTransmission mapping Mapping between modem_message proto and mm_driver proto messages and NMEA fields see http acomms whoi edu documents uModem 20Software 20Interface 20Guide pdf for N MEA fields of the WHOI Micro Modem Modem to Control Comp
170. i amp Bs received_data Push a message to a queue Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 6 acomms queue queue_simple queue_simple cpp 196 te E pif let s make a message to store in the queue Simple msg msg set_telegram hello all q_manager push_message msg std cout lt lt 1 pushing message to queue 1 lt lt msg lt lt std endl see what our QueueManager contains std cout lt lt 2 lt lt q_manager lt lt std endl ee 3 Create a loopback to simulate the Link Layer libmodemdriver amp modem firmware std cout lt lt 3 executing loopback simulating sending a message to ourselves over the modem link lt lt std endl pretend the modem is requesting data of up to 32 bytes goby acomms protobuf ModemTransmission request_msg request_msg set_max_frame_bytes 32 request_msg set_max_num_frames 1 q_manager handle_modem_data_request amp request_msg std cout lt lt 4 requesting data got lt lt request_msg lt lt std endl std cout lt lt tdata as hex lt lt goby util hex_encode request_msg frame 0 lt lt std endl 4 Pass the received message to the QueueManager same as outgoing message q_manager handle_modem_receive request_msg return 0 5 Do something with the received message void received_data const google protobuf Message a
171. ieldCodecBase field_size unsigned x bit size const boost any amp field_value const google protobuf FieldDescriptor x field Calculate the size of a field Parameters bit_size Location to add calculated bit size to Be sure to zero bit_size if you want only the size of this field field_value Value calculate size of FieldType field Protobuf descriptor to the field Set to O for base message Definition at line 102 of file dccl_field_codec cpp 17 13 2 26 void goby acomms DCCLFieldCodecBase field_size_repeated unsigned bit_size const std vector lt boost any gt wire_values const google protobuf FieldDescriptor x field Calculate the size of a repeated field Parameters bit_size Location to add calculated bit size to Be sure to zero bit_size if you want only the size of this field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 125 field_values Values to calculate size of Field Type field Protobuf descriptor to the field Set to O for base message Definition at line 115 of file dccl_field_codec cpp 17 13 2 27 google protobuf FieldDescriptor Type goby acomms DCCLFieldCodecBase field_type const inline the type exposed to the user in the original and decoded Protobuf messages Returns the Google Protobuf message type See http code google com
172. ieldType gt goby acomms DCCLDefaultNumericFieldCodec lt uint32 gt goby acomms DCCLDefaultNumericFieldCodec lt int32 const google protobuf EnumValueDescriptor x gt goby acomms DCCLDefaultNumericFieldCodec lt int32 TimeType gt and goby acomms DCCLDefaultldentifierCodec 17 20 2 2 template lt typename WireType typename FieldType WireType gt virtual Bitset goby racomms DCCLTypedFieldCodec lt WireType FieldType gt encode pure virtual Encode an empty field Returns Bits represented the encoded field Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms D CCLRepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedField Codec lt Model value_type const google protobuf EnumValueDescriptor x gt goby acomms DCCLRepeated TypedFieldCodec lt goby int32 gt goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt goby acomms DCCLDefaultNumericFieldCodec lt uint32 gt goby acomms DCCLDefaultNumericFieldCodec lt int32 const google protobuf EnumValueDescriptor x gt goby acomms DCCLDefaultNumericFieldCodec lt int32 TimeType gt and goby acomms DCCLDefaultidentifierCodec Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 20 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Class Template Reference 140 17 20 2 3 template lt typename WireType typena
173. ignal_initiate_transmission amp monitor_mac goby acomms protobuf ModemTransmission my_slot my_slot set_src my_id_ my_slot set_dest buddy_id_ my_slot set_rate 0 my_slot set_slot_seconds 12 my_slot set_type goby acomms protobuf ModemTransmission DATA goby acomms protobuf ModemTransmission buddy_slot buddy_slot set_src buddy_id_ buddy_slot set_dest my_id_ buddy_slot set_rate 0 buddy_slot set_slot_seconds 12 buddy_slot set_type goby acomms protobuf ModemTransmission DATA if my_id_ lt buddy_id_ 1 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 2 acomms chat chat cpp 190 mac_cfg add_slot gt CopyFrom my_slot mac_cfg add_slot gt CopyFrom buddy_slot else mac_cfg add_slot gt CopyFrom buddy_slot mac_cfg add_slot gt CopyFrom my_slot Start up everything El try dccl_ gt set_cfg decl_cfg q_manager_ set_cfg q_manager_cfg mac_ startup mac_cfg mm_driver_ startup driver_cfg catch std runtime_error amp e std cerr lt lt exception at startup lt lt e what lt lt std endl return startup_failure curses_ set_modem_id my_id_ curses_ startup ve Loop until terminated CTRL C for 7 std string line curses_ run_input line if line empty ChatMessage message_out message_out set_telegram line
174. ile dccl_transitional cpp 17 43 3 Member Function Documentation 17 43 3 1 std set lt unsigned gt goby transitional DCCLTransitionalCodec all_message_ids Returns set of all message ids loaded 17 43 3 2 std set lt std string gt goby transitional DCCLTransitionalCodec all message_names _ Returns set of all message names loaded 17 43 3 3 template lt typename Key gt unsigned goby transitional DCCLTransitionalCodec get_repeat const Key amp k inline Returns repeat value number of copies of the message per encode Definition at line 134 of file dccl_transitional h 17 43 3 4 std string goby transitional DCCLTransitionalCodec id2name unsigned id inline Parameters id message id Returns name of message Definition at line 148 of file dccl_transitional h 17 43 3 5 unsigned goby transitional DCCLTransitionalCodec message_count inline how many message are loaded Returns number of messages loaded Definition at line 130 of file dccl_transitional h 17 43 3 6 template lt typename Key gt std map lt std string std string gt goby transitional DCCLTransitionalCodec message _var_names const Key amp k const inline Returns map of names to DCCL types needed to encode a given message Definition at line 143 of file dccl_transitional h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 44 goby util LineBasedinterface Clas
175. in 0 dccl field max 0x0F dcecl field in_head true required uint32 user 3 dccl field min 0 dccl field max 0x0F dccl field in_head true message MiniAbort Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 goby acomms queue Message Priority Queuing 23 option dccl msg id 1000003 option dccl msg max_bytes 2 required uint32 user 1 dccl field min 0 dccl field max 0x03FF dcecl field in_head true message NormalDCCL option dccl msg id 1 option dccl msg max_bytes 32 dccl field min 0 dccl field max OxFFFF dccl field min 0 dccl field max 0xFFFF required int32 a 1 required int32 b 2 See Also dccl9 test cpp 4 goby acomms queue Message Priority Queuing Table of Contents for queue e Understanding dynamic priority queuing Queuing Protobuf Options e Interacting with the QueueManager Instantiate and configure Signals and application layer slots Operation Return to goby acomms An overview of Acoustic Communications Library 4 1 Understanding dynamic priority queuing Each queue has a base value Vpase and a time to live ttl that create the priority P t at any given time t t tast P t Voase itl where tast is the time of the last send from this queue This means for every queue the user has control over two variables Vpase and ttl Vase is intended t
176. in mm_driver proto for the WHOI Micro Modem These extensions provide access to additional features of the WHOI Micro Modem such as LBL ranging two way pings and comprehensive receive statistics By making use of the Protobuf extensions in this way Goby can both support unique features of a given modem while at that same time remaining general and agnostic to which modem is used when the features are shared primarily data transfer 6 3 Writing a new driver All of goby acomms is designed to be agnostic of which physical modem is used Different modems can be sup ported by subclassing goby acomms ModemDriverBase You should check that a driver for your modem does not yet exist before attempting to create your own These are the requirements of the acoustic modem it communicates using a line based text duplex connection using either serial or TCP either client or server NMEA0183 and AT Hayes protocols fulfill this requirement for example Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 3 Writing a new driver 34 e itis capable of sending and verifying the accuracy using a cyclic redundancy check or similar error checking of fixed size datagrams note that modems capable of variable sized datagrams also fit into this category Optionally it can also support Acoustic acknowledgment of proper message receipt Ranging to another acoustic modem or LBL beacons using time of flight measurements
177. ing and goby acomms DCCL dccl_simple cpp decoding Codec two_message cpp chat cpp Session Not used sessions are established passively Transport queue Priority based goby acomms Queue queue_simple cpp message queuing Manager chat cpp Network Does not yet exist All transmissions are considered single hop currently Addressing routing over multiple hops is an open and pressing research problem Data Link modemdriver Modem classes derived from driver_simple cpp driver goby acomms Modem chat cpp DriverBase e g goby acomms MM Driver amac Medium Access goby acomms MAC amac_simple cpp Control MAC Manager chat cpp Physical Not part of Goby Modem Firmware e g WHOI Micro Modem Firmware NMEA 0183 on RS 232 see Interface Guide 2 1 1 Acoustic Communications are slow Do not take the previous analogy too literally some things we are doing here for acoustic communications here after acomms are unconventional from the approach of networking on electromagnetic carriers hereafter EM networking The difference is a vast spread in the expected throughput of a standard internet hardware carrier and acoustic communications For example an optical fiber can put through greater than 10 Tbps over greater than 100 km whereas the WHOI acoustic Micro Modem can at best do 5000 bps over several km This is a difference of thirteen orders of magnitude for the bit rate distance product 2 1 2 Efficiency to make messages small
178. int64 gt 140 goby acomms DCCLFieldCodecSelector lt WireType FieldType gt 128 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt 137 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt 130 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 12 1 Class Hierarchy 63 goby acomms DCCLTypedFixedFieldCodec lt WireType Field Type gt goby acomms DCCLDefaultNumericFieldCodec lt WireType Field Type gt goby acomms DCCLDefaultMessageCodec goby acomms DCCLFieldCodecSelector lt WireType Field Type Enable gt goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt goby acomms goby acomms goby acomms goby acomms FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAG E gt DCCLFieldCodecManager DCCLTypeHelper FromProtoCppTypeBase goby acomms FromProtoCustomMessage lt CustomMessage gt goby acomms goby acomms goby acomms FromProtoTypeBase MACManager ModemDriverBase goby acomms ABCDriver goby acomms MMDriver goby moos goby moos goby acomms goby common goby common goby common goby common goby common goby Exception BluefinCommsDriver UFldDriver QueueManager Colors FlexNCurses FlexOstream FlexOStreamBuf TermColor goby acomms DCCLException goby acomms
179. ion ack bool true Whether an acoustic acknowledgment should be requested for messages sent from this queue blackout_time uint32 Minimum number of seconds allowed between sending messages from this queue max_queue uint32 Allowed size of the queue before overflow If newest_first is true the oldest elements are removed upon overflow else the newest elements are the queue blocks 0 is a special value signifying infinity no maximum Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 2 Queuing Protobuf Options 25 newest first bool true true FILO false FIFO whether to send newest messages in the queue first FILO or not FIFO ttl int32 1800 the time in seconds a message lives after its creation before being discarded This time to live also factors into the growth in priority of a queue see value_base for the main discussion on this O is a special value indicating infinite life i e ttl O is effectively the same as ttl 00 value_base double base priority value for this message queue priorities are calculated on a request for data by the modem to send a message The queue with the highest priority and isn t in blackout is chosen The actual priority P is calculated by P t Voase as where Vpase is the value set here is the current time in seconds tjast iS the tim
180. ion 178 21 goby uint32 goby acomms DCCLDefaultldentifierCodec decode Bitset x bits protected virtual Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this Parameters bits Bits to use for decoding Returns the decoded value Implements goby acomms DCCLTypedFieldCodec lt uint32 gt Definition at line 63 of file dccl_field_codec_default cpp 17 8 2 2 goby acomms Bitset goby acomms DCCLDefaultldentifierCodec encode protected virtual Encode an empty field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 8 goby acomms DCCLDefaultidentifierCodec Class Reference 110 Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt uint32 gt Definition at line 40 of file dccl_field_codec_default cpp 17 8 2 3 goby acomms Bitset goby acomms DCCLDefaultldentifierCodec encode const uint32 4 wire_value protected virtual Encode a non empty field Parameters wire_value Value to encode Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt uint32 gt Definition at line 45 of file dccl_field_codec_default cpp 17 8 2 4 unsigned goby acomms DCCLDefaultidentifierCodec max_size protected virtual Calculate maximum size of the field in bits Returns Maximum size of th
181. ional hex_string2binary_string const std string amp bs inline converts a boost dynamic_bitset similar to std bitset but without compile time size requirements into a hex string converts a hex string 8AAA into a binary string 1000101010101010 only works on whole byte string even number of nibbles Definition at line 244 of file dccl_constants h 16 6 4 3 template lt typename T gt bool goby transitional hex_string2number const std string s T amp t converts a hex string 8AAA into a dynamic_bitset attempts to convert a hex string into a numerical representation of type T Returns true if conversion succeeds false otherwise Definition at line 275 of file dccl_constants h 16 6 4 4 template lt typename T gt bool goby transitional number2hex_string std string s const T amp t unsigned int width 2 converts a decimal number of type T into a hex string Parameters s string reference to store result in t decimal number to convert wiath desired width in characters of return string Width should be twice the number of bytes Returns true if successful false otherwise Definition at line 290 of file dccl_constants h 16 6 4 5 template lt typename T gt std string goby transitional number2hex_string const T amp t unsigned int width 2 converts a decimal number of type T into a hex string assuming success Parameters decimal number to co
182. ireType 4 wire_value pure virtual Calculate the size in bits of a non empty field Parameters wire_value Value to use when calculating the size of the field If calculating the size requires encoding the field completely cache the encoded value for a likely future call to encode for the same wire_value Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 21 goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Class Template Referenc 41 Returns the size in bits of the field Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms DCCL RepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedFieldCodec lt Model value_type const google protobuf EnumValueDescriptor x gt goby acomms DCCLRepeatedTypedField Codec lt goby int32 gt and goby acomms DCCLDefaultldentifierCodec The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_typed h 17 21 goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Class Template Reference Base class for static typed field encoders decoders that use a fixed number of bits on the wire regardless of the value of the field Use DCCLTypedFieldCodec if your encoder is variable length See DCCLTypedFieldCodec for an explanation of the template parameters FieldType and WireType incl
183. is field in bits Implements goby acomms DCCLFieldCodecBase Definition at line 103 of file dccl_field_codec_default cpp 17 8 2 5 unsigned goby acomms DCCLDefaultidentifierCodec min_size protected virtual Calculate minimum size of the field in bits Returns Minimum size of this field in bits Implements goby acomms DCCLFieldCodecBase Definition at line 108 of file dccl_field_codec_default cpp 17 8 2 6 unsigned goby acomms DCCLDefaultldentifierCodec size protected virtual Calculate the size in bits of an empty field Returns the size in bits of the empty field Implements goby acomms DCCLTypedFieldCodec lt uint32 gt Definition at line 82 of file dccl_field_codec_default cpp 17 8 2 7 unsigned goby acomms DCCLDefaultidentifierCodec size const uint32 amp wire_value protected virtual Calculate the size in bits of a non empty field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 9 goby acomms DCCLDefaultMessageCodec Class Reference 111 Parameters wire_value Value to use when calculating the size of the field If calculating the size requires encoding the field completely cache the encoded value for a likely future call to encode for the same wire_value Returns the size in bits of the field Implements goby acomms DCCLTypedFieldCodec lt uint32 gt Definition at line 87 of file dccl_field_codec_default cpp The documentation
184. is good Extremely low throughput means that essentially every efficiency in bit packing messages to the smallest size possible is desirable The traditional approach of layering e g TCP IP creates inefficiencies as each layer wraps the message of the higher layer with its own header See RFC3439 section 3 Layering Considered Harmful for an interesting discussion of this issue http tools ietf org html rfc3439 page 7 Thus the layers of goby acomms are more tightly interrelated than TCP IP for example Higher layers depend on lower layers to carry out functions such as error checking and do nat replicate this functionality Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 1 Quick Start 5 2 1 3 Total throughput unrealistic prioritize data The second major difference stemming from this bandwidth constraint is that total throughput is often an unrealistic goal The quality of the acoustic channel varies widely from place to place and even from hour to hour as changes in the sea affect propagation of sound This means that it is also difficult to predict what one s throughput will be at any given time These two considerations manifest themselves in the goby acomms design as a priority based queuing system for the transport layer Messages are placed in different queues based on their priority which is determined by the designer of the message This means that the channel is always utilized low priority data ar
185. ity on fields that a set in both objects Ftx micromodem protobuf NarrowBandLBL Params transmit_freq Ttx micromodem protobuf NarrowBandLBL Params transmit_ping_ms Trx micromodem protobuf NarrowBandLBL Params receive_ping_ms Timeout micromodem protobuf NarrowBandLBL Params lbl_max_range m x2 1500 m s x 1000 ms s micromodem protobuf NarrowBandLBL Params turnaround_ms FA micromodem protobuf NarrowBandLBL Params receive_freq 0 or 0 if receive_freq_size lt 4 FB micromodem protobuf NarrowBandLBL Params receive_freq 1 or O if receive_freq_size lt 2 FC micromodem protobuf NarrowBandLBL Params receive_freq 2 or 0 if receive_freq_size lt 3 FD micromodem protobuf NarrowBandLBL Params receive_freq 3 or 0 if receive_freq_size lt 4 Tflag micromodem protobuf NarrowBandLBL Params transmit_flag Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 45 CCMUC SRC goby acomms protobuf ModemTransmission src DEST goby acomms protobuf ModemTransmission dest HHHH goby acomms hex_encode goby acomms protobuf ModemTransmission frame 0 amp Ox1F 6 4 3 Sequence diagrams for various Micro Modem features using Goby FSK rate 0 data transmission Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 46
186. l function html for more on boost function Definition at line 50 of file message_algorithms h 16 6 3 Enumeration Type Documentation 16 6 3 1 enum goby transitional DCCLCppType Enumeration of C types used in DCCL Enumerator cpp_notype not one of the C types used in DCCL cpp_bool C bool cpp_string C std string cpp_long C long cpp_double C double Definition at line 59 of file dccl_constants h 16 6 3 2 enum goby transitional DCCLType Enumeration of DCCL types used for sending messages dccl_enum and dccl_string primarily map to cpp_string dccl_bool to cpp_bool decl_int to cpp_long dccl_float to cpp_double Enumerator dccl_static tag_static dccl_bool tag_bool dccl_int tag_int dcecl_float tag_float dccl_enum tag_enum dccl_string tag_string dccl_hex tag_hex Definition at line 50 of file dccl_constants h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 6 goby transitional Namespace Reference 93 16 6 4 Function Documentation 16 6 4 1 bool goby transitional char_array2hex_string const unsigned char x c std string amp s const unsigned int n inline converts a char byte array into a hex string Parameters c pointer to array of char n reference to string to put char into as hex n length of c the first two hex chars in s are the 0 index in c Definition at line 173 of file dccl_constants h 16 6 4 2 std string goby transit
187. lt std endl glog is WARN amp amp glog lt lt Exception lt lt e what lt lt std endl do_work Add your driver header to goby src acomms modem_driver h Modify driver_simple cpp to work with your new driver Add your driver to the pAcommsHandler_config proto DriverType enumeration Add your driver to the pAcommsHandler cpp driver object creation Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 37 The full ABC Modem example driver exists in acomms modemdriver abc_driver h and acomms modemdriver abc_ driver cpp A simulator for the ABC Modem exists that uses TCP to mimic a very basic set of modem commands send data and acknowledgment To use the ABC Modem using the driver_simple example run this set of com mands socat is available in most package managers or at http www dest unreach org socat 1 run abc_modem_simulator running on same port as TCP server gt abc_modem_simulator 54321 2 create fake tty terminals connected to TCP as client to port 54321 gt socat d d v pty raw echo 0 link tmp ttyFAKE1 TCP localhost 54321 gt socat d d v pty raw echo 0 link tmp ttyFAKE2 TCP localhost 54321 3 start up driver_simple gt driver_simple tmp ttyFAKE1 1 ABCDriver wait a few seconds to avoid collisions gt driver_simple tmp ttyFAKE2 2 ABCDriver Notes e See goby acomms MMDriver for an example real implementation e W
188. lt implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector class DCCLTypeHelper Provides FromProtoTypeBase and FromProtoCppTypeBase type identification helper classes for various representa tions of the underlying field e class FromProtoTypeBase Provides various representations of a google protobuf FieldDescriptor Type enumeration Implementations are pro vided for all enumerations e class FromProtoCppTypeBase Provides various representations of a google protobuf FieldDescriptor Cpp Type enumeration and ways to access the google protobuf Reflection object for a given type class FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAGE gt Implements FromProtoCpp TypeBase for CPPTYPE_MESSAGE using the dynamic google protobuf Message as the underlying class e class FromProtoCustomMessage Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using a specific statically generated Protobuf class e class ABCDriver provides an API to the imaginary ABC modem as an example how to write drivers e class ModemDriverBase Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 2 goby acomms Namespace Reference 85 provides an abstract base class for acoustic modem drivers This is subclassed by the various drivers for different manufacturers modems class MMDriver provides an API to the WHO Micro Modem driver e class QueueException
189. m color enumeration e g red gt red e static Colors Color from_esc_code const std string amp s Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 38 goby Exception Class Reference 167 Color enumeration from escape code e g 133 31m gt red e static std string esc_code_from_col const Colors Color amp c Escape code from color enumeration e g red gt 133 31m e static std string esc_code_from_str const std string amp s Escape code from string e g red gt 33 31m Friends template lt typename T gt void boost checked_delete T x 17 37 1 Detailed Description Converts between string escape code and enumeration representations of the terminal colors Definition at line 139 of file term_color h The documentation for this class was generated from the following files goby common logger term_color h e src common logger term_color cpp 17 38 goby Exception Class Reference simple exception class for goby applications include lt goby common exception h gt Inheritance diagram for goby Exception goby acomms DCCLException goby acomms QueueException goby Exception goby common ConfigException Public Member Functions Exception const std string amp s 17 38 1 Detailed Description simple exception class for goby applications Definition at line 35 of file exception h The documentation for this class was generated from
190. m for goby acomms DCCLDefaultEnumCodec goby acomms DCCLReldCodec goby acomms DCCLypedFixed goby acomms DCCLReldCodecBase g Selector lt int32 const google fa Codec int32 const google be Fieldcodec lt int32 const gobyacomme DCCLypedField i lt int32 const google 7 protobuf EnumValueDescriptor gt protobuf EnumValueDescriptor gt google protobuf EnumValue Descriptor gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 8 goby acomms DCCLDefaultidentifierCodec Class Reference 108 Public Member Functions int32 pre_encode const google protobuf EnumValueDescriptor const amp field_value const google protobuf EnumValueDescriptor x post_decode const int32 amp wire_value Additional Inherited Members 17 7 1 Detailed Description Provides an enum encoder This converts the enumeration to an integer based on the enumeration index not its value and uses DCCLDefaultNumericFieldCodec to encode the integer Definition at line 216 of file dccl_field_codec_default h The documentation for this class was generated from the following files goby acomms dccl dccl_field_codec_default h src acomms dccl dccl_field_codec_default cpp 17 8 goby acomms DCCLDefaultidentifierCodec Class Reference Provides the default 1 byte or 2 byte DCCL ID codec include lt goby acomms dccl dccl_field_codec_default h gt
191. manager h The documentation for this class was generated from the following files goby acomms queue queue_manager h src acomms queue queue_manager cpp 17 32 goby common Colors Struct Reference Represents the eight available terminal colors and bold variants include lt goby common logger term_color h gt Public Types enum Color nocolor red It_red green It_green yellow It_yellow blue It_blue magenta It_magenta cyan It_cyan white It_white The eight terminal colors and bold or light variants 17 32 1 Detailed Description Represents the eight available terminal colors and bold variants Definition at line 125 of file term_color h The documentation for this struct was generated from the following file goby common logger term_color h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 33 goby common ConfigException Class Reference 163 17 33 goby common ConfigException Class Reference indicates a problem with the runtime command line or cfg file configuration or help was given include lt goby common configuration_reader h gt Inheritance diagram for goby common ConfigException goby Exception goby common ConfigException Public Member Functions ConfigException const std string amp s e void set_error bool b bool error 17 33 1 Detailed Description indicates a problem with the runtime command line or cfg file configuratio
192. mart pointers like boost shared_ptr included Parameters bytes the byte string returned by encode Exceptions DCCLException if message cannot be decoded Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 101 Returns pointer to decoded message a google protobuf Message You are responsible for deleting the memory used by this pointer This message can be examined using the Google Reflection Descriptor API Definition at line 274 of file dccl h 17 4 2 4 template lt typename GoogleProtobufMessagePointer gt std list lt GoogleProtobufMessagePointer gt goby acomms DCCLCodec decode_repeated const std string orig_bytes inline Decode multiple messages at once Messages encoded using encode_repeated must be decoded using decode_ repeated Parameters orig_bytes string of bytes produced by encoded_repeated Template Parameters GoogleProtobufMessage anything that acts like a pointer has operator to a google protobuf Message smart Pointer pointers like boost shared_ptr included Exceptions DCCLException if message s cannot be decoded Returns list of pointers to the decoded messages you are responsible for deleting these pointers when done with them See Also test acomms dccl4 test cpp and test acomms dccl4 test proto Definition at li
193. me ptime unix_microsec2ptime uint64 given_time convert to boost date_time ptime from the number of microseconds since 1 1 1970 0 00 UTC UNIX Time good to the microsecond boost posix_time ptime nmea_time2ptime const std string amp mt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 3 goby common Namespace Reference 88 Variables Time 16 3 1 const int BITS_IN_UINT32 32 const int BITS_IN_BYTE 8 const std string esc_red 133 31m const std string esc_It_red 133 91m const std string esc_green 33 32m const std string esc_It_green 33 92m const std string esc_yellow 33 33m const std string esc_It_yellow 33 93m const std string esc_blue 33 34m const std string esc_It_blue 33 94m const std string esc_magenta 33 35m const std string esc_It_magenta 33 95m const std string esc_cyan 33 36m const std string esc_It_cyan 33 96m const std string esc_white 133 37m const std string esc_It_white 33 97m const std string esc_nocolor 33 0m boost function0 lt uint64 gt goby_time_function int goby_time_warp_factor 1 template lt typename ReturnType gt ReturnType goby_time Returns current UTC time as a boost posix_time ptime template lt gt uint64 goby_time lt uint64 gt Returns current UTC time as integer microseconds since 1970 01 01 00 00 00 template lt gt double goby_time lt double gt Returns
194. me FieldType WireType gt virtual Bitset goby acomms DC CLTypedFieldCodec lt WireType FieldType gt encode const WireType amp wire_value pure virtual Encode a non empty field Parameters wire_value Value to encode Returns Bits represented the encoded field Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms D CCLRepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomms DCCLRepeatedTypedField Codec lt Model value_type const google protobuf EnumValueDescriptor x gt goby acomms DCCLRepeated TypedFieldCodec lt goby int32 gt goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt goby acomms DCCLDefaultNumericFieldCodec lt uint32 gt goby acomms DCCLDefaultNumericFieldCodec lt int32 const google protobuf EnumValueDescriptor x gt goby acomms DCCLDefaultNumericFieldCodec lt int32 TimeType gt and goby acomms DCCLDefaultidentifierCodec 17 20 2 4 template lt typename WireType typename FieldType WireType gt virtual unsigned goby acomms DCCLTypedFieldCodec lt WireType FieldType gt size pure virtual Calculate the size in bits of an empty field Returns the size in bits of the empty field Implemented in goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt goby acomms DCCL RepeatedTypedFieldCodec lt Model value_type FieldType gt goby acomm
195. ment amp env e std ostream amp operator lt lt std ostream amp out const google protobuf Message amp msg provides stream output operator for Google Protocol Buffers Message void merge_app_base_cfg AppBaseConfig base_cfg const boost program_options variables_map amp var _map e std string liaison_internal_publish_socket_name e std string liaison_internal_subscribe_socket_name std ostream 8 operator lt lt FlexOstream amp out char c std ostream amp operator lt lt FlexOstream amp out signed char c e std ostream amp operator lt lt FlexOstream amp out unsigned char c std ostream 8 operator lt lt FlexOstream amp out const char s std ostream amp operator lt lt FlexOstream amp out const signed char xs std ostream 8 operator lt lt FlexOstream amp out const unsigned char xs e double ptime2unix_double boost posix_time ptime given_time E A A eee convert from boost date_time ptime to the number of seconds including fractional since 1 1 1970 0 00 UTC UNIX Time boost posix_time ptime unix_double2ptime double given_time convert to boost date_time ptime from the number of seconds including fractional since 1 1 1970 0 00 UTC UNIX Time good to the microsecond uint64 ptime2unix_microsec boost posix_time ptime given_time convert from boost date_time ptime to the number of microseconds since 1 1 1970 0 00 UTC UNIX Time e boost posix_ti
196. messages same as info_all void serialize_rudics_packet std string bytes std string rudics_pkt void parse_rudics_packet std string bytes std string rudics_pkt std string uint32_to_byte_string uint32_t i uint32_t byte_string_to_uint32 std string s Acoustic MAC Library callback function type definitions std ostream 8 operator lt lt std ostream amp os const MACManager amp mac Variables 16 2 1 const unsigned BITS_IN_BYTE 8 const unsigned NIBS_IN_ BYTE 2 const int BROADCAST_ID 0 special modem id for the broadcast destination no one is assigned this address Analogous to 192 168 1 255 ona 192 168 1 0 subnet const 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 queue const int QUERY_SOURCE_ID 1 const unsigned char DCCL_CCL_HEADER 32 const unsigned MULTIMESSAGE_MASK 1 lt lt 7 const unsigned BROADCAST_MASK 1 lt lt 6 const unsigned VAR_ID_MASK OxFF 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 Objects pertaining to acoustic communications acomms 16 3 goby common Namespace Reference Utility objects for performing functions such as logging non acoustic comm
197. modem drivers This is subclassed by the various drivers for different manufacturers modems See Also acomms_driver_base proto and acomms_modem_message proto for definition of Google Protocol Buffers messages namespace goby acomms protobuf Examples acomms modemdriver driver_simple driver_simple cpp Definition at line 46 of file driver_base h 17 29 2 Member Function Documentation 17 29 21 virtual void goby acomms ModemDriverBase do_work pure virtual Allows the modem driver to do its work Should be called regularly to perform the work of the driver as the driver does not run in its own thread This allows us to guarantee that no signals are called except inside this method Does not block Implemented in goby acomms MMDriver goby moos BluefinCommsDriver goby moos UFldDriver and goby acomms ABCDriver Examples acomms modemdriver driver_simple driver_simple cpp 17 29 2 2 virtual void goby acomms ModemDriverBase handle_initiate transmission const protobuf ModemTransmission amp m pure virtual Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Parameters m ModemTransmission defined in acomms_modem_message proto containing the details of the transmission to be started This may contain data frames If not data will be requested when the driver calls the data request signal ModemDriverBase signal_data_request
198. mp msg std cout lt lt 5 received message lt lt msg lt lt std endl Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen Index API classes for the Dynamic Compact Control Language includes writing custom encoders 79 API classes for the major components of the Goby Acomms acoustic communications library D CCL Queue AMAC ModemDriver 79 add goby acomms DCCLFieldCodecManager 127 add_escape_code goby common tcolor 88 add_group goby common FlexOstream 164 add_id_codec goby acomms DCCLCodec 99 add_queue goby acomms QueueManager 158 add_value goby acomms FromProtoCppTypeBase 144 AlgFunction1 goby transitional 91 AlgFunction2 goby transitional 91 all_message_ids goby transitional DCCLTransitionalCodec 177 all_message_names goby transitional DCCLTransitionalCodec 177 any_decode goby acomms DCCLFieldCodecBase 118 any_encode goby acomms DCCLFieldCodecBase 118 any_post_decode goby acomms DCCLFieldCodecBase 118 any_pre_encode goby acomms DCCLFieldCodecBase 118 any_size goby acomms DCCLFieldCodecBase 119 Application goby pb Application 171 base_decode goby acomms base_encode goby acomms base_info goby acomms base_max_size goby acomms base_min_size goby acomms base_size goby acomms base validate goby acomms DCCLFieldCodecBase 120 boost asio time_traits lt goby common GobyTime gt 93 DCCLFieldCodecBas
199. mp cfg 0 Starts the modem driver Must be called before poll e virtual void shutdown 0 Shuts down the modem driver e virtual void do_work 0 Allows the modem driver to do its work MAC Slots e virtual void handle_initiate_transmission const protobuf ModemTransmission amp m 0 Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Public Attributes MAC Queue Signals boost signals2 signal lt void const protobuf ModemTransmission amp message gt signal_receive Called when a binary data transmission is received from the modem boost signals2 signal lt void const protobuf ModemTransmission amp message gt signal_transmit_result Called when a transmission is completed boost signals2 signal lt void protobuf ModemTransmission msg gt signal_data_request Called when the modem or modem driver needs data to send The returned data should be stored in Modem Transmission frame e boost signals2 signal lt void protobuf ModemTransmission msg_request gt signal_modify_transmission Called before the modem driver begins processing a transmission This allows a third party to modify the parame ters of the transmission such as destination or rate on the fly e boost signals2 signal lt void const protobuf ModemRaw amp msg gt signal_raw_incoming Called after any message is received from the modem by the driver Used by the MACManager fo
200. ms dccl dccl_field_codec_default h gt Inheritance diagram for goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt Wire Type FieldType gt goby acomms DCCLlypedField Codec lt WireType Field Type gt goby acomms DCCLlypedFixed FieldCodec lt WireType FieldType gt goby acomms DCCLDefault NumericFieldCodec lt WireType FieldType gt Protected Member Functions virtual double max virtual double min virtual double precision virtual void validate Validate a field Use require inside your overloaded validate to assert requirements or throw DCCLExceptions directly as needed Bitset encode Encode an empty field virtual Bitset encode const WireType amp value Encode a non empty field virtual WireType decode Bitset xbits Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 10 goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt Class Template Reference 113 Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this unsigned size The size of the encoded message in bits Use DCCLTypedFieldCodec if the size depends on the data Additional Inherited Members 17 10 1 Detailed Description template lt typename WireType typename FieldType WireType gt class goby ac
201. msg_ string const google protobuf Descriptor desc int modem_id The current modem ID MAC address of this node protobuf QueuedMessageMeta meta_from_msg const google protobuf Message amp msg Public Attributes boost signals2 signal lt void protobuf QueuedMessageMeta meta const google protobuf Message amp data_msg int modem_id gt signal_out_route Used by a router to change next hop destination in meta e boost signals2 signal lt void const protobuf QueuedMessageMeta amp meta const google protobuf Message amp data_msg int modem_id gt signal_in_route Used by a router to intercept messages and requeue them if desired Application Signals e boost signals2 signal lt void const protobuf ModemTransmission amp ack_msg const google protobuf Message amp orig_msg gt signal_ack Signals when acknowledgment of proper message receipt has been received This is only sent for queues with queue ack true with an explicit destination ModemMessageBase dest 0 e boost signals2 signal lt void const google protobuf Message amp msg gt signal_receive Signals when a DCCL message is received boost signals2 signal lt void const google protobuf Message amp orig_msg gt signal_expire Signals when a message is expires exceeds its time to live or ttl before being sent if queue ack false or before being acknowledged if queue ack true e boost signals2 signal lt void const
202. n 171 TCPClient goby util TCPClient 181 TCPServer goby util TCPServer 182 this_descriptor goby acomms DCCLFieldCodecBase 125 this_field goby acomms DCCLFieldCodecBase 125 validate goby acomms DCCLCodec 103 validate_repeated goby acomms DCCLCodec 104 wire_type goby acomms DCCLFieldCodecBase 125 zeromq_service goby pb Application 171 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen
203. n or help was given Definition at line 55 of file configuration_reader h The documentation for this class was generated from the following file goby common configuration_reader h 17 34 goby common FlexNCurses Class Reference Enables the Verbosity gui mode of the Goby logger and displays an NCurses gui for the logger content include lt goby common logger flex_ncurses h gt Public Member Functions Constructors Destructor FlexNCurses e FlexNCurses Initialization e void startup e void add_win const Group xtitle Use Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 35 goby common FlexOstream Class Reference 164 e void insert boost posix_time ptime t const std string amp s Group g Add a string to the gui Utility e size_t panel_from_group Group g e void recalculate_win e void cleanup e void alive bool alive User Input Thread e void run_input run in its own thread to take input from the user 17 34 1 Detailed Description Enables the Verbosity gui mode of the Goby logger and displays an NCurses gui for the logger content Definition at line 44 of file flex_ncurses h The documentation for this class was generated from the following files goby common logger flex_ncurses h e src common logger flex_ncurses cpp 17 35 goby common FlexOstream Class Reference Forms the basis of the Goby logger std ostream derived class fo
204. n Format Example relative to frontseat START Simulator Receive START LAT START LAT 42 initialization latitude decimal 1234 LON 72 D message degrees LON URATION 600 longitude decimal degrees DURAT ION simulation duration seconds CTRL Frontseat state Transmit CTRL STATE P CTRL STATE PA message AYLOAD if YLOAD backseat control or IDLE NAV Navigation Transmit NAV LAT latitude NAV LAT 42 message decimal 1234 LON 72 generated from degrees LON 5435 DEPTH very primitive longitude 200 HEADING dynamics model decimal 223 SPEED 1 4 depth 8 heading degrees DEPTH changes are depth in instantaneous meters HEADIN G heading in degrees SPEED speed in m s CMD Desired course Receive CMD HEADING CMD HEADING command from desired heading 260 SPEED 1 backseat in degrees SPE 5 DEPTH 100 ED desired speed in m s DE PTH desired depth in m CMD Reponse to last Transmit CMD RESULT O CMD RESULT OK CMD K or ERROR Your driver will be at a minimum a C linkage function frontseat_ The C function is used by iFrontSeat to load your driver extern C driver_load and a subclass of FrontSeat InterfaceBase It should be compiled into a shared library so on Linux FrontSeatInterfaceBasex frontseat_driver_load iFrontSeatConfigx cfg return new AbcFrontSeat cfg First you should decide what configuration your driver will accept Your configuration obj
205. n be 0 lowest 1 2 3 4 or 5 lowest Map these integers onto real bit rates in a meaningful way on the WHOI Micro Modem 0 80 bps 5 5000 bps glog is DEBUG1 amp amp glog lt lt group modem_out lt lt We were asked to transmit from lt lt msg src lt lt to lt lt msg dest lt lt at bitrate code lt lt msg rate lt lt std endl let s say ABC modem uses 500 byte packet msg set_max_frame_bytes 500 no data given to us let s ask for some if msg frame_size 0 ModemDriverBase signal_data_request 4msg glog is DEBUG1 amp amp glog lt lt group modem_out lt lt Sending these data now lt lt msg frame 0 lt lt std endl Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 3 Writing a new driver 36 let s say we can send at three bitrates with ABC modem map these onto 0 5 const unsigned BITRATE 100 1000 10000 10000 10000 10000 I m making up a syntax for the wire protocol std stringstream raw raw lt lt SEND TO lt lt msg dest lt lt FROM lt lt msg src lt lt HEX lt lt hex_encode msg frame 0 lt lt BITRATE lt lt BITRATE msg rate lt lt ACK TRUE lt lt r n let anyone who is interested know signal_and_write raw str handle_initiate_ transmission Finally you can use do_work to do continuous work You can count on it being
206. nction Documentation 0 0 eee ee es 138 17 21 goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Class Template Reference 140 1721 1 Detaled Descriphon es is be RG ee Ae oe ER De eee ee A 141 17 22goby acomms DCCLTypeHelper Class Reference 0 o e eee 141 11221 Detailed DOSCOQUON isso o a A eS 141 17 23g0by acomms FromProtoCppType lt google protobuf FieldDescriptor CPPTYPE_MESSAGE gt Class Template Reference ee ee 142 172341 Detailed Description o osora cdon e684 060 be bbe ee bee e a ee db ewe 143 17 24goby acomms FromProtoCppTypeBase Class Reference 0 o e 143 17 241 Detailed Desorption lt ae e sa aoi aceti a A Se a 144 17 24 2 Member Function Documentation a a aooaa a 144 17 25goby acomms FromProtoCustomMessage lt CustomMessage gt Class Template Reference 145 1725 1 Detailed DOScrpl N 24 044 e o a de e bh eo a e a eed pws 146 17 26goby acomms FromProtoTypeBase Class Reference o oo a 146 11 261 Detailed Deschpto lt s sor roe dare am aw ai A A RR ee a 146 17 27goby acomms MACManager Class Reference aaao a 146 17271 Detailed Deschplhon ie s 22308 wae a e a e n A A 147 17 27 2 Member Function Documentation a 148 17 27 3 Member Data Documentation lt lt c e cara a rrea cams e p oe ee 148 17 28goby acomms MMDriver Class Reference aoaaa ee 148 17 28 1 Detailed Description ocd sasak e oa o a ee
207. ne 318 of file dccl h 17 4 2 5 void goby acomms DCCLCodec encode std string bytes const google protobuf Message amp msg bool header_only false Encodes a DCCL message Parameters bytes Pointer to byte string to store encoded msg msg Message to encode must already have been validated Exceptions DCCLException if message cannot be encoded Examples acomms dccl dccl_simple dccl_simple cpp and acomms dccl two_message two_message cpp Definition at line 112 of file dccl cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 102 17 4 2 6 template lt typename GoogleProtobufMessagePointer gt std string goby acomms DCCLCodec encode_repeated const std list lt GoogleProtobufMessagePointer gt 4 msgs inline Encode multiple messages at once In general this is more efficient i e produces smaller messages than calling encode repeatedly Template Parameters GoogleProtobufMessage anything that acts like a pointer has operator to a google protobuf Message smart Pointer pointers like boost shared_ ptr included Parameters msgs list of DCCL messages to encode Exceptions DCCLException if message s cannot be encoded Returns string containing bytes that represent the encoded message See Also test acomms dccl4 test cpp and test acomms dccl4 t
208. nst short amp val e std ostream amp operator lt lt const unsigned short amp val e std ostream operator lt lt const int amp val e std ostream 8 operator lt lt const unsigned int amp val e std ostream amp operator lt lt const long amp val e std ostream amp operator lt lt const unsigned long amp val e std ostream operator lt lt const float amp val e std ostream operator lt lt const double amp val e std ostream 8 operator lt lt const long double amp val std ostream operator lt lt std streambuf sb e std ostream amp operator lt lt std ios pf std i0s amp e std ostream amp operator lt lt std ios_base amp pf std ios_base amp Friends e template lt typename T gt void boost checked_delete T e std ostream amp operator lt lt FlexOstream amp out char c std ostream 8 operator lt lt FlexOstream amp out signed char c e std ostream amp operator lt lt FlexOstream amp out unsigned char c std ostream 8 operator lt lt FlexOstream amp out const char xs std ostream 8 operator lt lt FlexOstream amp out const signed char xs std ostream 8 operator lt lt FlexOstream amp out const unsigned char xs SA 17 35 1 Detailed Description Forms the basis of the Goby logger std ostream derived class for holding the FlexOStreamBuf Definition at line 54 of file flex_ostream h 17 35 2 Member F
209. nvert width desired width in characters of return string Width should be twice the number of bytes Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 Class Documentation 94 Returns hex string Definition at line 303 of file dccl_constants h 16 6 5 Variable Documentation 16 6 5 1 const std string goby transitional DCCL_HEADER_NAMES Initial value t t pgi ia iq time W_sreond _dest_id _multimessage_flag _broadcast_flag _unused Definition at line 137 of file dccl_constants h 17 Class Documentation 17 1 boost asio time_traits lt goby common GobyTime gt Struct Template Reference Time traits specialised for GobyTime include lt goby common time h gt Public Types typedef boost posix_time ptime time_type The time type typedef boost posix_time time_duration duration_type The duration type Static Public Member Functions e static time_type now Get the current time e static time_type add const time_type amp t const duration_type amp d Add a duration to a time e static duration_type subtract const time_type amp t1 const time_type amp t2 Subtract one time from another e static bool less_than const time_type amp t1 const time_type amp t2 Test whether one time is less than another e static boost posix_time time_duration to_posix_duration const duration_type amp d Convert to POSIX duration t
210. o capture how important the message type is in general Higher base values mean the message is of higher importance The ttl governs the number of seconds the message lives from creation until it is destroyed by queue The ttl also factors into the priority calculation since all things being equal same Vpase it is preferable to send more time sensitive messages first So in these two parameters the user can capture both overall value i e Vpase and latency tolerance ttl of the message queue The following graph illustrates the priority growth over time of three queues with different ttl and Vigse A message is sent every 100 seconds and the queue that is chosen is marked on the graph Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 4 2 Queuing Protobuf O ptions 24 priority V 03 AY meg eg SV 0 2 0 05 1 ttl 1000 base base 2 ttl 2000 base 1 ttl 3000 Figure 4 Graph of the growth of queueing priorities for qu 100 seconds from the queue with the highest priority numbered on the graph 4 2 Queuing Protobuf Options 800 900 1000 eue for three different queues A message is sent every This section gives an overview of the queue configuration options available The full list is available in queue proto as messages goby acomms protobuf QueuedMessageEntry Queue message options name type default descript
211. oby acomms MAC library MACManager is essentially a std list lt protobuf Modem Transmission gt plus a timer 146 goby acomms MMDriver API to the WHOI Micro Modem driver 148 goby acomms ModemDriverBase Abstract base class for acoustic modem drivers This is subclassed by the various drivers for different manufacturers modems 150 goby acomms QueueException Exception class for libdccl 155 goby acomms QueueManager API to the goby acomms Queuing Library 156 goby common Colors Represents the eight available terminal colors and bold variants 161 goby common ConfigException Indicates a problem with the runtime command line or cfg file configuration or help was given 162 goby common FlexNCurses Enables the Verbosity gui mode of the Goby logger and displays an NCurses gui for the logger content 162 goby common FlexOstream Forms the basis of the Goby logger std ostream derived class for holding the FlexOStreamBuf 163 goby common FlexOStreamBuf Class derived from std stringbuf that allows us to insert things before the stream and control output This is the string buffer used by goby common FlexOstream for the Goby Logger glogger 164 goby common TermColor Converts between string escape code and enumeration representations of the terminal colors 165 goby Exception Simple exception class for goby applications 166 goby moos BluefinCommsDriver Driver for the Bluefin Huxley communications in
212. obysoft org wiki DcclIdTable option dccl msg id 124 if for example we want to use on the WHOI Micro Modem rate 0 option dccl msg max_bytes 32 required string telegram 1 dccl field max_length 30 See dccl_simple cpp for an example of how to use this message Scenario 2 Send a more realistic command and receive a status message from the vehicle Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 1 Designing a message 12 We want to be able to command our vehicle to which we have assigned an ID number of 2 to go to a specific point on a local XY grid meters from some known latitude longitude but no more than 10 kilometers from the datum We also want to be able to turn the lights on or off and send a short string for other new instructions Finally we need to be able to command a speed Our vehicle can move no faster than 3 m s but its control is precise enough to handle hundredths of a m s wow It s probably easiest to make a table with our conditions message variable name description type bounds destination id number of the vehicle int32 0 31 we are commanding goto_x meters east to transit int32 0 10000 from datum goto_y meters north to transit int32 0 10000 from datum lights_on turn on the lights bool new_instructions string instructions string no longer than 10 characters goto_speed transit speed m s float 0 00 3 00
213. odec lt T gt Placeholder codec that takes no space on the wire 0 bits Definition at line 282 of file dccl_field_codec_default h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_default h 17 19 goby acomms DCCLTimeCodec lt TimeType gt Class Template Reference Encodes time of day second precision for times represented by the string representation of boost posix_time uptime e g obtained from goby_time lt std string gt include lt goby acomms dccl dccl_field_codec_default h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 19 goby acomms DCCLTimeCodec lt TimeType gt Class Template Reference 137 Inheritance diagram for goby acomms DCCLTimeCodec lt TimeType gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt int32 TimeType gt goby acomms DCCLlypedField Codec lt int32 TimeType gt goby acomms DCCLlypedFixed FieldCodec lt int32 TimeType gt goby acomms DCCLDefault NumericFieldCodec lt int32 TimeType gt goby acomms DCCLTimeCodec lt TimeType gt Public Member Functions goby int32 pre_encode const TimeType amp field_value e TimeType post_decode const int32 amp wire_value Additional Inherited Members 17 19 1 Detailed Description template lt typename TimeType gt class goby acomms DCCLTimeCodec lt TimeType gt Encodes time of day second
214. odecBase base_size unsigned bit_size const google protobuf Message amp msg MessageHandler MessagePart part Calculate the size in bits of a part of the base message when it is encoded Parameters bit_size Pointer to unsigned integer to store the result msg the DCCL Message of which to calculate the size part part of the Message to calculate the size of Definition at line 91 of file dccl_field_codec cpp 17 13 2 12 void goby acomms DCCLFieldCodecBase base validate const google protobuf Descriptor x desc MessageHandler MessagePart part Validate this part of the message to make sure all required extensions are set Parameters desc Descriptor to validate Use google protobuf Message GetDescriptor or MyProtobufType descriptor to get this object part part of the Message Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 122 Definition at line 262 of file dccl_field_codec cpp 17 13 2 13 dccl DCCLFieldOptions goby acomms DCCLFieldCodecBase dccl field_options const inline protected Get the DCCL field option extension value for the current field dccl DCCLFieldOptions is defined in acomms_option_extensions proto Definition at line 309 of file dccl_field_codec h 17 13 2 14 void goby acomms DCCLFieldCodecBase field_decode Bitset x bi
215. of the goby util glogger in NCurses GUI mode Simultaneous terminal window and file logging flexostream_simple quiet warn verbose debug gui test txt test txt 2011 Mar 01 2011 Mar 01 2011 Mar 01 2011 Mar 01 2011 Mar 01 05 05 05 05 OS 33 33 33 33 33 26 26 26 26 26 224050 224277 224320 224362 224388 Warning this is warning text this is normal text this is light blue text in color terminals 1 Debug this is debug text la this text is related to a Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 8 goby moos An overview of the Goby MOOS interoperability library 54 2011 Mar 01 05 33 26 224429 b this text is related to b 2011 Mar 01 05 33 26 224471 c Warning this warning is related to c section linebasedcomms TCP and Serial port communications liblinebasedcomms libutil_linebasedcomms provides a common interface goby util LineBasedInterface for line based defined as You should create the proper subclass for your needs e Serial communications goby util SerialClient TCP Client goby util TCPClient e TCP Server goby util TCPServer all incoming messages as read by goby util LineBasedInterface readline are interleaved in the order they are received from all connected clients Outgoing messages are sent to all connected clients unless using goby util LineBasedInterface write const protobuf Datagram am
216. oid connect Signal signal Obj obj void Obj mem_func A1 A2 connect a signal to a member function with two arguments template lt typename Signal typename Obj typename A1 typename A2 typename A3 gt void connect Signal signal Obj obj void Obj mem_func A1 A2 A3 connect a signal to a member function with three arguments std ostream amp operator lt lt std ostream amp os const DCCLCodec amp codec bool operator const Bitset amp a const Bitset amp b bool operator lt const Bitset amp a const Bitset amp b e Bitset operator amp const Bitset amp b1 const Bitset amp b2 Bitset operator const Bitset amp b1 const Bitset amp b2 Bitset operator const Bitset amp b1 const Bitset amp b2 e std ostream 8 operator lt lt std ostream amp os const Bitset amp b unsigned floor_bits2bytes unsigned bits Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 3 goby common Namespace Reference 86 unsigned ceil_bits2bytes unsigned bits std ostream amp operator lt lt std ostream amp os const DCCLFieldCodecBase amp field_codec DCCLException type_error const std string amp action const std type_info amp expected const std type_info amp got std ostream amp operator lt lt std ostream amp os const Queue amp oq std ostream amp operator lt lt std ostream amp out const QueueManager amp d outputs information about all available
217. olor const Color to use when displaying this group for streams that support terminal escape codes only std cout std cerr std clog bool enabled const Is this group enabled Setters void name const std string amp s e void description const std string amp s void color goby common Colors Color c e void enabled bool b 17 48 1 Detailed Description Defines a group of messages to be sent to the Goby logger For Verbosity verbose streams all entries appear interleaved but each group is offset with a different color For Verbosity gui streams all groups have a separate subwindow Definition at line 70 of file logger_manipulators h The documentation for this class was generated from the following file goby common logger logger_manipulators h 17 49 GroupSetter Class Reference Helper class for enabling the group std string manipulator include lt goby common logger logger_manipulators h gt Public Member Functions GroupSetter const std string amp s e void operator std ostream amp os const e void operator goby common FlexOstream amp os const Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 18 File Documentation 185 17 49 1 Detailed Description Helper class for enabling the group std string manipulator Definition at line 117 of file logger_manipulators h The documentation for this class was generated from the following files goby
218. omms DCCLDefaultNumericFieldCodec lt Wire Type FieldType gt Provides a basic bounded arbitrary length numeric double float uint82 uint64 int32 int64 encoder Takes ceil log2 max min 10 precision 1 bits for required fields ceil log2 max min 10 precision 2 for op tional fields Definition at line 84 of file dccl_field_codec_default h 17 10 2 Member Function Documentation 17 10 2 1 template lt typename WireType typename FieldType WireType gt virtual WireType goby acomms D CCLDefaultNumericFieldCodec lt WireType FieldType gt decode Bitset x bits inline protected virtual Decode a field If the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this Parameters bits Bits to use for decoding Returns the decoded value Implements goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Definition at line 139 of file dccl_field_codec_default h 17 10 2 2 template lt typename WireType typename FieldType WireType gt Bitset goby acomms DCCL DefaultNumericFieldCodec lt WireType FieldType gt encode inline protected virtual Encode an empty field Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Definition at line 112 of file dccl_field_codec_default h 17 10 2 3 template lt typename WireType typename FieldType Wi
219. omms ModemDriverBase Definition at line 41 of file abc_driver cpp The documentation for this class was generated from the following files goby acomms modemdriver abc_driver h src acomms modemdriver abc_driver cpp 17 4 goby acomms DCCLCodec Class Reference provides an API to the Dynamic CCL Codec include lt goby acomms dccl h gt Public Member Functions Initialization Methods e void set_cfg const protobuf DCCLConfig amp cfg Set and overwrite completely if present the current configuration protobuf DCCLContfig defined in acomms_ dccl proto e void merge_cfg const protobuf DCCLConfig amp cfg Set and merge repeated fields the current configuration protobuf DCCLConfig defined in acomms_dccl proto Non repeated fields will be overwritten if set e void load_shared_library_codecs void dl_handle Load any codecs present in the given shared library handle e template lt typename ProtobufMessage gt void validate All messages must be validated size checks option extensions checks etc before they can be encoded de coded Use this form when the messages used are static known at compile time Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 98 Codec functions This is where the real work happens void encode std string bytes const google protobuf Message amp msg bool header_only false Encodes a DCCL message
220. on dccl msg max_bytes 32 required double nav_x 1 dccl required double nav_y 2 dccl required HealthEnum health enum HealthEnum HEALTH_GOOD 0 HEALTH_LOW_BATTERY 1 HEALTH_ABORT 2 two_message cpp include goby acomms dccl h include goby util binary h include two_message pb h include lt exception gt include lt iostream gt using namespace goby using goby acomms operator lt lt int main goby acomms DCCLCodec amp dccl goby acomms DCCLCodec get field max 10000 field min 0 field precision 1 field max 10000 field min 0 field precision 1 validate the Simple protobuf message type as a valid DCCL message type dccl validate lt GoToCommand gt dccl validate lt VehicleStatus gt show some useful information about all the loaded messages std cout lt lt doel lt lt std endl std cout lt lt ENCODE DECODE example lt lt std endl Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 5 acomms modemdriver driver_simple driver_simple cpp 193 GoToCommand command command set_destination 2 command set_goto_x 423 command set_goto_y 523 command set_lights_on true command set_new_instructions make_toast command set_goto_speed 2 3456 VehicleStatus status status set_nav_x 234 5 status set_nav_y 451 3 status set_health
221. ons proto import goby acomms protobuf dccl_option_extensions proto import goby test acomms dccl3 header proto message GobyMessage option dccl msg id 4 option dccl msg max_bytes 32 required string telegram 1 dcecl field max_length 10 required Header header 2 protobuf header proto import goby common protobuf option_extensions proto import goby acomms protobuf dccl_option_extensions proto required fields will be filled in for you by ApplicationBase if you choose not to do so yourself message Header time result of goby util as lt std string gt goby_time e g 2002 01 20 23 59 59 000 required string time 10 dccl field codec _time dccl field in_head true fi source required string source_platform 11 dccl field codec _platform lt gt modem_id dccl field in_head true optional string source_app 12 dccl field omit true destination enum PublishDestination PUBLISH_SELF 1 PUBLISH_OTHER 2 PUBLISH_ALL 3 optional PublishDestination dest_type 13 default PUBLISH_SELF dccl field in_head true optional string dest_platform 14 dccl field codec _platform lt gt modem_id dccl field in_head true required if dest_type other See Also queue2 test cpp queue3 test cpp queue4 test cpp 4 4 4 Test5 queued test proto Generated on Wed Mar 26 2014 01 41 49 for
222. ontseat_driver cpp share examples moos abc_frontseat_driver abc_frontseat_driver h share examples moos abc_frontseat_driver abc_frontseat_driver proto share examples moos abc_frontseat_driver abc_frontseat_driver_config proto share examples moos gobyexample_protobuf simple_status proto 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen src apps moos dccl_xml_to_dccl_proto dccl_xml_to_dccl_proto cpp 14 1 File List 76 share examples util flexostream_simple flexostream_simple cpp 2 src acomms amac mac_manager cpp 2 src acomms dccl dccl cpp 2 src acomms dccl dccl_bitset cpp 2 src acomms dccl dccl_ccl_compatibility cpp 22 src acomms dccl dccl_field_codec cpp 22 src acomms dccl dccl_field_codec_arithmetic cpp 22 src acomms dccl dccl_field_codec_default cpp 22 src acomms dccl dccl_field_codec_default_message cpp 22 src acomms dccl dccl_field_codec_helpers cpp 22 src acomms dccl dccl_field_codec_manager cpp 22 src acomms dccl dccl_type_helper cpp 22 src acomms dccl WhoiUtil cpp 22 src acomms modemdriver abc_driver cpp 22 src acomms modemdriver driver_base cpp 2 src acomms modemdriver mm_driver cpp 22 src acomms modemdriver udp_driver cpp 22 src acomms queue queue cpp 2 src acomms queue queue_manager cpp 2 src acomms route route cpp 2 sr
223. orry about running out Subclass goby acomms ModemDriverBase and overload the pure virtual methods goby acomms Modem DriverBase handle_initiate_ranging is optional Your interface should look like this namespace goby namespace acomms class ABCDriver public ModemDriverBase public ABCDriver void startup const protobuf DriverConfig amp cfg void shutdown void do_work void handle_initiate_transmission const protobuf ModemTransmission amp m private protobuf DriverConfig driver_cfg_ configuration given to you at launch rest is up to you y e Fill in the methods You are responsible for emitting the goby acomms ModemDriverBase signals at the appropriate times Read on and all should be clear Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 3 Writing a new driver 35 goby acomms ABCDriver ABCDriver other initialization you can do before you have your goby acomms DriverConfig configuration object At startup you get your configuration from the application e g pAcommsHandler void goby acomms ABCDriver startup const protobuf DriverConfig amp cfg driver_cfg_ cfg check driver_cfg_ to your satisfaction and then start the modem physical interface if driver_cfg_ has_serial_baud driver_cfg_ set_serial_baud DEFAULT_BAUD glog is DEBUG1 amp amp glog lt lt group modem_out lt lt ABCDriver
224. ossible 1 If you haven t yet follow instructions on installing Goby http gobysoft com wiki InstallingGoby 2 Identify which components you need Encoding and decoding from C types to bit packed messages dccl Queuing of DCCL messages with priority based message selection queue A driver for interacting with the acoustic modem firmware modemdriver Time division multiple access TDMA medium access control MAC amac 3 Look at the simple code examples that accompany each component dccl_simple cpp queue_simple cpp driver_simple cpp amac_simple cpp Then look at the example that uses all the components together chat cpp The full list of examples is given in this table 4 Refer to the rest of the documentation as needed Please visit https answers launchpad net goby with any questions section acomms_overview Overview subsection analogy Analogy to established networking systems To start on some hopefully common ground let s begin with an analogy to Open Systems Initiative OSI network ing layers in this table For a complete description of the OSI layers see http www itu int rec T RE Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 1 Quick Start C K 200 1 99407 1 en OSI Layer Goby Acomms library API class es Example s component Application Not yet part of Goby MOOS Application pAcommsHandler Presentation decl Encod
225. ost_decode const boost any amp wire_value boost any field_value inline protected virtual Virtual method used to post decode convert from WireType to FieldType The default implementation of this method is for when WireType FieldType and simply copies the wire_value to the field_value Parameters wire_value Value to convert WireType field_value Converted value FieldType Definition at line 364 of file dccl_field_codec h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 120 17 13 2 4 virtual void goby acomms DCCLFieldCodecBase any_pre_encode boost any x wire_value const boost any amp field_value inline protected virtual Virtual method used to pre encode convert from Field Type to Wire Type The default implementation of this method is for when WireType FieldType and simply copies the field_value to the wire_value Parameters wire_value Converted value Wire Type field_value Value to convert FieldType Definition at line 356 of file dccl_field_codec h 17 13 2 5 virtual unsigned goby acomms DCCLFieldCodecBase any_size const boost any amp wire_value protected pure virtual Virtual method for calculating the size of a field in bits Parameters field_value Value to calculate size of Returns Size of field in bits 17
226. ouble field float int32 uint32 int64 uint64 fixed32 fixed64 sfixed32 sfixed64 static_value string ll goby acomms D The static value for CCLStaticCodec use on decoding any type this placeholder field max_length uint32 0 goby acomms D The maximum CCLDefaultString length of the string Codec that can be stored goby acomms D in this field CCLDefaultBytes Codec string max_repeat uint32 0 any repeated The maximum field length of the repeated array or vector 3 3 Interacting with the DCCLCodec Using the goby acomms DCCLCodec is a fairly straightforward endeavor this example uses dccl_simple cpp First you need to get a pointer to the DCCLCodec singleton goby acomms DCCLCodec codec goby acomms DCCLCodec get Validate all messages with the DCCLCodec to ensure all bounding constraints are met try dccl gt validate lt Simple gt catch DCCLException amp e std cerr lt lt Oh no lt lt e lt lt std endl Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 4 Encryption 15 exit 1 Then to encode a message create a Protobuf message set its fields and pass it to goby acomms DCCLCodec encode Simple message message set_telegram hello std string bytes dccl gt encode amp bytes message bytes will now contain the encoded message in the form of a byte string each char will contain
227. ovided for users to generate applications that participate in the Goby publish subscribe architecture 16 5 1 Detailed Description Contains objects relating to the core publish subscribe architecture provided by Goby 16 6 goby transitional Namespace Reference Objects pertaining to transitioning from DCCLv1 to DCCLv2 Classes class DCCLTransitionalCodec provides an API to the Transitional Dynamic CCL Codec looks like DCCLv1 but calls DCCLv2 Warning this class is for legacy support only new applications should use DCCL Codec directly e class DCCLMessageVal defines a DCCL value Typedefs e typedef boost function lt void DCCLMessageVal amp gt AlgFunction1 boost function for a function taking a single DCCLMessageVal reference Used for algorithm callbacks typedef boost function lt void DCCLMessageVal amp const std vector lt DCCLMessageVal gt amp gt AlgFunction2 boost function for a function taking a dccl MessageVal reference and the MessageVal of a second part of the message Used for algorithm callbacks Enumerations enum DCCLType dccl_ static dccl_bool dccl_int dccl_float dccl_enum dccl_string dccl_hex Enumeration of DCCL types used for sending messages dccl_enum and dccl_string primarily map to cpp_string dccl_bool to cpp_bool dccl_int to cpp_long dccl_float to cop_double enum DCCLCppType cpp_notype cpp_bool cpp_string cpp_long cpp_double Enumeration of C
228. p msg and msg dest is set to a specific endpoint ip port e g 192 168 1 101 5123 8 goby moos An overview of the Goby MOOS interoperability library Table of Contents for goby moos An overview of the Goby MOOS interoperability library e FrontSeat Writing a new driver for iFrontSeat Overview State charts Example ABC driver 8 1 iFrontSeat iFrontSeat is a MOOS application used to interface a Goby MOOS community the backseat running pHelmlv P with a given manufacturer s vehicle the frontseat The usage of iFrontSeat and the existing driver suite is explained in the Goby user manual see Resources 8 1 1 Writing a new driver for iFrontSeat 8 1 1 1 Overview iFrontSeat is intended to interface to a wide range of vehicles using any interface e g proprietary extensions of NMEA 0183 The purpose of the driver is to implement the Goby FrontSeatInterfaceBase in the language of the particular frontseat vehicle system Minimally these are the requirements of the frontseat e it can provide a navigation solution for the vehicle minimally latitude longitude depth and speed and typically also the geo referenced pose of the vehicle heading pitch yaw e it can accept a desired heading speed and depth at around 1 Hz for the vehicle and carry out these commands as quickly as reasonably possible given the vehicle s dynamics Additionally the frontseat may provide or consume arbitrary sensor data
229. pb Contains objects relating to the core publish subscribe architecture provided by Goby namespace transitional Objects pertaining to transitioning from DCCLv1 to DCCLv2 Classes class Exception simple exception class for goby applications Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 1 goby Namespace Reference 82 Typedefs e typedef google protobuf uint32 uint32 an unsigned 32 bit integer typedef google protobuf int32 int32 a signed 32 bit integer typedef google protobuf uint64 uint64 an unsigned 64 bit integer e typedef google protobuf int64 int64 a signed 64 bit integer Enumerations e enum GobyFieldOptions ConfigurationOptions_ConfigAction GobyFieldOptions_Configuration Options_ConfigAction_ALWAYS 1 GobyFieldOptions_ConfigurationOptions_ConfigAction_NEVE R 2 GobyFieldOptions_ConfigurationOptions_ConfigAction_ADVANCED 3 Functions template lt typename App gt int run int argc char argv Run a Goby application derived from MinimalApplicationBase blocks caller until MinimalApplicationBase __run returns void protobuf_AddDesc_goby_2fcommon_2fprotobuf_2foption_5fextensions_2eproto e void protobuf_AssignDesc_goby_2fcommon_2fprotobuf_2foption_5fextensions_2eproto void protobuf_ShutdownFile_goby_2fcommon_2fprotobuf_2foption_5fextensions_2eproto bool GobyFieldOptions_ConfigurationOptions_ConfigAction_IsValid int value const google protob
230. perator double 174 operator float 174 operator int 175 operator long 175 operator std string 175 operator unsigned 175 set 175 goby transitional DCCLTransitionalCodec 176 all_message_ids 177 all_message_names 177 DCCLTransitionalCodec 176 get_repeat 177 id2name 177 message_count 177 message_var_names 177 name2id 177 goby util LineBasedInterface 178 readline 179 goby util SerialClient 179 SerialClient 180 goby util TCPClient 180 TCPClient 181 goby util TCPServer 181 TCPServer 182 Group 183 GroupSetter 183 handle_initiate_transmission goby acomms ABCDriver 95 goby acomms ModemDriverBase 152 goby moos BluefinCommsDriver 168 goby moos UFldDriver 169 handle_modem_data_request goby acomms QueueManager 158 handle_modem_receive goby acomms QueueManager 159 hex_string2binary_string goby transitional 92 hex_string2number goby transitional 92 id goby acomms DCCLCodec 101 id2name goby transitional DCCLTransitionalCodec 177 id_from_encoded goby acomms DCCLCodec 101 info goby acomms DCCLCodec 102 goby acomms DCCLFieldCodecBase 124 goby acomms QueueManager 159 info_all goby acomms DCCLCodec 102 goby acomms QueueManager 159 load_shared_library_codecs goby acomms DCCLCodec 102 max_size goby acomms DCCLDefaultldentifierCodec 109 goby acomms DCCLFieldCodecBase 124 goby acomms DCCLRepeatedTypedFieldCodec 139 message_count goby t
231. plication subscribe boost function lt void const ProtoBufMessage amp gt handler boost function lt void const ProtoBufMessage amp gt const std string 4 group inline protected Subscribe to a message of any type derived from google protobuf Message Parameters handler Function object to be called as soon as possible upon receipt of a message of this type The signature of handler must match void handler const ProtoBufMessage amp msg if handler is omitted no handler is called and only the newest message buffer is updated upon message receipt for calls to newest lt ProtoBufMessage gt Definition at line 73 of file application h 17 41 3 2 template lt typename ProtoBufMessage class C gt void goby pb Application subscribe void C const ProtoBufMessage amp mem_func C x obj const std string group inline protected Subscribe for a type using a class member function as the handler Parameters mem_func Member function method of class C with a signature of void C mem_func const ProtoBuf Message amp msg obj pointer to the object whose member function mem_func to call Definition at line 89 of file application h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 42 goby transitional DCCLMessageVal Class Reference 173 17 41 3 3 common ZeroMOServiceg goby pb Application zeromq_service inline
232. precision for times represented by the string representation of boost posix_time uptime e g obtained from goby_time lt std string gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 20 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Class Template Reference 138 Template Parameters TimeType A type representing time See the various specializations of goby_time for allowed types Definition at line 240 of file dccl_field_codec_default h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_default h 17 20 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Class Template Reference Base class for static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire include lt goby acomms dccl dccl_field_codec_typed h gt Inheritance diagram for goby acomms DCCLTypedFieldCodec lt WireType FieldType gt gobyacomms DCCLRepeated TypedFieldCodec lt WireType FeeldType gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec goby acomms DCCLypedField Selector lt WireType FielaType gt Codec lt Wrelype FieldType gt goby acomms DCCLDefault bt NumericFieldCodec lt
233. protobuf transmit_stat date 20110914 time 204459 0000 clock_mode NO_SYNC_TO_PPS_AND_CCCLK_GOOD mode TRANSMIT_SUCCESSFUL probe_length 40 bandwidth 4000 carrier_freq 25120 i modified transmission CCMPC CAMPC signal_transmit_result ModemTransmission src 1 dest 2 time 1316033101000000 time_source MODEM_TIME type MICROMODEM_TWO_WAY_PING micromodem protobuf ranging_reply one_way_travel_time 0 2501 micromodem protobuf receive_stat mode RECEIVE_GOOD packet_type FSK_MINI data_quality_factor 250 doppler 0 stddev_noise 1 carrier_freq 25120 bandwidth 4000 version 0 l l l l l l l D l l l l ODEM_TWO_WAY_PING signal_receive gt type MICROM a 5 i l l l Always pres Often pres Occasionally present Figure 10 Two way ping 7 goby util Overview of Utility Libraries Table of Contents for goby util Overview of Utility Libraries e Overview e Logging Configurable extension of std ostream liblogger TCP and Serial port communications liblinebasedcomms section util_overview Overview The goby util libraries are intended to provide functions and classes for handling utility tasks Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen such as lc 7 goby util Overview of Utili
234. r gt protobuf EnumValueDescriptor gt google protobuf EnumValueDescriptor gt goby acomms DCCLFieldCodec Selector lt int32 TimeType gt goby acomms DCCLIypedField Codec lt int32 TimeType gt goby acomms DCCLIypedFixed FieldCodec lt int32 TimeType gt goby acomms DCCLFieldCodec goby acomms DCCLIypedField Selector lt Model value_type lt Codec lt Model value_type const google protobuf EnumValueDescriptor gt const google protobuf EnumValueDescriptor gt goby acomms DCCLRepeated TypedfieldCodec lt Model value_type const google protobuf EnumValueDescriptor gt goby acomms DCCLFieldCodec Selector lt Model value_type goby acomms DCCLIypedField goby acomms DCCLRepeated FieldType gt Codec lt Model value_type TypedFieldCodec lt Model FieldType gt value_type FieldType gt goby acomms DCCLFieldCodec Selector lt protobuf CCLMDATState goby acomms DCCLIypedField GFIPItChOll protobuf CCLMDATState Codec lt protobuf CCLMDATState GFIPitchOil gt GFIPItChOll protobuf CCLMDATState goby acomms DCCUypedFixed bk FieldCodec lt protobuf CCLMDATState GFIPitchOil gt iGrIPitchOll gt goby acomms DCCLFieldCodec Selector lt
235. r gt amp msgs Returns the encoded size of multiple messages at once sum of all sizes You must use this method instead of N calls to size where N is msgs size to get the size of messages encoded using encode_repeated as repeated encoding may be more efficient in terms of the encoded message size than N calls of encode template lt typename GoogleProtobufMessagePointer gt GoogleProtobufMessagePointer decode const std string amp bytes bool header_only false An alterative form for decoding messages for message types not known at compile time dynamic template lt typename GoogleProtobufMessagePointer gt std string encode_repeated const std list lt GoogleProtobufMessagePointer gt amp msgs Encode multiple messages at once In general this is more efficient i e produces smaller messages than calling encode repeatedly template lt typename GoogleProtobufMessagePointer gt std list lt GoogleProtobufMessagePointer gt decode_repeated const std string amp orig_bytes Decode multiple messages at once Messages encoded using encode_repeated must be decoded using decode _ repeated Custom DCCL ID Codecs Advanced Change the underlying DCCL ID codec to optimize your network Be very careful you know how to identify all your messages though template lt typename DCCLTypedFieldCodecUint32 gt void add_id_codec const std string amp identifier Adds a DCCL id codec to be used along with a string identifier void se
236. r auto discovery of vehicles Also useful for higher level analysis and debugging of the transactions between the driver and the modem e boost signals2 signal lt void const protobuf ModemRaw amp msg gt signal_raw_outgoing Called after any message is sent from the driver to the modem Useful for higher level analysis and debugging of the transactions between the driver and the modem Protected Member Functions Constructors Destructor e ModemDriverBase Constructor Write read from the line based interface to the modem void modem_write const std string amp out write a line to the serial port bool modem_read std string xin read a line from the serial port including end of line character s e void modem_start const protobuf DriverConfig amp cfg Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 29 goby acomms ModemDriverBase Class Reference 153 start the physical connection to the modem serial port TCP etc must be called before ModemDriverBase modem_read or ModemDriverBase modem_write void modem_close closes the serial port Use modem_start to reopen the port const std string amp glog_out_group const e const std string amp glog_in_group const e util LineBasedInterface amp modem use for direct access to the modem Static Protected Attributes static int count_ 0 17 29 1 Detailed Description provides an abstract base class for acoustic
237. r holding the FlexOStreamBuf include lt goby common logger flex_ostream h gt Inherits std ostream Public Member Functions FlexOstream const FlexOstream amp FlexOstream amp operator const FlexOstream 8 e void refresh Get a reference to the Goby logger mutex for scoped locking e void set_group const std string amp s Initialization e void add_group const std string amp name Colors Color color Colors nocolor const std string amp descrip tion void set_name const std string amp s Set the name of the application that the logger is serving void enable_gui bool is goby common logger Verbosity verbosity logger_lock LockAction lock_action logger_lock none e void add_stream logger Verbosity verbosity logger VERBOSE std ostream os 0 Attach a stream object e g std cout std ofstream to the logger with desired verbosity e void add_stream goby common protobuf GLogConfig Verbosity verbosity goby common protobuf GLogConfig VERBOSE std ostream xos 0 Overloaded insert stream operator lt lt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 36 goby common FlexOStreamBuf Class Reference 165 e std ostream 8 operator lt lt FlexOstream 8 x pf FlexOstream amp e std ostream 8 operator lt lt std ostream amp pf std ostream amp std ostream 8 operator lt lt bool amp val e std ostream operator lt lt co
238. r lt bool bool gt goby acomms DCCLIypedField Codec lt bool bool gt goby acomms DCCLIypedFixed FieldCodec lt bool gt goby acomms DCCLFieldCodec Selector lt CustomMsg CustomMsg gt goby acomms DCCLIypedField Codec lt CustomMsg CustomMsg gt goby acomms DCCLIypedFixed FieldCodec lt CustomMsg gt goby acomms DCCLFieldCodec Selector lt double double gt goby acomms DCCLIypedField Codec lt double double gt goby acomms DCCLIypedFixed FieldCodec lt double gt y goby acomms DCCLFieldCodec Selector lt float float gt goby acomms DCCLIypedField Codec lt float float gt goby acomms DCCUypedfixed FieldCodec lt float gt _ goby acomms DCCLFieldCodec goby acomms DCCLIypedField goby acomms DCCLRepeated Selector lt goby int32 goby fg Codec lt goby int32 goby a TypedHeldCodec lt goby 2 gt int32 gt goby acomms DCCLFieldCodec goby acomm Selector lt goby uint32 bj Codec lt goby goby uint32 gt goby acomms DCCLIypedFixed FieldCodec lt goby uint32 gt goby acomms DCCLFieldCodec goby acomms DCCLIypedField goby acomms DCCLIypedFixed Selector lt int32 const google jt Codec lt int32 const google FieldCodec lt int32 const nprotobuf EnumValueDescripto
239. r s data into frames like TCP IP If this functionality is desired it must be provided at the application layer Acoustic communications are too unpredictable to reliably stitch together frames Detailed documentation for goby acomms queue Message Priority Queuing 2 4 modemdriver Modem driver The goby acomms Modem driver component nodemdriver of the Goby Acomms library provides an interface from the rest of goby acomms to the acoustic modem firmware While currently the only driver publicly available is for the WHOI Micro Modem and for an example toy modem ABCDriver this component is written in such a way that drivers for any acoustic modem that interfaces over a serial or TCP connection and can provide or provide abstractions for sending data directly to another modem on the link should be able to be written Any one who is interested in writing a modem driver for another acoustic modem should get in touch with the goby project https launchpad net goby and see Writing a new driver Detailed documentation for goby acomms modemdriver Driver to interact with modem firmware 2 5 amac Medium Access Control MAC The goby acomms MAC component amac handles access to the shared medium in our case the acoustic channel We assume that we have a single frequency band for transmission so that if vehicles transmit simultaneously collisions will occur between messaging Therefore we use time division multiple access TDMA schemes
240. ransitional DCCLTransitionalCodec 177 message_var_names goby transitional DCCLTransitionalCodec 177 min_size goby acomms DCCLDefaultldentifierCodec 109 goby acomms DCCLFieldCodecBase 124 goby acomms DCCLRepeatedTypedFieldCodec 139 modem_read goby acomms ModemDriverBase 153 modem_start goby acomms ModemDriverBase 153 modem_write goby acomms ModemDriverBase 153 moos_protobuf_helpers h parse_for_moos 185 serialize_for_moos 185 name2id goby transitional DCCLTransitionalCodec 177 number2hex_string goby transitional 92 operator bool goby transitional DCCLMessageVal 174 operator double goby transitional DCCLMessageVal 174 operator float goby transitional DCCLMessageVal 174 operator int goby transitional DCCLMessageVal 175 operator long goby transitional DCCLMessageVal 175 operator std string goby transitional DCCLMessageVal 175 operator unsigned goby transitional DCCLMessageVal 175 parse_for_moos moos_protobuf_helpers h 185 post_decode goby acomms DCCLFieldCodecSelector lt Wire Type FieldType typename boost disable_if lt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen INDEX 201 boost is_same lt WireType FieldType gt gt type gt 129 pre_encode goby acomms DCCLFieldCodecSelector lt Wire Type FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt 130 push_message goby acomms Qu
241. rated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 50 ModemTransmission src 1 dest 2 type MICROMODEM_MINI_DATA Application or other Goby Modules modemdriver1 initiate_transmission signal_modify_transmission A KE NI ModemTransmission src 1 dest 2 type MICROMODEM_MINI_DATA max_num_frames 1 max_frame_bytes 2 frame 001 modified transmission ModemTransmission src 1 dest 2 type MICROMODEM_MINI_DATA micromodem protobuf transmit_stat packet_type FSK_MINI signal_transmit_re sult o 1 WHOI Micro Modem Firmware lt l l i FSK Mini User l l Key Always present required us Often present typical usa Occasionally present advanced or s Figure 9 User mini packet 13 bit data transmission Two way ping Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 7 goby util Overview of Utility Libraries 51 ModemTransmission src 1 dest 2 type MICROMODEM_TWO_WAY_PING Application or other Goby Modules WHOI Micro Modem Firmwa modemdriver1 To initiate_transmission l l gt si gnal_modify_transmission a A ModemTransmission src 1 dest 2 type MCROMODEM_TWO_WAY_PING micromodem
242. reType gt virtual Bitset goby acomms DCCLDefault NumericFieldCodec lt WireType FieldType gt encode const WireType amp wire value inline protected virtual Encode a non empty field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 11 goby acomms DCCLDefaultStringCodec Class Reference 114 Parameters wire_value Value to encode Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt Wire Type Field Type gt Definition at line 118 of file dccl_field_codec_default h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_default h 17 11 goby acomms DCCLDefaultStringCodec Class Reference Provides an variable length ASCII string encoder Can encode strings up to 255 bytes by using a length byte preceeding the string include lt goby acomms dccl dccl_field_codec_default h gt Inheritance diagram for goby acomms DCCLDefaultStringCodec goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt std string std ustring gt goby acomms DCCLlypedField Codec lt std string gt goby acomms DCCLDefault StringCodec Additional Inherited Members 17 11 1 Detailed Description Provides an variable length ASCII string encoder Can encode strings up to 255 bytes by using a length byte preceeding the string Generated on Wed Mar 26 2014 01 4
243. regardless of type e void set long lval set the value with a long overwrites previous value regardless of type void set bool bval set the value with a bool overwrites previous value regardless of type Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 42 goby transitional DCCLMessageVal Class Reference 174 Getters bool get std string amp s const extract as std string all reasonable casts are done bool get bool amp b const extract as bool all reasonable casts are done bool get long amp t const extract as long all reasonable casts are done bool get double amp d const extract as double all reasonable casts are done operator double const operator bool const operator std string const operator long const operator int const operator unsigned const operator float const operator std vector lt DCCLMessageVal gt const DCCLCppType type const what type is the original type of this DCCLMessage Val bool empty const was this just constructed with DCCLMessageVal unsigned precision const Comparison bool operator const DCCLMessageVal amp mv const bool operator const std string 8s const bool operator double d const bool operator long const bool operator bool b const Friends e std ostream amp operator lt lt std ostream amp os const DCCLMessageVal amp mv 17 42 1 Detailed Description
244. resentation the Google Protobuf representation into the WireType representation the type used in the encoded DCCL message This allows for type converting codecs void field_pre_encode_repeated std vector lt boost any gt wire_values const std vector lt boost any gt amp field_values Pre encodes a repeated field void field_encode Bitset xbits const boost any amp field_value const google protobuf FieldDescriptor field Encode a non repeated field void field_encode_repeated Bitset bits const std vector lt boost any gt amp field_values const google protobuf FieldDescriptor field Encode a repeated field void field_size unsigned bit_size const boost any amp field_value const google protobuf FieldDescriptor field Calculate the size of a field void field_size_repeated unsigned xbit_size const std vector lt boost any gt amp wire_values const google protobuf FieldDescriptor xfield Calculate the size of a repeated field void field_decode Bitset bits boost any field_value const google protobuf FieldDescriptor field Decode a non repeated field void field_decode_repeated Bitset bits std vector lt boost any gt x field_values const google protobuf FieldDescriptor field Decode a repeated field void field_post_decode const boost any amp wire_value boost any field_value Post decodes a non repeated i e optional or required field by converting the WireType the type
245. roto file This ID is used on the wire to unique identify incoming message types unsigned size const google protobuf Message amp msg Provides the encoded size in bytes of msg This is useful if you need to know the size of a message before encoding it encoding it is generally much more expensive than calling this method 17 4 1 Detailed Description provides an API to the Dynamic CCL Codec sa acomms_dccl proto and acomms_modem_message proto for definition of Google Protocol Buffers messages Simple usage example 1 Define a Google Protobuf message with DCCL extensions verbinclude simple proto 2 Write a bit of code like this code goby acomms DCCLCodec dccl goby acomms DCCLCodec get dccl gt validate lt Simple gt Simple message_out message_out set_telegram Hello std string bytes dccl gt encode 8bytes message send bytes across some network Simple message_in dccl gt decode bytes amp message_in Examples acomms chat chat cpp acomms dccl dccl_simple dccl_simple cop and acomms dccl two_message two_ message cpp Definition at line 96 of file dccl h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 100 17 4 2 Member Function Documentation 17 4 2 1 template lt typename DCCLTypedFieldCodecUint32 gt void goby acomms DCCLCodec add_id_codec const std string identifier inline Adds a DCCL id codec to
246. s DCCLRepeatedTypedFieldCodec lt Model value_ type const google protobuf EnumValueDescriptor gt goby acomms DCCLRepeatedTyped FieldCodec lt goby int32 gt goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt goby acomms DCCLDefaultNumericFieldCodec lt uint32 gt goby acomms DCCLDefaultNumericFieldCodec lt int32 const google protobuf EnumValueDescriptor x gt goby acomms DCCLDefaultNumericFieldCodec lt int32 Time Type gt goby acomms DCCLDefaultldentifierCodec goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt goby acomms DCCLTypedFixedFieldCodec lt protobuf CCLMDATState GFIPitchOil gt goby acomms DCCLTypedFixedFieldCodec lt double gt goby acomms DCCLTypedFixedFieldCodec lt uint32 uint32 gt goby acomms DCCLTypedFixedFieldCodec lt float gt goby acomms DCCLTypedFixedFieldCodec lt Custom Msg gt goby acomms DCCLTypedFixedFieldCodec lt T gt goby acomms DCCLTypedFixedFieldCodec lt uint64 gt goby acomms DCCLTypedFixedFieldCodec lt int32 const google protobuf EnumValueDescriptor gt goby acomms DCCLTypedFixedFieldCodec lt bool gt goby acomms DCCLTypedFixedFieldCodec lt int32 TimeType gt and goby acomms DCCLTypedFixedFieldCodec lt goby uint32 gt 17 20 2 5 template lt typename WireType typename FieldType WireType gt virtual unsigned goby acomms D CCLTypedFieldCodec lt WireType FieldType gt size const W
247. s Reference 0 0 00 2 164 12 361 Detailed Description lt lt ns s oc ios oe a e oR a e AAA e Eh A 165 17 37goby common TermColor Class Reference 2 a 165 1 371 Detailed DOSCOQION s seos 2800S Phe a Ea ee ae ae a eS 166 17 38goby Exception Class Reference a ooo ee 166 17 38 1 Detailed Description lt lt a esa bb bebe ewe eh ee eee ee 166 17 39goby moos BluefinCommsDriver Class Reference 0 o ee eee eee 167 17 391 Detailed Deacon lt s e i ee ee Ce ee A AR Ae ke 167 17 39 2 Member Function Documentation e e a 167 17 40goby moos UFldDriver Class Reference o 2 e 168 11401 Detailed DESCQUIT coria o aa eee a a RA A 169 17 40 2 Member Function Documentation e eee a 169 17 41 goby pb Application Class Reference e e ee 170 17411 DOTA BESCOQUOT lt A ARE ee a Aa 171 17 41 2 Constructor amp Destructor Documentation o 2 02200 e e 171 17 41 3 Member Function Documentation 002 e e e 171 17 42goby transitional DCCLMessageVal Class Reference o e pees 172 11421 Detailed Descrmpliony lt oic aoa uy aa da ada 173 17 42 2 Member Function Documentation e e e eo 173 17 43goby transitional DCCLTransitionalCodec Class Reference o o 176 1743 1 Detailed Description ies ceci a ee eS 176 17 43 2 Constructor amp
248. s Reference 179 17 43 3 7 unsigned goby transitional DCCLTransitionalCodec name2id const std string amp name inline Parameters name message name Returns id of message Definition at line 151 of file dccl_transitional h The documentation for this class was generated from the following files goby moos transitional dccl_transitional h e src moos transitional dccl_transitional cpp 17 44 goby util LineBasedinterface Class Reference basic interface class for all the derived serial and networking mimics line based nodes serial tcp udp etc include lt goby util linebasedcomms interface h gt Inheritance diagram for goby util LineBasedInterface goby util LineBasedInterface goby util TCPServer Public Types e enum AccessOrder NEWEST_FIRST OLDEST_FIRST Public Member Functions LineBasedinterface const std string amp delimiter e void start e void close bool active bool readline std string xs AccessOrder order OLDEST_FIRST returns string line including delimiter bool readline protobuf Datagram msg AccessOrder order OLDEST_FIRST e void write const std string amp s e void write const protobuf Datagram 8msg e void clear e void set_delimiter const std string amp s e std string delimiter const boost asio io_service amp io_service Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 1
249. s UF1ldNodeComms Definition at line 45 of file moos_ufield_sim_driver h 17 40 2 Member Function Documentation 17 40 2 1 void goby moos UFldDriver do_work virtual Allows the modem driver to do its work Should be called regularly to perform the work of the driver as the driver does not run in its own thread This allows us to guarantee that no signals are called except inside this method Does not block Implements goby acomms ModemDriverBase Definition at line 209 of file moos_ufield_sim_driver cpp 17 40 2 2 void goby moos UFldDriver handle_initiate_transmission const goby acomms protobuf ModemTransmission amp m virtual Virtual initiate_transmission method Typically connected to MACManager signal_initiate_transmission using bind Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 41 goby pb Application Class Reference 171 Parameters m ModemTransmission defined in acomms_modem_message proto containing the details of the transmission to be started This may contain data frames If not data will be requested when the driver calls the data request signal ModemDriverBase signal_data_request Implements goby acomms ModemDriverBase Definition at line 91 of file moos_ufield_sim_driver cpp 17 40 2 3 void goby moos UFldDriver startup const goby acomms protobuf DriverConfig amp cfg virtual Starts the modem driver Must be called before poll
250. s like boost shared_ptr included Parameters msgs list of DCCL messages to get the sizes of Returns total size of the encoded messages in bytes Definition at line 259 of file decl h 17 4 2 15 template lt typename ProtobufMessage gt void goby acomms DCCLCodec validate inline All messages must be validated size checks option extensions checks etc before they can be encoded decoded Use this form when the messages used are static known at compile time Template Parameters ProtobufMessage Any Google Protobuf Message generated by protoc i e subclass of google protobuf Message Exceptions DCCLException if message is invalid Warnings and errors are written to goby glog Examples acomms chat chat cpp acomms dccl dccl_simple dccl_simple cop and acomms dccl two_message two_ message cpp Definition at line 135 of file dccl h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 5 goby acomms DCCLDefaultBoolCodec Class Reference 105 17 4 2 16 void goby acomms DCCLCodec validate const google protobuf Descriptor x desc An alterative form for validating messages for message types not known at compile time dynamic Parameters desc The Google Protobuf Descriptor meta data of the message to validate Exceptions DCCLException if message is invalid Definition at line 3
251. s the default 1 byte or 2 byte DCCL ID codec e class DCCLDefaultNumericFieldCodec Provides a basic bounded arbitrary length numeric double float uint32 uint64 int32 int64 encoder class DCCLDefaultBoolCodec Provides a bool encoder Uses 1 bit if field is required 2 bits if optional e class DCCLDefaultStringCodec Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 2 goby acomms Namespace Reference 84 Provides an variable length ASCII string encoder Can encode strings up to 255 bytes by using a length byte pre ceeding the string class DCCLDefaultBytesCodec Provides an fixed length byte string encoder class DCCLDefaultEnumCodec Provides an enum encoder This converts the enumeration to an integer based on the enumeration index not its value and uses DCCLDefaultNumericFieldCodec to encode the integer class DCCLTimeCodec Encodes time of day second precision for times represented by the string representation of boost posix_time ptime e g obtained from goby_time lt std string gt e class DCCLStaticCodec Placeholder codec that takes no space on the wire 0 bits e class DCCLDefaultMessageCodec Provides the default codec for encoding a base Google Protobuf message or an embedded message by calling the appropriate field codecs for every field e class DCCLTypedFixedFieldCodec Base class for static typed field encoders decoders that use a fixed number of bits on the wire regardless o
252. se class for repeated multiple value static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCL TypedFixedFieldCodec if your codec is fixed length always uses the same number of bits on the wire Use DCCLTypedFieldCodec if your fields are always singular optional or required Singular fields are default implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector class goby acomms DCCLCodec provides an API to the Dynamic CCL Codec 15 1 1 Detailed Description 15 2 API classes for the major components of the Goby Acomms acoustic communications library DCCL Queue AMAC ModemDriver Collaboration diagram for API classes for the major components of the Goby Acomms acoustic communications library DCCL Queue AMAC ModemDriver API classes for the API classes for the major components of i da i fina Gale Naam consie _goby acomms DCCLCodec Dynamic Compact Control Language includes writing communications library custom encoders DCCL Queue AMAC ModemDriver Classes class goby acomms ABCDriver provides an API to the imaginary ABC modem as an example how to write drivers Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 Namespace Documentation 81 15 2 1 16 16 1 class goby moos BluefinCommsDriver provides a driver for the Bluefin H
253. se message Definition at line 219 of file dccl_field_codec cpp 17 13 2 20 void goby acomms DCCLFieldCodecBase field min_size unsigned bit size const google protobuf FieldDescriptor x field Calculate the lower bound on this field s size in bits Parameters bit_size Location to add calculated minimum bit size to Be sure to zero bit_size if you want only the size of this field field Protobuf descriptor to the field Set to O for base message Definition at line 249 of file dccl_field_codec cpp 17 13 2 21 void goby acomms DCCLFieldCodecBase field post decode const boost any 4 wire_value boost any field_value inline Post decodes a non repeated i e optional or required field by converting the WireType the type used in the encoded DCCL message representation into the FieldType representation the Google Protobuf representation This allows for type converting codecs Parameters wire_value Should be set to the desired value to translate field_value Will be set to the converted wire_value Definition at line 264 of file dccl_field_codec h 17 13 2 22 void goby acomms DCCLFieldCodecBase field_post_decode_repeated const std vector lt boost any gt amp wire_values std vector lt boost any gt field_values inline Post decodes a repeated field Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms
254. se_for_moos const std string in google protobuf Message x msg inline Parses the string in to Google Protocol Buffers message msg All errors are written to the goby util glogger Parameters in std string to parse msg Google Protocol buffers message to store result Definition at line 1286 of file moos_protobuf_helpers h 18 1 2 2 void serialize_for_moos std string out const google protobuf Message amp msg inline Converts the Google Protocol Buffers message msg into a suitable human readable string out for sending via MOOS Parameters out pointer to std string to store serialized result msg Google Protocol buffers message to serialize Definition at line 1277 of file moos_protobuf_helpers h 19 Example Documentation Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 1 acomms amac amac_simple amac_simple cpp 187 19 1 acomms amac amac_simple amac_simple cpp include goby acomms amac h include goby acomms connect h include goby common logger h include lt iostream gt using goby acomms operator lt lt void init_transmission const goby acomms protobuf ModemTransmission amp msg int main int argc char argv goby glog set_name argv 0 goby glog add_stream goby common logger DEBUG1 amp std clog fi 1 Create a MACManager fi goby acomms MACManager mac 2 Con
255. signal lt lt void const protobuf ModemRaw amp msg gt goby acomms ModemDriverBase signal_raw_ outgoing Called after any message is sent from the driver to the modem Useful for higher level analysis and debugging of the transactions between the driver and the modem If desired you should connect one or more slots a function or member function to this signal to listen on outgoing transactions Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll ModemRaw is defined in acomms_modem_message proto Definition at line 114 of file driver_base h 17 29 3 5 boost signals2 signal lt void const protobuf ModemTransmission amp message gt goby acomms ModemDriverBase signal_receive Called when a binary data transmission is received from the modem You should connect one or more slots a function or member function to this signal to receive incoming messages Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 30 goby acomms QueueException Class Reference 156 ModemDataTransmission is defined in acomms_modem_message proto Examples acomms modemdriver driver_simple driver_simple cpp Definition at line 82 of file driver_base h 17 29 3 6 boost signals2 signal lt void const protobuf ModemTransmission amp message gt gob
256. simple dev tty_of_modem_A 1 ABCDriver gt driver_simple dev tty_of_modem_B 2 ABCDriver Also see abc_modem_simulator cpp include goby acomms modem_driver h include goby util binary h include goby common logger h include goby acomms connect h include lt iostream gt using goby acomms operator lt lt void handle_data_receive const goby acomms protobuf ModemTransmission amp data_msg Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 5 acomms modemdriver driver_simple driver_simple cpp 194 int main int argc charx argv if arge lt 3 std cout lt lt usage driver_simple dev tty_of_modem modem_id type MMDriver default ABCDriver lt lt std endl return 1 1 Create and initialize the driver we want goby acomms ModemDriverBase driver 0 goby acomms protobuf DriverConfig cfg set the serial port given on the command line cfg set_serial_port argv 1 using google protobuf uint32 set the source id of this modem uint32 our_id goby util as lt uint32 gt argv 2 cfg set_modem_id our_id goby glog set_name argv 0 goby glog add_stream goby common logger DEBUG2 std clog if argc 4 1 if boost iequals argv 3 ABCDriver std cout lt lt Starting Example driver ABCDriver lt lt std endl driver new goby acomms ABCDriver default to WHOI MicroModem
257. smission amp const google protobuf Message amp void monitor_mac const goby acomms protobuf ModemTransmission amp mac_msg std ofstream fout_ goby acomms DCCLCodec dccl_ goby acomms DCCLCodec get goby acomms QueueManager q_manager_ goby acomms MMDriver mm_driver_ goby acomms MACManager mac_ ChatCurses curses_ int my_id_ int buddy_id_ int main int argc char argv fe Deal with command line parameters if arge 5 return startup_failure std string serial_port argv 1 try my_id_ boost lexical_cast lt int gt argv 2 buddy_id_ boost lexical_cast lt int gt argv 3 catch boost bad_lexical_cast amp std cerr lt lt bad value for my_id lt lt argv 2 messages will be queued lt lt or buddy_id lt lt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 19 2 acomms chat chat cpp 189 argv 3 lt lt these must be unsigned integers lt lt std endl return startup_failure std string log_file argv 4 fout_ open log_file c_str if fout_ is_open std cerr lt lt bad value for log_file lt lt log_file lt lt std endl return startup_failure j tf Initialize logging goby glog add_stream goby common logger DEBUG1 fout_ goby glog set_name argv 0 bind the signals of these libraries bind mm_driver_ q_manag
258. smission micromodem protobuf remus_lbl with the latter taking priority on fields that a set in both objects GRP 1 CHANNEL modem ID 4 1 use four consecutive modem IDs if you need multiple vehicles pinging SF 0 STO 0 Timeout micromodem protobuf REMUSLBL Params lbl_max_range m 2 1500 m s 1000 ms s micromodem protobuf REMUSLBLParams turnaround_ms goby acomms protobuf ModemRangingRequest enable_beacons is a set of four bit flags where the least significant bit is AF enable most significant bit is DF enable Thus b1111 OxOF enables all beacons AF micromodem protobuf REMUSLBLParams enable_beacons gt gt 0 4 1 BF micromodem protobuf REMUSLBLParames enable_beacons gt gt 1 8 1 CF micromodem protobuf REMUSLBLParams enable_beacons gt gt 2 amp 1 DF micromodem protobuf REMUSLBLParams enable_beacons gt gt 3 amp 1 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 44 CCPNT protobuf MICROMODEM_NARROWBAND_LBL_RA NGING goby acomms protobuf ModemTransmission type micromodem protobuf NarrowBandLBLParams type used to determine the parameters of the LBL ping The object provided with configuration micromodem protobuf Config narrowband_lbl is merged with the object provided with the ModemTransmission micromodem protobuf narrowband_lbl with the latter taking prior
259. ssage BytesMsg option dccl msg id 10 option dccl msg max_bytes 32 required bytes req bytes 1 dccl field max_length 8 optional bytes opt_bytes 2 dccl field max_length 8 See Also dccl7 test cpp Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 5 Example messages 22 3 5 9 DCCL Test8 dccl8 test proto import goby acomms protobuf dccl_option_extensions proto import goby test acomms dccl3 header proto message GobyMessagel option dccl msg id 4 option dccl msg max_bytes 32 optional int32 int32_val 1 dccl field min 0 dccl field max 20 message GobyMessage2 option dccl msg id 5 option dccl msg max_bytes 32 optional bool bool_val 1 message GobyMessage3 option dccl msg id 6 option dccl msg max_bytes 32 optional string string_val 1 dccl field max_length 10 See Also dccl8 test cpp 3 5 10 DCCL Test9 dccl9 test proto import goby acomms protobuf dccl_option_extensions proto message MiniUser option dccl msg id 1000001 option dccl msg max_bytes 2 required uint32 user 1 dccl field min 0 dccl field max 0x03FF dcecl field in_head true message MiniOWTT option dccl msg id 1000002 option dccl msg max_bytes 2 required uint32 clock_mode 1 dccl field min 0 dccl field max 3 dccl field in_head true required uint32 tod 2 dccl field m
260. ssion frame_size lt 3 s src 1 gt dest 2 requested data A signal_transmit_result WHOI Micro Modem Firmware CCCYC CACYC N l l l l l l l l type ACK signal_receive 5 l l l gt CATXD 2x Seas 3 SSS ail CADRQ gt CATXD a CATXP o M PsK cv CATXF Se Soe oes eS eS Se 1 CAXST A A A l CAACK 3x PSKMIN o ad le CACST sal Key Always present rec Often present typ Occasionally present advan Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 48 Application or other WHOI Mic ModemTransmission by Modules modemdriver1 A src 1 type MICROMODEM_NARROWBAND_LBL_RANGING micromodem protobuf narrowband_lbl transmit_freq 26000 transmit_ping_ms 5 receive_freq 25000 receive_ping_ms 5 turnaround_ms 20 transmit_flag true Ibl_max_range 1000 ModemTransmission src 1 time 1316033104000000 time_source MODEM_TIME type MICROMODEM_NARROWBAND_LBL_RANGING micromodem protobuf ranging_reply one_way_travel_time 0 9216 one_way_travel_time 0 5920 one_way_travel_time nan one_way_travel_time nan Goby Modules T initiate_transmission l signal_modify _ transmission S i 1 modified transmission sos ona ee re i CCCFG TAT if needec
261. st any containing the value to set The type is usually the type required by google protobuf Reflection Set lt i gt Type where Type is the corresponding google protobuf FieldDescriptor CppType See http code google com apis protocolbuffers docs reference cpp google protobuf message html Reflection Definition at line 205 of file protobuf_cpp_type_helpers h The documentation for this class was generated from the following file goby acomms dccl protobuf_cpp_type_helpers h 17 25 goby acomms FromProtoCustomMessage lt CustomMessage gt Class Template Reference Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using a specific statically generated Protobuf class include lt goby acomms dccl protobuf_cpp_type_helpers h gt Inheritance diagram for goby acomms FromProtoCustomMessage lt CustomMessage gt goby acomms FromProtoCpp goby acomms FromProtoCpp Type lt google protobuf goby acomms FromProtoCustom TypeBase FieldDescriptor CPPTYPE Message lt CustomMessage gt _MESSAGE gt Public Types typedef CustomMessage type Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 26 goby acomms FromProtoTypeBase Class Reference 147 Additional Inherited Members 17 25 1 Detailed Description template lt typename CustomMessage gt class goby acomms FromProtoCustomMessage lt CustomMessage gt Implements FromProtoCppTypeBase for CPPTYPE_MESSAGE using a spe
262. t lt o 62 oka ar a a RA A 185 18 1 2 FUNCION DeGuInentallOn ps c i cei see eee a a por a Be El ROE ae ae a dew E 185 19 Example Documentation 185 19 1 acomms amac amac_simple amac_simple cpp 2 0 ee e o 186 192 ACAMINMSENADONALOND o o c es e A A AA E A 187 19 3 acomms dccl dccl_simple dccl_SsimMple Cpp lt lt lt o o 2 em 190 19 4 acomms dccl two_message two_message cpp 2 a a a 191 19 5 acomms modemdriver driver_simple driver_simple cop 0 e eee 192 19 6 acomms queue queue_simple queue_simple cop o e ee 194 1 Goby Underwater Autonomy Project The Goby Underwater Autonomy Project aims to create a unified framework for multiple scientific autonomous ma rine vehicle collaboration seamlessly incorporating acoustic ethernet wifi and serial communications Presently the main thrust of the project is developing a set of robust acoustic networking libraries The Goby libraries are licensed under the GNU Lesser General Public License v3 http www gnu org licenses lgpl html and the applications are licensed under the GNU General Public License v3 http www gnu org licenses gpl html 1 1 1 2 Resources Home page code bug tracking and answers https launchpad net goby User Manual pdf Developers Manual html pdf Wiki http gobysoft com wiki Developer manual goby acomms An overview of Acoustic Communications Libr
263. t following this manipulator is cyan e g std cout lt lt cyan lt lt text e std ostream It_cyan std ostream amp os All text following this manipulator is light cyan e g std cout lt lt It_cyan lt lt text e std ostream white std ostream amp os All text following this manipulator is white e g std cout lt lt white lt lt text e std ostream amp It_white std ostream amp os All text following this manipulator is bright white e g std cout lt lt It_white lt lt text e std ostream amp nocolor std ostream amp os All text following this manipulator is uncolored e g std cout lt lt green lt lt green lt lt nocolor lt lt uncolored 16 4 1 Detailed Description Contains functions for adding color to Terminal window streams 16 4 2 Function Documentation 16 4 2 1 std ostream goby common tcolor add_escape_code std ostream amp os const std string amp esc_code Append the given escape code to the stream os Parameters os ostream to append to esc_code escape code to append e g 33 31m Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 5 goby pb Namespace Reference 90 Definition at line 29 of file term_color cpp 16 5 goby pb Namespace Reference Contains objects relating to the core publish subscribe architecture provided by Goby Classes e class Application Base class pr
264. t_id_codec const std string amp identifier Sets the DCCL id codec currently in use void reset_id_codec Resets the DCCL id codec currently in use to the default const std set lt unsigned gt amp skip_crypto_ids Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 4 goby acomms DCCLCodec Class Reference 99 Static Public Member Functions static DCCLCodec get DCCLCodec is a singleton class use this to get a pointer to the class Static Public Attributes e static const std string DEFAULT_CODEC_NAME Friends e template lt typename T gt void boost checked_delete T Informational Methods Provides various forms of information about the DCCLCodec e static const std string glog_encode_group The group name for goby glog that all encoding related messages are written static const std string amp glog_decode_group The group name for goby glog that all decoding related messages are written template lt typename ProtobufMessage gt void info std ostream x os const Writes a human readable summary including field sizes of the provided DCCL type to the stream provided void info_all std ostream os const Writes a human readable summary including field sizes of all the loaded validated DCCL types template lt typename ProtobufMessage gt unsigned id const Gives the DCCL id defined by the custom message option extension goby msg dccl id in the p
265. ted 121 field_info 122 field_max_size 122 field_min_size 122 field_post_decode 122 field_post_decode_repeated 122 field_pre_encode 123 field_pre_encode_repeated 123 field_size 123 field_size_repeated 123 field_type 124 field_validate 124 info 124 max_size 124 min_size 124 require 125 this_descriptor 125 this_field 125 wire_type 125 goby acomms DCCLFieldCodecManager 126 add 127 find 127 goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt 128 goby acomms DCCLRepeatedTypedFieldCodec decode 132 encode 132 133 max_size 133 min_size 133 size 133 134 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt 130 goby acomms DCCLStaticCodec lt T gt 134 goby acomms DCCLTimeCodec lt TimeType gt 135 goby acomms DCCLTypeHelper 141 goby acomms DCCLTypedFieldCodec decode 138 encode 138 size 139 goby acomms DCCLTypedFieldCodec lt FieldType gt 137 goby acomms DCCLTypedFixedFieldCodec lt Type FieldType gt 140 goby acomms FromProtoCppTypeBase 143 add_value 144 get_repeated_value 144 get_value 144 set_value 145 goby acomms FromProtoCustomMessage lt Custom Message gt 145 WireType Wire goby acomms FromProtoTypeBase 146 goby acomms MACManager 146 signal_initiate_transmission 148 startup 148 goby acomms MMDriver 148 startup 150 goby acomms ModemDriverBase 150 do_work 152 handle_initiate_transmission 1
266. ted on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 39 CAMSG Used only to detect BAD_CRC frames CAMSG BAD_CRC in extension micromodem protobuf frame_with_bad_crc micromodem protobuf frame_with_bad_crc n Frame with BAD CRC assumed next frame after last good frame n is an integer 0 1 2 indicating the nth reported BAD_CRC frame for this packet not the frame number CAACK goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission src SRC goby acomms protobuf ModemTransmission dest DEST first CAACK for a given packet goby acomms protobuf ModemTransmission acked_frame 0 Frame 1 Goby starts counting at frame 0 WHO starts with frame 1 second CAACK for a given packet goby acomms protobuf ModemTransmission acked_frame 1 Frame 1 third CAACK for a given packet goby acomms protobuf ModemTransmission acked_frame 2 Frame 1 CAMUA goby acomms protobuf ModemTransmission type goby acomms protobuf ModemTransmission MI CROMODEM_MINI_DATA goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission src SRC goby acomms protobuf ModemTransmission dest DEST goby acomms protobuf ModemTransmission frame 0 goby util nex_decode HHHH CAM
267. terface h 22 goby common pubsub_node wrapper h 22 goby common time h 22 goby common zeromq_application_base h 2 goby common zeromq_service h 22 goby common logger flex_ncurses h 22 goby common logger flex_ostream h 22 goby common logger flex_ostreambuf h 22 goby common logger logger_manipulators h 22 goby common logger term_color h 22 goby common protobuf app_base_config pb h 22 goby common protobuf app_base_config proto 2 goby common protobuf liaison_config pb h 22 22 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 14 1 File List 71 goby common protobuf logger pb h 22 goby common protobuf logger proto 2 goby common protobuf option_extensions pb h 22 goby common protobuf option_extensions proto 22 goby common protobuf pubsub_node_config pb h 22 goby common protobuf pubsub_node_config proto 2 goby common protobuf zero_mq_node_config pb h 22 goby common protobuf zero_mq_node_config proto 2 goby moos dynamic_moos_vars h 22 goby moos goby_moos_app h 22 goby moos liaison_commander h 22 goby moos liaison_geodesy h 22 goby moos liaison_scope h 22 goby moos modem_id_convert h 22 goby moos moos_bluefin_driver h 22 goby moos moos_geodesy h 22 goby moos moos_header h 22 goby moos moos_liaison_load h 22 goby moos moos_node h 22 goby moos moos_protobuf_helpers h Helpers for MOOS applications for serializing and parsed Google Protocol buffers messages 184 goby moos moos serializer h 22 goby moos moos_string h 22 goby moos
268. the base message e void base_size unsigned xbit_size const google protobuf Message amp msg MessageHandler Message Part part Calculate the size in bits of a part of the base message when it is encoded e void base_decode Bitset bits google protobuf Message msg MessageHandler MessagePart part Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 117 Decode part of a message void base_max_size unsigned xbit_size const google protobuf Descriptor desc MessageHandler MessagePart part Calculate the maximum size of a message given its Descriptor alone no data void base_min_size unsigned xbit_size const google protobuf Descriptor desc MessageHandler MessagePart part Calculate the minimum size of a message given its Descriptor alone no data void base_validate const google protobuf Descriptor desc MessageHandler MessagePart part Validate this part of the message to make sure all required extensions are set void base_info std ostream xos const google protobuf Descriptor desc MessageHandler Message Part part Get human readable information size of fields etc about this part of the DCCL message Field functions primitive types and embedded messages void field_pre_encode boost any wire_value const boost any amp field_value Pre encodes a non repeated i e optional or required field by converting the FieldType rep
269. the field is empty i e was encoded using the zero argument encode throw DCCLNullValue Exception to indicate this Parameters bits Bits to use for decoding Returns the decoded value Implements goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Definition at line 241 of file dccl_field_codec_typed h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 17 goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt Class Template Reference 134 17 17 2 2 template lt typename WireType typename FieldType WireType gt virtual Bitset goby acomms DCCLRepeatedTypedFieldCodec lt WireType FieldType gt encode inline virtual Encode an empty field Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt Wire Type Field Type gt Definition at line 227 of file dccl_field_codec_typed h 17 17 2 3 template lt typename WireType typename FieldType WireType gt virtual Bitset goby acomms DCCL RepeatedTypedFieldCodec lt WireType FieldType gt encode const WireType amp wire_value inline virtual Encode a non empty field Parameters wire_value Value to encode Returns Bits represented the encoded field Implements goby acomms DCCLTypedFieldCodec lt WireType Field Type gt Definition at line 234 of file decl_field_codec_typed h 17 17 2 4 template lt typename WireType
270. them include lt goby acomms dccl dccl_field_codec_typed h gt Inheritance diagram for goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt Wirelype FieldType Enable gt Additional Inherited Members 17 15 1 Detailed Description template lt typename WireType typename FieldType class Enable void gt class goby acomms DCCLFieldCodecSelector lt Wire Type FieldType Enable gt if WireType FieldType we don t have to add any more virtual methods for converting between them Definition at line 37 of file dccl_field_codec_typed h The documentation for this class was generated from the following file goby acomms dccl dccl_field_codec_typed h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 16 goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt Class Template Reference 130 17 16 goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt type gt Class Template Reference If WireType FieldType adds some more pure virtual methods to handle the type conversions pre_encode and post_decode If WireType FieldType this class is not inherited and this pure virtual methods do not exist and thus can be omitted
271. this class was generated from the following files goby acomms amac mac_manager h src acomms amac mac_manager cpp 17 28 goby acomms MMDriver Class Reference provides an API to the WHOI Micro Modem driver include lt goby acomms modem_driver h gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 28 goby acomms MMDriver Class Reference 150 Inheritance diagram for goby acomms MMDriver goby acomms ModemDriverBase goby acomms MMDriver Public Member Functions e MMDriver Default constructor e MMDriver Destructor e void startup const protobuf DriverConfig amp cfg Starts the driver e void shutdown Stops the driver e void do_work See ModemDriverBase do_work e void handle_initiate_transmission const protobuf ModemTransmission amp m See ModemDriverBase handle_initiate_transmission int clk_mode Current clock mode of the modem necessary for synchronous navigation e bool is_started const e void set_silent bool silent Static Public Member Functions e static unsigned packet_frame_count int rate e static unsigned packet_size int rate Additional Inherited Members 17 28 1 Detailed Description provides an API to the WHOI Micro Modem driver Examples acomms chat chat cpp and acomms modemdriver driver_simple driver_simple cpp Definition at line 42 of file mm_driver h Generated on Wed Mar 26 2014 01 41 49 for Goby
272. tion 1 size 5 bit s required int32 goto_x 3 size 14 bit s required int32 goto_y 4 size 14 bit s required bool lights_on 5 size 1 bit s required string new_instructions 6 user head 0 body 131 padding 5 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 3 2 DCCL Protobuf Options 13 min size 8 bit s max size 88 bit s required double goto_speed 7 size 9 bit s min size 51 bit s max size 131 bit s End Body End GoToCommand Begin VehicleStatus Actual maximum size of message 6 bytes 48 bits dccl id head Allowed maximum size of message 32 bytes 256 bits Begin Header End Header Begin Body VehicleStatus required double nav_x 1 size 17 bit s required double nav_y 2 size 17 bit s required VehicleStatus HealthEnum health 3 Size 2 bit s size 36 bit s End Body End VehicleStatus End DCCLCodec 8 user head 0 body 36 padding Besides validity checking the most useful feature of anal yze_dccl is the calculation of the size in bits of each message variable This lets you see which fields in the message are too big To make fields smaller tighten up bounds 3 2 DCCL Protobuf Options This section gives an overview of the DCCL message and field options available for use with DCCL and the default field codecs The full list is available in option
273. tobuf Message Definition at line 76 of file queue_manager h 17 31 2 2 void goby acomms QueueManager flush_queue const protobuf QueueFlush amp flush Flush delete all messages in a queue Parameters flush QueueFlush object containing details about queue to flush Definition at line 159 of file queue_manager cpp 17 31 2 3 void goby acomms QueueManager handle_modem_data_request protobuf ModemTransmission x msg Finds data to send to the modem Data from the highest priority queue s will be combined to form a message equal or less than the size requested in ModemMessage message_in If using one of the classes inheriting ModemDriverBase this method should be connected to ModemDriverBase signal_data_request Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 31 goby acomms QueueManager Class Reference 160 Parameters msg The ModemTransmission containing information about the data request and is the place where the request data will be stored in the repeated field ModemTransmission frame Returns true if successful in finding data to sena false if no data is available Examples acomms queue queue_simple queue_simple cpp Definition at line 213 of file queue_manager cpp 17 31 2 4 void goby acomms QueueManager handle_modem_receive const protobuf ModemTransmission amp message Receive incoming data from the modem If usin
274. tor is red e g std cout lt lt red lt lt text e std ostream amp It_red std ostream amp os All text following this manipulator is light red e g std cout lt lt It_red lt lt text e std ostream green std ostream amp os All text following this manipulator is green e g std cout lt lt green lt lt text e std ostream amp It_green std ostream amp os All text following this manipulator is light green e g std cout lt lt It_green lt lt text e std ostream yellow std ostream amp os All text following this manipulator is yellow e g std cout lt lt yellow lt lt text e std ostream amp It_yellow std ostream amp os All text following this manipulator is light yellow e g std cout lt lt It_yellow lt lt text e std ostream blue std ostream amp os All text following this manipulator is blue e g std cout lt lt blue lt lt text e std ostream amp It_blue std ostream amp os All text following this manipulator is light blue e g std cout lt lt It_blue lt lt text e std ostream amp magenta std ostream amp os All text following this manipulator is magenta e g std cout lt lt magenta lt lt text e std ostream It_magenta std ostream amp os All text following this manipulator is light magenta e g std cout lt lt It_magenta lt lt text e std ostream cyan std ostream 805 All tex
275. ts boost any x field_value const google protobuf FieldDescriptor x field Decode a non repeated field Parameters bits Bits to decode Used bits are consumed erased from the least significant end field_value Location to store decoded value FieldType field Protobuf descriptor to the field Set to 0 for base message Definition at line 141 of file dccl_field_codec cpp 17 13 2 15 void goby acomms DCCLFieldCodecBase field_decode_repeated Bitset x bits std vector lt boost any gt x field_values const google protobuf FieldDescriptor x field Decode a repeated field Parameters bits Bits to decode Used bits are consumed erased from the least significant end field_values Location to store decoded values FieldType field Protobuf descriptor to the field Set to 0 for base message Definition at line 172 of file dccl_field_codec cpp 17 13 2 16 void goby acomms DCCLFieldCodecBase field_encode Bitset bits const boost any field_value const google protobuf FieldDescriptor x field Encode a non repeated field Parameters bits Pointer to bitset to store encoded bits Bits are added to the most significant end of bits field_value Value to encode FieldType field Protobuf descriptor to the field to encode Set to 0 for base message Definition at line 59 of file dccl_field_codec cpp 17 13 2 17 void go
276. ty Libraries 52 section logging Logging Because Goby is designed first and foremost as an engineering testbed and scientific research architecture cc The link acomms_api goby acomms endlink API classes all have a constructor which can take a pointer to std c goby acomms DCCLCodec dccl amp std cout In which case you get output to std cout aka the terminal window that looks like 2011 Mar 01 04 06 35 169817 dccl_enc cryptography enabled with given passphrase 2011 Mar 01 04 06 35 170610 dcecl_enc starting encode for TEST 2011 Mar 01 04 06 35 170683 dccl_enc B bool true The timestamp in Universal Coordinated Time is given with a group name dccl_enc DCCL Encoder and finally the message These groups are provided by using the manipulator group Text in the stream is a member of the given group until the next flush std endl or std flush For example prints 2011 Mar 01 04 06 35 169817 my_group my message std cout lt lt group my_group lt lt my message lt lt std endl endl flushes my_group Several other manipulators are provided e debug indicates that the buffer output is insignificant except for debugging not useful for normal runtime e warn prints the buffer until the next flush as a warning e die is a fatal warning that calls exit with a non zero code indicating a fatal error die should be used very sparingly subsection flexostream Config
277. type FieldType gt 128 goby acomms DCCLTypedFieldCodec lt Model value_type FieldType gt 137 goby acomms DCCLRepeatedTypedFieldCodec lt Model value_type FieldType gt 130 goby acomms DCCLFieldCodecSelector lt protobuf CCLMDATState GFIPitchOil protobuf CCLMDATState GFIPitchOil gt 128 goby acomms DCCLTypedFieldCodec lt protobuf CCLMDATState GFIPitchOil protobuf CCLMDATState GFIPitchOil gt 137 goby acomms DCCLTypedFixedFieldCodec lt protobuf CCLMDATState GFIPitchOil gt 140 goby acomms DCCLFieldCodecSelector lt sid string std string gt 128 goby acomms DCCLTypedFieldCodec lt std string gt 137 goby acomms DCCLDefaultBytesCodec 105 goby acomms DCCLDefaultStringCodec 113 goby acomms DCCLFieldCodecSelector lt T T gt 128 goby acomms DCCLTypedFieldCodec lt T T gt 137 goby acomms DCCLTypedFixedFieldCodec lt T gt 140 goby acomms DCCLStaticCodec lt T gt 134 goby acomms DCCLFieldCodecSelector lt uint32 uint32 gt 128 goby acomms DCCLTypedFieldCodec lt uint32 gt 137 goby acomms DCCLDefaultidentifierCodec 107 goby acomms DCCLTypedFieldCodec lt uint32 uint32 gt 137 goby acomms DCCLTypedFixedFieldCodec lt uint32 uint32 gt 140 goby acomms DCCLDefaultNumericFieldCodec lt uint32 gt 111 goby acomms DCCLFieldCodecSelector lt uint64 uint64 gt 128 goby acomms DCCLTypedFieldCodec lt uint64 uint64 gt 137 goby acomms DCCLTypedFixedFieldCodec lt u
278. types used in DCCL enum POWER2_BITS_IN_BYTE 3 enum POWER2_NIBS_IN_BYTE 1 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 6 goby transitional Namespace Reference 91 e enum DCCLHeaderPart HEAD_CCL_ID 0 HEAD_DCCL_ID 1 HEAD_TIME 2 HEAD _SRC_ID 3 HEAD_DEST_ID 4 HEAD_MULTIMESSAGE_FLAG 5 HEAD_BROADCAST_FLAG 6 HEAD_UN USED 7 enum DCCLHeaderBits HEAD_CCL_ID_SIZE 8 HEAD_DCCL_ID_SIZE 9 HEAD_TIME_SIZE 17 HEAD_SRC_ID_SIZE 5 HEAD_DEST_ID_SIZE 5 HEAD_FLAG_SIZE 1 HEAD UNUSED SIZE 2 Functions unsigned bits2bytes unsigned bits unsigned bytes2bits unsigned bytes unsigned bytes2nibs unsigned bytes unsigned nibs2bytes unsigned nibs std string type_to_string DCCLType type std string type_to_protobuf_type DCCL Type type std string type_to_string DCCLCppType type std string to_str DCCLHeaderPart p template lt typename Value gt std ostream amp operator lt lt std ostream amp out const std map lt std string Value gt amp m use this for displaying a human readable version template lt typename Value gt std ostream 8 operator lt lt std ostream amp out const std multimap lt std string Value gt amp m std ostream 8 operator lt lt std ostream amp out const std set lt unsigned gt s use this for displaying a human readable version of this STL object e std ostream amp operator lt lt std ostream
279. ude lt goby acomms dccl dccl_field_codec_fixed h gt Inheritance diagram for goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt goby acomms DCCLFieldCodecBase goby acomms DCCLFieldCodec Selector lt Wire Type FieldType gt goby acomms DCCLlypedField Codec lt WireType Field Type gt goby acomms DCCLlypedFixed FieldCodec lt WireType FieldType gt goby acomms DCCLDefault NumericFieldCodec lt WireType Field Type gt Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 22 goby acomms DCCLTypeHelper Class Reference 142 Protected Member Functions e virtual unsigned size 0 The size of the encoded message in bits Use DCCLTypedFieldCodec if the size depends on the data Additional Inherited Members 17 21 1 Detailed Description template lt typename WireType typename FieldType WireType gt class goby acomms DCCLTypedFixedFieldCodec lt WireType FieldType gt Base class for static typed field encoders decoders that use a fixed number of bits on the wire regardless of the value of the field Use DCCLTypedFieldCodec if your encoder is variable length See DCCLTypedFieldCodec for an explanation of the template parameters FieldType and WireType Implements DCCLTypedFieldCodec size const FieldType amp field_value DCCLTypedFieldCodec max_size and D CCLTypedFieldCodec min_size and provides a virtual zero argument function for size Definition at line 3
280. ue Modem Slots These methods are the interface to the QueueManager from the modem driver void handle_modem_data_request protobuf ModemTransmission msg Finds data to send to the modem e void handle_modem_receive const protobuf ModemTransmission amp message Receive incoming data from the modem Control Call these methods when you want the QueueManager to perform time sensitive tasks such as expiring old messages e void do_work Calculates which messages have expired and emits the goby acomms QueueManager signal_expire as neces sary Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 31 goby acomms QueueManager Class Reference 158 Informational Methods void info_all std ostream os const Writes a human readable summary including DCCLCodec info of all loaded queues template lt typename ProtobufMessage gt void info std ostream 0s const Writes a human readable summary including DCCLCodec info of the queue for the provided DCCL type to the stream provided void info const google protobuf Descriptor desc std ostream os const An alterative form for getting information for Queues for message types not known at compile time dynamic const std string glog_push_group e const std string amp glog_pop_group e const std string amp glog_priority_group const std string glog_out_group e const std string glog_in_group std string
281. ueManager 27 4 3 Interacting with the QueueManager 4 3 1 Instantiate and configure The goby acomms QueueManager is configured similarly to the goby acomms DCCLCodec You need to set a unique identification number for this platform the modem ID through the goby acomms protobuf Queue ManagerContfig You can configure queues by added repeated fields to the QueueManagerConfig s message_entry field or by calling goby acomms QueueManager add_queue directly When using goby acomms QueueManager you will not likely need to use the goby acomms DCCLCodec directly much at all All messages are pushed to the queues unencoded and are encoded automatically by goby acomms QueueManager before sending Likewise all messages received are decoded before being provided on the signal goby acomms QueueManager signal_receive For example this code configures the QueueManager with a single queue DCCL type GobyMessage goby acomms protobuf QueueManagerConfig cfg cfg set_modem_id our_id goby acomms protobuf QueuedMessageEntryx q_entry cfg add_message_entry q_entry gt set_protobuf_name GobyMessage q_entry gt set_newest_first true goby acomms protobuf QueuedMessageEntry Rolex dest_role q_entry gt add_role O dest_role gt set_type goby acomms protobuf QueuedMessageEntry DESTINATION_ID dest_role gt set_field header dest_platform goby acomms protobuf Que
282. uedMessageEntry Rolex time_role q_entry gt add_role O time_role gt set_type goby acomms protobuf QueuedMessageEntry TIMESTAMP time_role gt set_field header time goby acomms protobuf QueuedMessageEntry Role src_role q_entry gt add_role di src_role gt set_type goby acomms protobuf QueuedMessageEntry SOURCE_ID src_role gt set_field header source_platform q_manager set_cfg cfg 4 3 2 Signals and application layer slots Then you need to do a few more initialization chores Connect using goby acomms connect QueueManager signals to your application layer slots functions or member functions that match the signal s signature You do not need to connect a slot to a given signal if you do not need its functionality See Signal Slot model for asynchronous events for more on using signals and slots Received and decoded DCCL data goby acomms QueueManager signal_receive Received acknowledgements goby acomms QueueManager signal_ack Expired messages ttl exceeded goby acomms QueueManager signal_ expire Additional advanced features Connect a slot to learn every time a queue size changes due to a new message being pushed or a message being sent goby acomms QueueManager signal_queue_size_change Request that a queue be on_demand that is request data from the application layer every time the modem layer requests data DCCL messages only This
283. uf EnumDescriptor x GobyFieldOptions_ConfigurationOptions_ConfigAction_descriptor 0 const std string amp GobyFieldOptions_ConfigurationOptions_ConfigAction_Name GobyFieldOptions_ ConfigurationOptions_ConfigAction value bool GobyFieldOptions_ConfigurationOptions_ConfigAction_Parse const std string amp name Goby FieldOptions_ConfigurationOptions_ConfigAction value std string version_message Variables const GobyFieldOptions_ConfigurationOptions_ConfigAction GobyFieldOptions_ConfigurationOptions_ ConfigAction_ConfigAction_MIN GobyFieldOptions_ConfigurationOptions_ConfigAction_ALWAYS const GobyFieldOptions_ConfigurationOptions_ConfigAction GobyFieldOptions_ConfigurationOptions_ ConfigAction_ConfigAction_MAX GobyFieldOptions_ConfigurationOptions_ConfigAction_ADVANCED const int GobyFieldOptions_ConfigurationOptions_ConfigAction_ConfigAction_ARRAYSIZE Goby FieldOptions_ConfigurationOptions_ConfigAction_ConfigAction_MAX 1 e extern google protobuf internal Extensionldentifier lt google protobuf FieldOptions google protobuf internal MessageTypeTraits lt goby GobyFieldOptions gt 11 false gt field e extern google protobuf internal Extensionldentifier lt google protobuf MessageOptions google protobuf internal Message Type Traits lt goby GobyMessageOptions gt 11 false gt msg Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 2 goby acomms Nam
284. unction Documentation 17 35 2 1 void goby common FlexOstream add_group const std string amp name Colors Color color Colors nocolor const std string description Add another group to the logger A group provides related manipulator for categorizing log messages For thread safe use use boost scoped_lock on Logger mutex Definition at line 44 of file flex_ostream cpp The documentation for this class was generated from the following files goby common logger flex_ostream h src common logger flex_ostream cpp 17 36 goby common FlexOStreamBuf Class Reference Class derived from std stringbuf that allows us to insert things before the stream and control output This is the string buffer used by goby common FlexOstream for the Goby Logger glogger include lt goby common logger flex_ostreambuf h gt Inherits streambuf Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 37 goby common TermColor Class Reference 166 Public Member Functions e int sync virtual inherited from std streambuf Called when std endl or sta flush is inserted into the stream e int overflow int c EOF virtual inherited from std streambuf Called when something is inserted into the stream e void name const std string amp s name of the application being served e void add_stream logger Verbosity verbosity std ostream os add a stream to the logger bool is_quiet do all attached streams have
285. unication ethernet serial time scien tific string manipulation etc Namespaces e namespace tcolor Contains functions for adding color to Terminal window streams Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 16 3 goby common Namespace Reference 87 Classes e class ConfigException indicates a problem with the runtime command line or cfg file configuration or help was given e class FlexNCurses Enables the Verbosity gui mode of the Goby logger and displays an NCurses gui for the logger content e class FlexOstream Forms the basis of the Goby logger std ostream derived class for holding the FlexOStreamBuf class FlexOStreamBuf Class derived from std stringbuf that allows us to insert things before the stream and control output This is the string buffer used by goby common FlexOstream for the Goby Logger glogger e struct Colors Represents the eight available terminal colors and bold variants e class TermColor Converts between string escape code and enumeration representations of the terminal colors Enumerations enum MarshallingScheme MARSHALLING_UNKNOWN 0 MARSHALLING_CSTR 1 MARSHALLING_PROTOBUF 2 MARS HALLING_CCL 3 MARSHALLING_MOOS 4 MARSHALLING_DCCL 5 MARSHALLING_LCM 6 MARSHALLING_M AX 6 enum LIAISON_INTERNAL_PUBLISH_SOCKET 1 LIAISON_INTERNAL_SUBSCRIBE_SOCKET 2 Functions e Wt WApplication x create_wt_application const Wt WEnviron
286. urable extension of std ostream liblogger goby util FlexOstream extends std ostream to provide a number of extra logging features This is generally e Often it is desirable to log simultaneously to a text file std ofstream and the terminal window std cout goby util FlexOstream allows you to attach any number of streams to it which are all written to with a single call to operator lt lt on the goby util FlexOstream object e Color support for ANSI terminals std cout and std cerr stream objects only Multiple verbosity settings for each attached stream QUIET display nothing to this stream WARN display only warnings VERBOSE display warnings and normal text but not debug text DEBUG display warnings normal text and debug messages GUI display all messages in an NCurses terminal GUI window splitting groups into different displays e Optional thread safe access using a simple lock unlock syntax The best way to get used to goby util glogger is to compile and play with the flexostream_simple cpp example A handful of examples Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 7 goby util Overview of Utility Libraries 53 Figure 11 Graphical user interface logger mode toby terisa Example of the goby util glogger output at different verbosity settings to the terminal window flexostream_simple gui toby terisa Search Te uped messages Figure 12 Example
287. used in the encoded DCCL message representation into the FieldType representation the Google Protobuf representation This allows for type converting codecs void field_post_decode_repeated const std vector lt boost any gt amp wire_values std vector lt boost any gt xfield_values Post decodes a repeated field void field_max_size unsigned xbit_size const google protobuf FieldDescriptor field Calculate the upper bound on this field s size in bits void field_min_size unsigned bit_size const google protobuf FieldDescriptor field Calculate the lower bound on this field s size in bits void field_validate bool b const google protobuf FieldDescriptor field Validate this field checking that all required option extensions are set e g goby field dccl max and goby field dccl min for arithmetic codecs void field_info std ostream xos const google protobuf FieldDescriptor xfield Write human readable information about the field and its bounds to the provided stream Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 13 goby acomms DCCLFieldCodecBase Class Reference 118 Protected Member Functions dccl DCCLFieldOptions dccl_field_options const Get the DCCL field option extension value for the current field void require bool b const std string description Essentially an assertion to be used in the validate virtual method virtual void any_encode Bitset bits const boost
288. uses DCCLDefaultNumericFieldCodec to encode the integer 106 goby acomms DCCLDefaultldentifierCodec Provides the default 1 byte or 2 byte DCCL ID codec 107 goby acomms DCCLDefaultMessageCodec Provides the default codec for encoding a base Google Protobuf message or an embedded message by calling the appropriate field codecs for every field 110 goby acomms DCCLDefaultNumericFieldCodec lt WireType FieldType gt Provides a basic bounded arbitrary length numeric double float uint32 uint64 int32 int64 encoder 111 goby acomms DCCLDefaultStringCodec Provides an variable length ASCII string encoder Can encode strings up to 255 bytes by using a length byte preceeding the string 113 goby acomms DCCLException Exception class for libdccl 114 Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 13 1 Class List 65 goby acomms DCCLFieldCodecBase Provides a base class for defining DCCL field encoders decoders Most users will use the DCCLTypedFieldCodec or its children e g DCCLTypedFixedFieldCodec instead of directly inheriting from this class 114 goby acomms DCCLFieldCodecManager 126 goby acomms DCCLFieldCodecSelector lt WireType FieldType Enable gt If WireType FieldType we don t have to add any more virtual methods for converting be tween them 128 goby acomms DCCLFieldCodecSelector lt WireType FieldType typename boost disable_if lt boost is_same lt WireType FieldType gt gt t
289. uter CA SN Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 6 4 WHOI Micro Modem Driver MMDriver 38 NMEA talker Mapping CACYC If we did not send CCCYC buffer data for CADRQ by augmenting the provided ModemTransmission and calling signal_data_request goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission src ADR1 goby acomms protobuf ModemTransmission dest ADR2 goby acomms protobuf ModemTransmission rate Packet Type goby acomms protobuf ModemTransmission max_ frame_bytes 32 for Packet Type 0 64 for Packet Type 2 256 for Packet Type 3 or 5 goby acomms protobuf ModemTransmission max_ num_frames 1 for Packet Type 0 3 for Packet Type 2 2 for Packet Type 3 or 8 for Packet Type 5 CARXD only for the first CARXD for a given packet should match with the rest though goby acomms protobuf ModemTransmission time goby common goby_time lt uint64 gt goby acomms protobuf ModemTransmission type goby acomms protobuf ModemTransmission DATA goby acomms protobuf ModemTransmission src SRC goby acomms protobuf ModemTransmission dest DEST goby acomms protobuf ModemTransmission ack_ requested ACK for each CARXD goby acomms protobuf ModemTransmission frame F 1 goby util hex_decode HH HH Genera
290. uxley communications infrastructure initially uses SonarDyne as underlying hard ware class goby moos UFldDriver provides an simulator driver to the uFldNodeComms MOOS module http oceanai mit edu moos ivp pmwiki pmwiki php n Modules UF1dNodeComms class goby acomms MACManager provides an API to the goby acomms MAC library MACManager is essentially a std list lt protobuf Modem Transmission gt plus a timer class goby acomms DCCLCodec provides an API to the Dynamic CCL Codec class goby acomms ModemDriverBase provides an abstract base class for acoustic modem drivers This is subclassed by the various drivers for different manufacturers modems class goby acomms MMDriver provides an API to the WHO Micro Modem driver class goby acomms QueueManager provides an API to the goby acomms Queuing Library class goby transitional DCCLTransitionalCodec provides an API to the Transitional Dynamic CCL Codec looks like DCCLv1 but calls DCCLv2 Warning this class is for legacy support only new applications should use DCCLCodec directly Detailed Description Namespace Documentation goby Namespace Reference The global namespace for the Goby project Namespaces namespace acomms Objects pertaining to acoustic communications acomms namespace common Utility objects for performing functions such as logging non acoustic communication ethernet serial time scientific string manipulation etc namespace
291. v2 by Doxygen CONTENTS iii 12 1 Glass Hieray o iba ee Labi ee da Pee ee ae tee HAE ENG BP ee Eee ee ows 59 13 Class Index 63 Ded SSRN o Gk es ds Bae Sh se tee Oe pg ee We as tana ous Bae Ss ot Ses 63 14 File Index 66 Mel IS fos oct sos Sy Auten e Seton a hee ae bebo ls cheese aie BON Gol at an Sone Ue Ae A 66 15 Module Documentation 78 15 1 API classes for the Dynamic Compact Control Language includes writing custom encoders 79 15 1 1 Detailed Description lt lt a c e roct a tomora mi omaes a bee eee ee ee 79 15 2 API classes for the major components of the Goby Acomms acoustic communications library DCCL Queue AMAC ModemDriver a 79 1521 Detailed DOScrploM q o ssd 26464 eR Peek a PR ee ee aoe ae ee we 80 16 Namespace Documentation 80 16 1 goby Namespace Reference 0000 ee ee 80 16 1 7 Detailed Descrnplion s ms s ciosa sra BERS Se Ea A ee ee ek A 82 16 1 2 Function Documentation oe s s s i 20h 5 be See ee Pe ee Bad ee ed 82 16 2 goby acomms Namespace Reference a o 82 16 2 1 Detailed Descnplo co roata A Re ele Be ee ee hk a dae 8 85 16 3 goby common Namespace Reference 0 00 eee ee 85 16 34 Detailed Deschnplion 4 ae rr oe Ea aoe eG Eh on WE Je a 87 16 4 goby common tcolor Namespace Reference 0 00002 ee eee eee 88 16 4 1 Detailed Description oce sosa 44 bee e ER Re ee ee e a 88 164 2 Function Documentation cz fk e aoaia a ee ee me 88 16 5 goby p
292. vances in Integrating Autonomy with Acoustic Communications for Intelligent Networks of Marine Robots PhD Thesis MIT WHOI Joint Program 1 4 Download and Install Goby Please visit http gobysoft com wiki InstallingGoby for help on obtaining and installing Goby 1 5 Building Examples Please visit http gobysoft com wiki Examples to learn about the available code examples for Goby 1 6 Authors Goby is developed by the Goby Developers group https launchpad net goby dev The lead de veloper is Toby Schneider http gobysoft com 2 goby acomms An overview of Acoustic Communications Library Table of Contents for goby acomms An overview of Acoustic Communications Library e Quick Start Overview Analogy to established networking systems Acoustic Communications are slow Efficiency to make messages small is good Total throughput unrealistic prioritize data Component model e dccl Encoding and decoding Detailed documentation queue Priority based message queuing Detailed documentation modemdriver Modem driver Detailed documentation amac Medium Access Control MAC Detailed documentation e Software concepts used in goby acomms Signal Slot model for asynchronous events Google Protocol Buffers UML models Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 2 1 Quick Start 3 2 1 Quick Start To get started using the goby acomms libraries as quickly as p
293. y acomms ModemDriverBase signal_transmit_result Called when a transmission is completed You should connect one or more slots a function or member function to this signal to receive incoming messages Use the goby acomms connect family of functions to do this This signal will only be called during a call to poll ModemDataTransmission is defined in acomms_modem_message proto Definition at line 89 of file driver_base h The documentation for this class was generated from the following files goby acomms modemdriver driver_base h src acomms modemdriver driver_base cpp 17 30 goby acomms QueueException Class Reference Exception class for libdccl include lt goby acomms queue queue_exception h gt Inheritance diagram for goby acomms QueueException goby Exception goby acomms QueueException Public Member Functions e QueueException const std string amp s 17 30 1 Detailed Description Exception class for libdccl Definition at line 36 of file queue_exception h The documentation for this class was generated from the following file goby acomms queue queue_exception h Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 31 goby acomms QueueManager Class Reference 157 17 31 goby acomms QueueManager Class Reference provides an API to the goby acomms Queuing Library include lt goby acomms queue h gt Public Member Functions QueueManager constructor
294. ype Generated on Wed Mar 26 2014 01 41 49 for Goby v2 by Doxygen 17 2 ChatCurses Class Reference 95 17 1 1 Detailed Description template lt gt struct boost asio time_traits lt goby common GobyTime gt Time traits specialised for GobyTime Definition at line 231 of file time h The documentation for this struct was generated from the following file goby common time h 17 2 ChatCurses Class Reference provides a terminal GUI for a chat window lower box to type and upper box to receive messages Part of the chat cpp example include lt build buildd goby2 2 1 0 beta8 DAILYDEB 536 share examples acomms chat chat _curses h gt Public Member Functions e void set_modem_id unsigned id give the modem_id so we know how to label our messages e void startup start the display e void run_input std string amp line grab a character and if there s a line to return it will be returned in line e void cleanup end the display e void post_message unsigned id const std string amp line add a message to the upper window the chat log void post_message const std string amp line Constructors Destructor e ChatCurses e ChatCurses 17 2 1 Detailed Description provides a terminal GUI for a chat window lower box to type and upper box to receive messages Part of the chat cpp example Examples acomms chat chat cpp Definition at line 9 of file chat_curses h The document
295. ype gt If WireType FieldType adds some more pure virtual methods to handle the type conversions pre_encode and post_decode If WireType FieldType this class is not inherited and this pure virtual methods do not exist and thus can be omitted in the child class 129 goby acomms DCCLRepeatedTypedFieldCodec lt WireType Field Type gt Base class for repeated multiple value static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedField Codec if your codec is fixed length always uses the same number of bits on the wire Use DCCLTypedFieldCodec if your fields are always singular optional or required Singular fields are default implemented in this codec by calls to the equivalent repeated function with an empty or single valued vector 130 goby acomms DCCLStaticCodec lt T gt Placeholder codec that takes no space on the wire 0 bits 134 goby acomms DCCLTimeCodec lt TimeType gt Encodes time of day second precision for times represented by the string representation of boost posix_time ptime e g obtained from goby_time lt std string gt 135 goby acomms DCCLTypedFieldCodec lt WireType FieldType gt Base class for static typed no boost any field encoders decoders Most user defined variable length codecs will start with this class Use DCCLTypedFixedFieldCodec if your codec is fixed length always uses the same number o
296. ype of MAC to use decentralized fixed or centralized polling and set the type of the goby acomms protobuf MACConfig with the corresponding goby acomms protobuf MACType We also need to give goby acomms MACManager the vehicle s modem id like all the other components of goby acomms using namespace goby acomms protobuf MACConfig mac_cfg mac_cfg set_type protobuf MAC_FIXED_DECENTRALIZED mac_cfg set_modem_id 1 You can also provide a set of slots in the protobuf MACConfig to initialize the MACManager with Otherwise you can add them later using the std list calls The usage of the goby acomms MACManager depends now on the type goby acomms protobuf MAC_FIXED_DECENTRALIZED All vehicles must be running goby acomms protobuf MAC_FIXED_DECENTRALIZED and share the same cycle set of slots Also since each ve hicle initiates its own transaction you can use goby acomms QUERY_DESTINATION_ID throughout In this example used the std list push_back instead of adding the slots to the protobuf MACConfig see under MAC_POLLED below Either way you get the same result but you can modify the std list after startup goby acomms protobuf ModemTransmission slot slot set_src 1 slot set_dest goby acomms QUERY_DESTINATION_ID i slot set_rate 0 slot set_type goby acomms protobuf SLOT_DATA slot set_seconds 10 mac push_back slot 1 gt 1 0 wait 10 a ot set_src 3 mac
Download Pdf Manuals
Related Search
Related Contents
2。cmクーデ望遠鏡用 - 五藤テレスコープ株式会社 Guide pour les aînés de la Colombie-Britannique EVOS FL Auto User Guide - Thermo Fisher Scientific Manuel d`instructions et d`entretien Vérin sans tige à joint Video Conferencing Guide: Eight Steps to Market Data KUBE II - Custom Copyright © All rights reserved.
Failed to retrieve file