3 #include <mavros_msgs/Tunnel.h> 8 namespace extra_plugins
36 const auto mav_tunnel =
37 copy_tunnel<mavros_msgs::Tunnel, mavlink::common::msg::TUNNEL>(
42 catch (
const std::overflow_error&
e)
49 mavlink::common::msg::TUNNEL& mav_tunnel)
53 const auto ros_tunnel =
54 copy_tunnel<mavlink::common::msg::TUNNEL, mavros_msgs::Tunnel>(
59 catch (
const std::overflow_error&
e)
65 template <
typename From,
typename To>
68 static constexpr
auto max_payload_length =
69 sizeof(mavlink::common::msg::TUNNEL::payload) /
70 sizeof(mavlink::common::msg::TUNNEL::payload[0]);
72 if (from.payload_length > max_payload_length)
74 throw std::overflow_error(
"too long payload length");
79 to.target_system = from.target_system;
80 to.target_component = from.target_component;
81 to.payload_type = from.payload_type;
82 to.payload_length = from.payload_length;
83 std::copy(from.payload.begin(),
84 from.payload.begin() + from.payload_length,
std::shared_ptr< MAVConnInterface const > ConstPtr
#define ROS_ERROR_STREAM_NAMED(name, args)
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
HandlerInfo make_handler(const mavlink::msgid_t id, void(_C::*fn)(const mavlink::mavlink_message_t *msg, const mavconn::Framing framing))
void publish(const boost::shared_ptr< M > &message) const
#define UAS_FCU(uasobjptr)
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
std::vector< HandlerInfo > Subscriptions
void initialize(UAS &uas_) override
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)