mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-27 03:10:36 +08:00
remoteid: implement System as sent from GCS
This will send the System message if it is already being sent by a ground station. Otherwise, it will assemble the message itself using the takeoff/home location.
This commit is contained in:
@@ -288,6 +288,10 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg)
|
||||
handle_message_open_drone_id_self_id(msg);
|
||||
break;
|
||||
|
||||
case MAVLINK_MSG_ID_OPEN_DRONE_ID_SYSTEM:
|
||||
handle_message_open_drone_id_system(msg);
|
||||
break;
|
||||
|
||||
#if !defined(CONSTRAINED_FLASH)
|
||||
|
||||
case MAVLINK_MSG_ID_NAMED_VALUE_FLOAT:
|
||||
@@ -3125,6 +3129,31 @@ void MavlinkReceiver::handle_message_open_drone_id_self_id(mavlink_message_t *ms
|
||||
_open_drone_id_self_id_pub.publish(odid_self_id);
|
||||
}
|
||||
|
||||
void MavlinkReceiver::handle_message_open_drone_id_system(
|
||||
mavlink_message_t *msg)
|
||||
{
|
||||
mavlink_open_drone_id_system_t odid_module;
|
||||
mavlink_msg_open_drone_id_system_decode(msg, &odid_module);
|
||||
|
||||
open_drone_id_system_s odid_system{};
|
||||
memset(&odid_system, 0, sizeof(odid_system));
|
||||
|
||||
odid_system.timestamp = hrt_absolute_time();
|
||||
memcpy(odid_system.id_or_mac, odid_module.id_or_mac, sizeof(odid_system.id_or_mac));
|
||||
odid_system.operator_location_type = odid_module.operator_location_type;
|
||||
odid_system.classification_type = odid_module.classification_type;
|
||||
odid_system.operator_latitude = odid_module.operator_latitude;
|
||||
odid_system.operator_longitude = odid_module.operator_longitude;
|
||||
odid_system.area_count = odid_module.area_count;
|
||||
odid_system.area_radius = odid_module.area_radius;
|
||||
odid_system.area_ceiling = odid_module.area_ceiling;
|
||||
odid_system.area_floor = odid_module.area_floor;
|
||||
odid_system.category_eu = odid_module.category_eu;
|
||||
odid_system.class_eu = odid_module.class_eu;
|
||||
odid_system.operator_altitude_geo = odid_module.operator_altitude_geo;
|
||||
|
||||
_open_drone_id_system_pub.publish(odid_system);
|
||||
}
|
||||
void
|
||||
MavlinkReceiver::run()
|
||||
{
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
#include <uORB/topics/onboard_computer_status.h>
|
||||
#include <uORB/topics/open_drone_id_operator_id.h>
|
||||
#include <uORB/topics/open_drone_id_self_id.h>
|
||||
#include <uORB/topics/open_drone_id_system.h>
|
||||
#include <uORB/topics/ping.h>
|
||||
#include <uORB/topics/position_setpoint_triplet.h>
|
||||
#include <uORB/topics/radio_status.h>
|
||||
@@ -319,6 +320,7 @@ private:
|
||||
uORB::Publication<velocity_limits_s> _velocity_limits_pub{ORB_ID(velocity_limits)};
|
||||
uORB::Publication<open_drone_id_operator_id_s> _open_drone_id_operator_id_pub{ORB_ID(open_drone_id_operator_id)};
|
||||
uORB::Publication<open_drone_id_self_id_s> _open_drone_id_self_id_pub{ORB_ID(open_drone_id_self_id)};
|
||||
uORB::Publication<open_drone_id_system_s> _open_drone_id_system_pub{ORB_ID(open_drone_id_system)};
|
||||
uORB::Publication<generator_status_s> _generator_status_pub{ORB_ID(generator_status)};
|
||||
uORB::Publication<vehicle_attitude_s> _attitude_pub{ORB_ID(vehicle_attitude)};
|
||||
uORB::Publication<vehicle_attitude_setpoint_s> _att_sp_pub{ORB_ID(vehicle_attitude_setpoint)};
|
||||
|
||||
Reference in New Issue
Block a user