aboutsummaryrefslogtreecommitdiff
path: root/src/modules/navigator/mission.cpp
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-07-23 22:58:19 +0200
committerThomas Gubler <thomasgubler@gmail.com>2014-07-23 22:58:19 +0200
commit24f380137ecb91fb9647e22e1d29c13da5fc0357 (patch)
tree8202bd0cad2410fd04d550897d9c994bd6d0bc3d /src/modules/navigator/mission.cpp
parented19faf4289eed5eeb3339e9609e976b9195020c (diff)
downloadpx4-firmware-24f380137ecb91fb9647e22e1d29c13da5fc0357.tar.gz
px4-firmware-24f380137ecb91fb9647e22e1d29c13da5fc0357.tar.bz2
px4-firmware-24f380137ecb91fb9647e22e1d29c13da5fc0357.zip
add method to block fallback to mission
failsafe navigation modes can use a flag in mission_result to tell the commander to not switch back to mission
Diffstat (limited to 'src/modules/navigator/mission.cpp')
-rw-r--r--src/modules/navigator/mission.cpp32
1 files changed, 7 insertions, 25 deletions
diff --git a/src/modules/navigator/mission.cpp b/src/modules/navigator/mission.cpp
index ba766cd10..7ce0e2f89 100644
--- a/src/modules/navigator/mission.cpp
+++ b/src/modules/navigator/mission.cpp
@@ -68,8 +68,6 @@ Mission::Mission(Navigator *navigator, const char *name) :
_current_offboard_mission_index(-1),
_need_takeoff(true),
_takeoff(false),
- _mission_result_pub(-1),
- _mission_result({0}),
_mission_type(MISSION_TYPE_NONE),
_inited(false),
_dist_1wp_ok(false)
@@ -577,18 +575,18 @@ void
Mission::report_mission_item_reached()
{
if (_mission_type == MISSION_TYPE_OFFBOARD) {
- _mission_result.reached = true;
- _mission_result.seq_reached = _current_offboard_mission_index;
+ _navigator->get_mission_result()->reached = true;
+ _navigator->get_mission_result()->seq_reached = _current_offboard_mission_index;
}
- publish_mission_result();
+ _navigator->publish_mission_result();
}
void
Mission::report_current_offboard_mission_item()
{
warnx("current offboard mission index: %d", _current_offboard_mission_index);
- _mission_result.seq_current = _current_offboard_mission_index;
- publish_mission_result();
+ _navigator->get_mission_result()->seq_current = _current_offboard_mission_index;
+ _navigator->publish_mission_result();
save_offboard_mission_state();
}
@@ -596,23 +594,7 @@ Mission::report_current_offboard_mission_item()
void
Mission::report_mission_finished()
{
- _mission_result.finished = true;
- publish_mission_result();
+ _navigator->get_mission_result()->finished = true;
+ _navigator->publish_mission_result();
}
-void
-Mission::publish_mission_result()
-{
- /* lazily publish the mission result only once available */
- if (_mission_result_pub > 0) {
- /* publish mission result */
- orb_publish(ORB_ID(mission_result), _mission_result_pub, &_mission_result);
-
- } else {
- /* advertise and publish */
- _mission_result_pub = orb_advertise(ORB_ID(mission_result), &_mission_result);
- }
- /* reset reached bool */
- _mission_result.reached = false;
- _mission_result.finished = false;
-}