Browse Source

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.
sbg
Beat Küng 5 years ago committed by Daniel Agar
parent
commit
db36edffe8
  1. 6
      src/modules/commander/Commander.cpp
  2. 2
      src/modules/commander/Commander.hpp

6
src/modules/commander/Commander.cpp

@ -81,7 +81,6 @@ @@ -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() @@ -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() @@ -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
src/modules/commander/Commander.hpp

@ -66,6 +66,7 @@ @@ -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: @@ -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)};

Loading…
Cancel
Save