18 #include <mavros_msgs/ESCTelemetry.h> 22 namespace extra_plugins
63 template <
typename msgT>
68 size_t requred_size =
offset + et.temperature.size();
69 if (_esc_telemetry.esc_telemetry.size() < requred_size) {
70 _esc_telemetry.esc_telemetry.resize(requred_size);
75 _esc_telemetry.header.stamp = stamp;
76 for (
size_t i = 0; i < et.temperature.size(); i++) {
77 auto &p = _esc_telemetry.esc_telemetry.at(
offset + i);
79 p.header.stamp = stamp;
80 p.temperature = et.temperature[i];
81 p.voltage = et.voltage[i] / 100.0f;
82 p.current = et.current[i] / 100.0f;
83 p.totalcurrent = et.totalcurrent[i] / 1000.0f;
85 p.count = et.count[i];
88 esc_telemetry_pub.
publish(_esc_telemetry);
110 _esc_telemetry.esc_telemetry.clear();
mavros_msgs::ESCTelemetry _esc_telemetry
std::lock_guard< std::mutex > lock_guard
HandlerInfo make_handler(const mavlink::msgid_t id, void(_C::*fn)(const mavlink::mavlink_message_t *msg, const mavconn::Framing framing))
void handle_esc_telemetry(const mavlink::mavlink_message_t *msg, msgT &et, size_t offset=0)
void handle_esc_telemetry_5_to_8(const mavlink::mavlink_message_t *msg, mavlink::ardupilotmega::msg::ESC_TELEMETRY_5_TO_8 &esc_telemetry)
void handle_esc_telemetry_1_to_4(const mavlink::mavlink_message_t *msg, mavlink::ardupilotmega::msg::ESC_TELEMETRY_1_TO_4 &esc_telemetry)
void publish(const boost::shared_ptr< M > &message) const
void connection_cb(bool connected) override
std::atomic< bool > connected
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
void enable_connection_cb()
ros::Publisher esc_telemetry_pub
std::vector< HandlerInfo > Subscriptions
Subscriptions get_subscriptions() override
void initialize(UAS &uas_) override
void handle_esc_telemetry_9_to_12(const mavlink::mavlink_message_t *msg, mavlink::ardupilotmega::msg::ESC_TELEMETRY_9_TO_12 &esc_telemetry)
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
void initialize(UAS &uas_) override
std::recursive_mutex mutex