Goby3 3.2.3
2025.05.13
Loading...
Searching...
No Matches
moos_bluefin_driver.h
Go to the documentation of this file.
1// Copyright 2011-2021:
2// GobySoft, LLC (2013-)
3// Massachusetts Institute of Technology (2007-2014)
4// Community contributors (see AUTHORS file)
5// File authors:
6// Toby Schneider <toby@gobysoft.org>
7//
8//
9// This file is part of the Goby Underwater Autonomy Project Libraries
10// ("The Goby Libraries").
11//
12// The Goby Libraries are free software: you can redistribute them and/or modify
13// them under the terms of the GNU Lesser General Public License as published by
14// the Free Software Foundation, either version 2.1 of the License, or
15// (at your option) any later version.
16//
17// The Goby Libraries are distributed in the hope that they will be useful,
18// but WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20// GNU Lesser General Public License for more details.
21//
22// You should have received a copy of the GNU Lesser General Public License
23// along with Goby. If not, see <http://www.gnu.org/licenses/>.
24
25#ifndef GOBY_MOOS_MOOS_BLUEFIN_DRIVER_H
26#define GOBY_MOOS_MOOS_BLUEFIN_DRIVER_H
27
28#include <map> // for map
29#include <string> // for string
30
31#include <MOOS/libMOOS/Comms/MOOSCommClient.h> // for CMOOSCommClient
32#include <boost/bimap.hpp> // for bimap
33
34#include "goby/acomms/modemdriver/driver_base.h" // for ModemDriverBase
35#include "goby/acomms/protobuf/driver_base.pb.h" // for DriverConfig
36#include "goby/acomms/protobuf/modem_message.pb.h" // for ModemTransmission
37#include "goby/moos/protobuf/bluefin_driver.pb.h" // for Config
38
39namespace goby
40{
41namespace acomms
42{
43class MACManager;
44} // namespace acomms
45namespace util
46{
47class NMEASentence;
48} // namespace util
49
50namespace moos
51{
56{
57 public:
60 void shutdown() override;
61 void do_work() override;
63
64 private:
65 std::string unix_time2nmea_time(double time);
66 void bfcma(const goby::util::NMEASentence& nmea);
67 void bfcps(const goby::util::NMEASentence& nmea);
68 void bfcpr(const goby::util::NMEASentence& nmea);
69
70 private:
71 CMOOSCommClient moos_client_;
72 goby::acomms::protobuf::DriverConfig driver_cfg_; // configuration given to you at launch
73 goby::moos::bluefin::protobuf::Config bluefin_driver_cfg_;
74
75 std::string current_modem_;
76 double end_of_mac_window_;
77
78 // modem name to map of rate to bytes
79 std::map<std::string, std::map<int, int> > modem_to_rate_to_bytes_;
80
81 // maps goby modem id to bluefin modem id
82 boost::bimap<int, int> goby_to_bluefin_id_;
83
85
86 int last_request_id_;
88};
89} // namespace moos
90} // namespace goby
91
92#endif
provides an API to the goby-acomms MAC library. MACManager is essentially a std::list<protobuf::Modem...
Definition mac_manager.h:51
provides an abstract base class for acoustic modem drivers. This is subclassed by the various drivers...
Definition driver_base.h:59
provides a driver for the Bluefin Huxley communications infrastructure (initially uses SonarDyne as u...
void handle_initiate_transmission(const goby::acomms::protobuf::ModemTransmission &m) override
Virtual initiate_transmission method. Typically connected to MACManager::signal_initiate_transmission...
void startup(const goby::acomms::protobuf::DriverConfig &cfg) override
Starts the modem driver. Must be called before poll().
void do_work() override
Allows the modem driver to do its work.
BluefinCommsDriver(goby::acomms::MACManager *mac)
void shutdown() override
Shuts down the modem driver.
The global namespace for the Goby project.