80 typedef unsigned ModemId;
89 void receive_sbd_mo();
92 void send_sbd_mt(
const std::string& bytes,
const std::string& imei);
94 void rudics_send(
const std::string& data, ModemId
id);
95 void rudics_disconnect(
const std::shared_ptr<RUDICSConnection>& connection);
96 void rudics_line(
const std::string& line,
const std::shared_ptr<RUDICSConnection>& connection);
97 void rudics_connect(
const std::shared_ptr<RUDICSConnection>& connection);
110 void startup_sbd_directip(
const protobuf::DriverConfig& cfg);
111 void receive_sbd_mo_directip();
112 void send_sbd_mt_directip(
const std::string& bytes,
const std::string& imei);
115 void startup_sbd_rockblock(
const protobuf::DriverConfig& cfg);
116 void receive_sbd_mo_rockblock();
117 void send_sbd_mt_rockblock(
const std::string& bytes,
const std::string& imei);
120 protobuf::DriverConfig driver_cfg_;
122 protobuf::ModemTransmission rudics_mac_msg_;
124 std::uint32_t next_frame_{0};
130 DATA_BUFFER_CAPACITY = 30
132 RemoteNode() : data_out(DATA_BUFFER_CAPACITY) {}
134 std::shared_ptr<OnCallBase> on_call;
135 boost::circular_buffer<protobuf::ModemTransmission> data_out;
138 std::map<ModemId, RemoteNode> remote_;
140 std::unique_ptr<boost::asio::io_context> rudics_io_;
141 std::unique_ptr<RUDICSServer> rudics_server_;
142 std::unique_ptr<boost::asio::io_context> sbd_io_;
143 std::unique_ptr<directip::SBDServer> directip_mo_sbd_server_;
146 boost::bimap<ModemId, std::shared_ptr<RUDICSConnection>> clients_;
148 using IMEI = std::string;
149 std::map<ModemId, IMEI> modem_id_to_imei_;
151 struct RockblockHTTPMessage
153 enum class MessageState
159 MessageState state{MessageState::HEADER};
160 std::map<std::string, std::string> header;
164 std::unique_ptr<RockblockHTTPMessage> rb_msg_;
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::PROTOBUF_NAMESPACE_ID::MessageOptions, ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::goby::GobyMessageOptions >, 11, false > msg