Goby3 3.5.1
2026.06.04
Loading...
Searching...
No Matches
iridium_driver.h
Go to the documentation of this file.
1// Copyright 2011-2024:
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_ACOMMS_MODEMDRIVER_IRIDIUM_DRIVER_H
26#define GOBY_ACOMMS_MODEMDRIVER_IRIDIUM_DRIVER_H
27
28#include <cstdint> // for uint32_t
29#include <iosfwd> // for ostream
30#include <memory> // for shared_ptr
31
32#include "goby/acomms/modemdriver/driver_base.h" // for ModemDriverBase
33#include "goby/acomms/protobuf/driver_base.pb.h" // for DriverConfig
34#include "goby/acomms/protobuf/iridium_driver.pb.h" // for Config, MessageT...
35#include "goby/acomms/protobuf/modem_message.pb.h" // for ModemTransmission
36#include "iridium_driver_fsm.h" // for IridiumDriverFSM
37
38namespace goby
39{
40namespace util
41{
42class TCPClient;
43} // namespace util
44
45namespace acomms
46{
48{
49 public:
51 ~IridiumDriver() override;
52 void startup(const protobuf::DriverConfig& cfg) override;
53
54 void modem_init();
55
56 void shutdown() override;
57 void do_work() override;
58
61
62 private:
63 void process_transmission(protobuf::ModemTransmission msg, bool dial);
64
65 void receive(const protobuf::ModemTransmission& msg);
66 void send(const protobuf::ModemTransmission& msg);
67
68 void try_serial_tx();
69 void display_state_cfg(std::ostream* os);
70
71 void hangup();
72 void set_dtr(bool state);
73 bool query_dtr();
74
75 const iridium::protobuf::Config& iridium_driver_cfg()
76 {
77 return driver_cfg_.GetExtension(iridium::protobuf::config);
78 };
79
80 private:
81 protobuf::DriverConfig driver_cfg_;
83
84 std::shared_ptr<goby::util::TCPClient> debug_client_;
85
86 double last_triple_plus_time_{0};
87 enum
88 {
89 TRIPLE_PLUS_WAIT = 2
90 };
91
92 protobuf::ModemTransmission rudics_mac_msg_;
93
94 std::uint32_t next_frame_{0};
95
96 bool running_{false};
97};
98} // namespace acomms
99} // namespace goby
100#endif
void handle_initiate_transmission(const protobuf::ModemTransmission &m) override
Virtual initiate_transmission method. Typically connected to MACManager::signal_initiate_transmission...
void do_work() override
Allows the modem driver to do its work.
void report(goby::acomms::protobuf::ModemReport *report) override
Returns report including modem availability and signal quality (if known).
void startup(const protobuf::DriverConfig &cfg) override
Starts the modem driver. Must be called before poll().
void shutdown() override
Shuts down the modem driver.
provides a basic TCP client for line by line text based communications to a remote TCP server
Definition tcp_client.h:44
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::goby::acomms::protobuf::DriverConfig, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::acomms::iridium::protobuf::Config >, 11, false > config
Classes and functions pertaining to acoustic communications (acomms) as well as related marine releva...
The global namespace for the Goby project.
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::PROTOBUF_NAMESPACE_ID::MessageOptions, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::GobyMessageOptions >, 11, false > msg