1 #ifndef JAIABOT_LIB_MOOS_GATEWAY_H
2 #define JAIABOT_LIB_MOOS_GATEWAY_H
4 #include <goby/moos/middleware/moos_plugin_translator.h>
5 #include <goby/moos/protobuf/moos_gateway_config.pb.h>
11 #include "jaiabot_gateway_config.pb.h"
25 goby().interprocess().subscribe<goby::middleware::groups::datum_update>(
26 [
this](
const goby::middleware::protobuf::DatumUpdate& datum_update) {
27 goby::glog.is_debug1() && goby::glog <<
"Datum update received." << std::endl;
28 pending_datum_update_ =
true;
32 moos().add_trigger(
"NAV_X", [
this](
const CMOOSMsg&) {
33 pending_datum_update_ =
false;
34 if (pending_bhv_update_)
36 goby::glog.is_debug1() &&
37 goby::glog <<
"NAV_X received, flushing pending IvPBehaviorUpdate" << std::endl;
39 publish_bhv_update(*pending_bhv_update_);
40 pending_bhv_update_.reset();
49 moos().comms().Notify(
"JAIABOT_MISSION_STATE",
52 moos().add_trigger(
"JAIABOT_TRANSIT_COMPLETE", [
this](
const CMOOSMsg&
msg) {
53 if (
msg.GetString() ==
"true")
55 protobuf::IvPBehaviorReport report;
56 report.mutable_transit()->set_waypoint_reached(true);
57 goby().interprocess().publish<jaiabot::groups::mission_ivp_behavior_report>(report);
66 bool pending_datum_update_{
false};
67 std::unique_ptr<protobuf::IvPBehaviorUpdate> pending_bhv_update_;
76 jaiabot_cfg_(cfg.GetExtension(
jaiabot::protobuf::jaiabot_gateway_config)),
77 omit_var_(jaiabot_cfg_.logging_omit_var_regex()),
78 omit_app_(jaiabot_cfg_.logging_omit_app_regex())
80 moos().add_wildcard_trigger(
82 [
this](
const CMOOSMsg&
msg)
84 if (jaiabot_cfg_.has_logging_omit_var_regex() &&
85 std::regex_match(
msg.m_sKey, omit_var_))
87 if (jaiabot_cfg_.has_logging_omit_app_regex() &&
88 std::regex_match(
msg.m_sSrc, omit_app_))
93 pb_msg.set_key(
msg.m_sKey);
94 switch (pb_msg.type())
96 case protobuf::MOOSMessage::TYPE_DOUBLE: pb_msg.set_dvalue(msg.m_dfVal); break;
97 case protobuf::MOOSMessage::TYPE_STRING: pb_msg.set_svalue(msg.m_sVal); break;
98 case protobuf::MOOSMessage::TYPE_BINARY_STRING:
99 pb_msg.set_bvalue(msg.m_sVal);
102 pb_msg.set_unixtime(
msg.m_dfTime);
103 pb_msg.set_id(
msg.m_nID);
104 pb_msg.set_source(
msg.m_sSrc);
105 pb_msg.set_source_aux(
msg.m_sSrcAux);
106 pb_msg.set_community(
msg.m_sOriginatingCommunity);
107 interprocess().publish<jaiabot::groups::moos>(pb_msg);
112 const jaiabot::protobuf::MOOSGatewayConfig jaiabot_cfg_;
113 std::regex omit_var_;
114 std::regex omit_app_;