companion_process_status.cpp
Go to the documentation of this file.
1 
9 /*
10  * Copyright 2018 Tanja Baumann.
11  *
12  * This file is part of the mavros package and subject to the license terms
13  * in the top-level LICENSE file of the mavros repository.
14  * https://github.com/mavlink/mavros/tree/master/LICENSE.md
15  */
16 
17 #include <mavros/mavros_plugin.h>
18 
19 #include <mavros_msgs/CompanionProcessStatus.h>
20 
21 namespace mavros {
22 namespace extra_plugins {
26 using mavlink::minimal::MAV_COMPONENT;
29 using utils::enum_value;
30 
38 public:
40  status_nh("~companion_process")
41  { }
42 
43  void initialize(UAS &uas_) override
44  {
46 
48  }
49 
51  {
52  return { /* Rx disabled */ };
53  }
54 
55 private:
58 
66  {
67  mavlink::minimal::msg::HEARTBEAT heartbeat {};
68 
69  heartbeat.type = enum_value(MAV_TYPE::ONBOARD_CONTROLLER);
70  heartbeat.autopilot = enum_value(MAV_AUTOPILOT::PX4);
71  heartbeat.base_mode = enum_value(MAV_MODE_FLAG::CUSTOM_MODE_ENABLED);
72  heartbeat.system_status = req->state; //enum="MAV_STATE" System status flag
73 
74  ROS_DEBUG_STREAM_NAMED("companion_process_status", "companion process component id: " <<
75  utils::to_string_enum<MAV_COMPONENT>(req->component) << " companion process status: " <<
76  utils::to_string_enum<MAV_STATE>(heartbeat.system_status) << std::endl << heartbeat.to_yaml());
77 
78  UAS_FCU(m_uas)->send_message_ignore_drop(heartbeat, req->component);
79  }
80 };
81 } // namespace extra_plugins
82 } // namespace mavros
83 
mavros::plugin::PluginBase::m_uas
UAS * m_uas
mavros::plugin::PluginBase::Subscriptions
std::vector< HandlerInfo > Subscriptions
mavros::extra_plugins::CompanionProcessStatusPlugin::get_subscriptions
Subscriptions get_subscriptions() override
Definition: companion_process_status.cpp:50
ROS_DEBUG_STREAM_NAMED
#define ROS_DEBUG_STREAM_NAMED(name, args)
mavros::plugin::PluginBase::PluginBase
PluginBase()
UAS_FCU
#define UAS_FCU(uasobjptr)
mavros::UAS
mavros::extra_plugins::CompanionProcessStatusPlugin::CompanionProcessStatusPlugin
CompanionProcessStatusPlugin()
Definition: companion_process_status.cpp:39
ConstPtr
std::shared_ptr< MAVConnInterface const > ConstPtr
mavros::extra_plugins::CompanionProcessStatusPlugin::status_sub
ros::Subscriber status_sub
Definition: companion_process_status.cpp:57
mavros::extra_plugins::CompanionProcessStatusPlugin::status_cb
void status_cb(const mavros_msgs::CompanionProcessStatus::ConstPtr &req)
Send companion process status to FCU over a heartbeat message.
Definition: companion_process_status.cpp:65
mavros::extra_plugins::CompanionProcessStatusPlugin::initialize
void initialize(UAS &uas_) override
Definition: companion_process_status.cpp:43
mavros::extra_plugins::CompanionProcessStatusPlugin::status_nh
ros::NodeHandle status_nh
Definition: companion_process_status.cpp:56
mavros::extra_plugins::CompanionProcessStatusPlugin
Obstacle companion process status plugin.
Definition: companion_process_status.cpp:37
MAV_AUTOPILOT
mavlink::minimal::MAV_AUTOPILOT MAV_AUTOPILOT
PLUGINLIB_EXPORT_CLASS
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
mavros_plugin.h
ros::NodeHandle::subscribe
Subscriber subscribe(const std::string &topic, uint32_t queue_size, const boost::function< void(C)> &callback, const VoidConstPtr &tracked_object=VoidConstPtr(), const TransportHints &transport_hints=TransportHints())
mavros
initialize
virtual void initialize(UAS &uas)
mavros::plugin::PluginBase
class_list_macros.hpp
MAV_TYPE
mavlink::minimal::MAV_TYPE MAV_TYPE
MAV_MODE_FLAG
mavlink::minimal::MAV_MODE_FLAG MAV_MODE_FLAG
mavros::utils::enum_value
constexpr std::underlying_type< _T >::type enum_value(_T e)
MAV_STATE
mavlink::minimal::MAV_STATE MAV_STATE
ros::NodeHandle
ros::Subscriber


mavros_extras
Author(s): Vladimir Ermakov , Amilcar Lucas
autogenerated on Tue May 6 2025 02:34:08