aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorjulianoes <julian@oes.ch>2014-03-03 10:59:51 +0100
committerjulianoes <julian@oes.ch>2014-03-03 10:59:51 +0100
commit49fe13101921368b998330157bd823aec1a77d5c (patch)
treec477843fb2e67732aa0a8cc789e6bff87b80ad1f /src/modules
parent72ae4a6dc7b5c68772acb007b2598873f7da8d9b (diff)
parent8bc0287eccc7871db17c199a3b330e74c92c068a (diff)
downloadpx4-firmware-49fe13101921368b998330157bd823aec1a77d5c.tar.gz
px4-firmware-49fe13101921368b998330157bd823aec1a77d5c.tar.bz2
px4-firmware-49fe13101921368b998330157bd823aec1a77d5c.zip
Merge pull request #674 from PX4/safety_disarm
commander: disarm system when safety enabled
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/commander/commander.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index e809dfbf7..d5af63120 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -901,11 +901,13 @@ int commander_thread_main(int argc, char *argv[])
if (updated) {
orb_copy(ORB_ID(safety), safety_sub, &safety);
- // XXX this would be the right approach to do it, but do we *WANT* this?
- // /* disarm if safety is now on and still armed */
- // if (safety.safety_switch_available && !safety.safety_off) {
- // (void)arming_state_transition(&status, &safety, ARMING_STATE_STANDBY, &armed);
- // }
+ /* disarm if safety is now on and still armed */
+ if (safety.safety_switch_available && !safety.safety_off && armed.armed) {
+ arming_state_t new_arming_state = (status.arming_state == ARMING_STATE_ARMED ? ARMING_STATE_STANDBY : ARMING_STATE_STANDBY_ERROR);
+ if (TRANSITION_CHANGED == arming_state_transition(&status, &safety, new_arming_state, &armed)) {
+ mavlink_log_info(mavlink_fd, "[cmd] DISARMED by safety switch");
+ }
+ }
}
/* update global position estimate */