aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-05-16 09:52:46 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-05-16 09:52:46 +0200
commit5ca96631fc02d3826d2ef6274f9da7e12e9fb4a1 (patch)
tree7680e3050be1068546dd0f4db542afb03cfeecc0
parent4fe0027e7a23fdd425479c98f0167adf596d5743 (diff)
downloadpx4-firmware-5ca96631fc02d3826d2ef6274f9da7e12e9fb4a1.tar.gz
px4-firmware-5ca96631fc02d3826d2ef6274f9da7e12e9fb4a1.tar.bz2
px4-firmware-5ca96631fc02d3826d2ef6274f9da7e12e9fb4a1.zip
px4io firmware: Actually accept failsafe values, check their range. Add an error return code for commands that were rejected on reboot and force safety instead of failing silently with an OK value
-rw-r--r--src/modules/px4iofirmware/registers.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c
index fd7c6081f..a43bb65a4 100644
--- a/src/modules/px4iofirmware/registers.c
+++ b/src/modules/px4iofirmware/registers.c
@@ -160,6 +160,9 @@ volatile uint16_t r_page_setup[] =
[PX4IO_P_SETUP_PWM_ALTRATE] = 200,
#ifdef CONFIG_ARCH_BOARD_PX4IO_V1
[PX4IO_P_SETUP_RELAYS] = 0,
+#else
+ /* this is unused, but we will pad it to be safe */
+ [PX4IO_P_SETUP_RELAYS] = 0,
#endif
#ifdef ADC_VSERVO
[PX4IO_P_SETUP_VSERVO_SCALE] = 10000,
@@ -562,12 +565,12 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
if ((r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) ||
(r_status_flags & PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED)) {
// don't allow reboot while armed
- break;
+ return -1;
}
// check the magic value
if (value != PX4IO_REBOOT_BL_MAGIC)
- break;
+ return -1;
// we schedule a reboot rather than rebooting
// immediately to allow the IO board to ACK
@@ -582,6 +585,16 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
case PX4IO_P_SETUP_FORCE_SAFETY_OFF:
if (value == PX4IO_FORCE_SAFETY_MAGIC) {
r_status_flags |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF;
+ } else {
+ return -1;
+ }
+ break;
+
+ case PX4IO_P_SETUP_RC_THR_FAILSAFE_US:
+ if (value > 650 && value < 2350) {
+ r_page_setup[PX4IO_P_SETUP_RC_THR_FAILSAFE_US] = value;
+ } else {
+ return -1;
}
break;