aboutsummaryrefslogtreecommitdiff
path: root/src/modules/commander/state_machine_helper.cpp
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2014-01-26 11:58:50 +0100
committerAnton Babushkin <anton.babushkin@me.com>2014-01-26 11:58:50 +0100
commitb7c69262a7e4d51fb7806ab40a4dbb2b0ea4f75b (patch)
treee889ca3435df782922f40f170ad55fec1db7003e /src/modules/commander/state_machine_helper.cpp
parent7d2efe9367787cdfc4590f335f600f3b79b2cbc7 (diff)
downloadpx4-firmware-b7c69262a7e4d51fb7806ab40a4dbb2b0ea4f75b.tar.gz
px4-firmware-b7c69262a7e4d51fb7806ab40a4dbb2b0ea4f75b.tar.bz2
px4-firmware-b7c69262a7e4d51fb7806ab40a4dbb2b0ea4f75b.zip
state_machine_helper: added missed transition to FAILSAFE_STATE_LAND, transition conditions fixed
Diffstat (limited to 'src/modules/commander/state_machine_helper.cpp')
-rw-r--r--src/modules/commander/state_machine_helper.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp
index 1be0a16b8..c7256583a 100644
--- a/src/modules/commander/state_machine_helper.cpp
+++ b/src/modules/commander/state_machine_helper.cpp
@@ -377,17 +377,28 @@ transition_result_t failsafe_state_transition(struct vehicle_status_s *status, f
} else {
switch (new_failsafe_state) {
case FAILSAFE_STATE_NORMAL:
+ /* always allowed (except from TERMINATION state) */
ret = TRANSITION_CHANGED;
break;
case FAILSAFE_STATE_RTL:
- if (status->condition_global_position_valid) {
+ /* global position and home position required for RTL */
+ if (status->condition_global_position_valid && status->condition_home_position_valid) {
+ ret = TRANSITION_CHANGED;
+ }
+
+ break;
+
+ case FAILSAFE_STATE_LAND:
+ /* at least relative altitude estimate required for landing */
+ if (status->condition_local_altitude_valid || status->condition_global_position_valid) {
ret = TRANSITION_CHANGED;
}
break;
case FAILSAFE_STATE_TERMINATION:
+ /* always allowed */
ret = TRANSITION_CHANGED;
break;