aboutsummaryrefslogtreecommitdiff
path: root/src/modules/commander/state_machine_helper.cpp
diff options
context:
space:
mode:
authorDon Gagne <don@thegagnes.com>2014-03-16 21:39:06 -0700
committerDon Gagne <don@thegagnes.com>2014-03-16 21:39:06 -0700
commit4b980b508c93f8bb840ababf19e61862dcedbda9 (patch)
treebbdb26e82c61af5e959639a8d68ea5339b00d4ac /src/modules/commander/state_machine_helper.cpp
parentdec13e7f215caa3ee002fbc3b6400ae82e249b2e (diff)
downloadpx4-firmware-4b980b508c93f8bb840ababf19e61862dcedbda9.tar.gz
px4-firmware-4b980b508c93f8bb840ababf19e61862dcedbda9.tar.bz2
px4-firmware-4b980b508c93f8bb840ababf19e61862dcedbda9.zip
arming_state_transition now outputs error messages
If mavlink fd is passed in method will output reason for arming failure to mavlink.
Diffstat (limited to 'src/modules/commander/state_machine_helper.cpp')
-rw-r--r--src/modules/commander/state_machine_helper.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp
index 31955d3e5..94ffc31d6 100644
--- a/src/modules/commander/state_machine_helper.cpp
+++ b/src/modules/commander/state_machine_helper.cpp
@@ -70,7 +70,7 @@ static bool failsafe_state_changed = true;
transition_result_t
arming_state_transition(struct vehicle_status_s *status, const struct safety_s *safety,
- arming_state_t new_arming_state, struct actuator_armed_s *armed)
+ arming_state_t new_arming_state, struct actuator_armed_s *armed, const int mavlink_fd)
{
/*
* Perform an atomic state update
@@ -125,13 +125,18 @@ arming_state_transition(struct vehicle_status_s *status, const struct safety_s *
case ARMING_STATE_ARMED:
/* allow arming from STANDBY and IN-AIR-RESTORE */
- if ((status->arming_state == ARMING_STATE_STANDBY
- || status->arming_state == ARMING_STATE_IN_AIR_RESTORE)
- && (!safety->safety_switch_available || safety->safety_off || status->hil_state == HIL_STATE_ON)) { /* only allow arming if safety is off */
- ret = TRANSITION_CHANGED;
- armed->armed = true;
- armed->ready_to_arm = true;
- }
+ if ((status->arming_state == ARMING_STATE_STANDBY || status->arming_state == ARMING_STATE_IN_AIR_RESTORE)) {
+ if (status->hil_state == HIL_STATE_OFF && safety->safety_switch_available && !safety->safety_off) {
+ // If we need to wait for safety switch then output message, but only if we have fd for mavlink connection
+ if (mavlink_fd) {
+ mavlink_log_critical(mavlink_fd, "NOT ARMING: Press safety switch first.");
+ }
+ } else {
+ ret = TRANSITION_CHANGED;
+ armed->armed = true;
+ armed->ready_to_arm = true;
+ }
+ }
break;