aboutsummaryrefslogtreecommitdiff
path: root/src/modules/px4iofirmware/registers.c
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-11-22 16:30:59 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-11-22 16:30:59 +0100
commit300705321a0ffa79ab3d4d53e3c029fe8238086a (patch)
tree0d916352d41a96b29fce715cbeae3ee8e2595e2b /src/modules/px4iofirmware/registers.c
parent828163f2f5c6b68d9f262b1dd4f57e641c1d45a6 (diff)
downloadpx4-firmware-300705321a0ffa79ab3d4d53e3c029fe8238086a.tar.gz
px4-firmware-300705321a0ffa79ab3d4d53e3c029fe8238086a.tar.bz2
px4-firmware-300705321a0ffa79ab3d4d53e3c029fe8238086a.zip
Allow IO safety off system handling as long as the total system is not live
Diffstat (limited to 'src/modules/px4iofirmware/registers.c')
-rw-r--r--src/modules/px4iofirmware/registers.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c
index fbfdd35db..a1a02965f 100644
--- a/src/modules/px4iofirmware/registers.c
+++ b/src/modules/px4iofirmware/registers.c
@@ -407,10 +407,11 @@ registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num
/* handle text going to the mixer parser */
case PX4IO_PAGE_MIXERLOAD:
- if (!(r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) ||
- (r_status_flags & PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED)) {
- return mixer_handle_text(values, num_values * sizeof(*values));
- }
+ /* do not change the mixer if FMU is armed and IO's safety is off
+ * this state defines an active system. This check is done in the
+ * text handling function.
+ */
+ return mixer_handle_text(values, num_values * sizeof(*values));
break;
default:
@@ -583,8 +584,10 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
break;
case PX4IO_P_SETUP_REBOOT_BL:
- if ((r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) ||
- (r_status_flags & PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED)) {
+ // do not reboot if FMU is armed and IO's safety is off
+ // this state defines an active system.
+ if ((r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) &&
+ (r_status_flags & PX4IO_P_SETUP_ARMING_FMU_ARMED)) {
// don't allow reboot while armed
break;
}
@@ -631,9 +634,11 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
/**
* do not allow a RC config change while outputs armed
+ * = FMU is armed and IO's safety is off
+ * this state defines an active system.
*/
- if ((r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) ||
- (r_status_flags & PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED)) {
+ if ((r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) &&
+ (r_status_flags & PX4IO_P_SETUP_ARMING_FMU_ARMED)) {
break;
}