commander: fix mission topic publication

The local scope caused the topic to be unadvertised, which in turn caused
a copy() failure in navigator and 'mission update failed' printf error.
This commit is contained in:
Beat Küng
2020-01-22 16:50:46 +01:00
committed by Daniel Agar
parent c61e44f55b
commit db36edffe8
2 changed files with 4 additions and 4 deletions
+2 -4
View File
@@ -81,7 +81,6 @@
#include <cstring>
#include <uORB/topics/mavlink_log.h>
#include <uORB/topics/mission.h>
typedef enum VEHICLE_MODE_FLAG {
VEHICLE_MODE_FLAG_CUSTOM_MODE_ENABLED = 1, /* 0b00000001 Reserved for future use. | */
@@ -3500,7 +3499,7 @@ void Commander::enable_hil()
void Commander::mission_init()
{
/* init mission state, do it here to allow navigator to use stored mission even if mavlink failed to start */
mission_s mission{};
mission_s mission;
if (dm_read(DM_KEY_MISSION_STATE, 0, &mission, sizeof(mission_s)) == sizeof(mission_s)) {
if (mission.dataman_id == DM_KEY_WAYPOINTS_OFFBOARD_0 || mission.dataman_id == DM_KEY_WAYPOINTS_OFFBOARD_1) {
@@ -3517,8 +3516,7 @@ void Commander::mission_init()
dm_write(DM_KEY_MISSION_STATE, 0, DM_PERSIST_POWER_ON_RESET, &mission, sizeof(mission_s));
}
uORB::Publication<mission_s> mission_pub{ORB_ID(mission)};
mission_pub.publish(mission);
_mission_pub.publish(mission);
}
}
+2
View File
@@ -66,6 +66,7 @@
#include <uORB/topics/geofence_result.h>
#include <uORB/topics/iridiumsbd_status.h>
#include <uORB/topics/manual_control_setpoint.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/mission_result.h>
#include <uORB/topics/offboard_control_mode.h>
#include <uORB/topics/parameter_update.h>
@@ -403,6 +404,7 @@ private:
uORB::Publication<vehicle_control_mode_s> _control_mode_pub{ORB_ID(vehicle_control_mode)};
uORB::Publication<vehicle_status_flags_s> _vehicle_status_flags_pub{ORB_ID(vehicle_status_flags)};
uORB::Publication<vehicle_status_s> _status_pub{ORB_ID(vehicle_status)};
uORB::Publication<mission_s> _mission_pub{ORB_ID(mission)};
uORB::PublicationData<home_position_s> _home_pub{ORB_ID(home_position)};