aboutsummaryrefslogtreecommitdiff
path: root/apps/px4io
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-02-13 07:43:51 +0100
committerLorenz Meier <lm@inf.ethz.ch>2013-02-13 08:38:31 +0100
commit4595cc65b8bd30ba084783660a541c57c3921dbb (patch)
treec9d74ddef6e420247beb9fae6582644e76766cb8 /apps/px4io
parentd4ca6a29a19c96d359aa1458a4e6f3d9c86b01ac (diff)
downloadpx4-firmware-4595cc65b8bd30ba084783660a541c57c3921dbb.tar.gz
px4-firmware-4595cc65b8bd30ba084783660a541c57c3921dbb.tar.bz2
px4-firmware-4595cc65b8bd30ba084783660a541c57c3921dbb.zip
Reworked manual override flag, reworked arming slightly. Pending testing
Diffstat (limited to 'apps/px4io')
-rw-r--r--apps/px4io/controls.c14
-rw-r--r--apps/px4io/protocol.h5
-rw-r--r--apps/px4io/registers.c8
3 files changed, 9 insertions, 18 deletions
diff --git a/apps/px4io/controls.c b/apps/px4io/controls.c
index 8cd5235b7..b4a18bae6 100644
--- a/apps/px4io/controls.c
+++ b/apps/px4io/controls.c
@@ -245,11 +245,12 @@ controls_main(void)
/*
* Check for manual override.
*
- * The OVERRIDE_OK feature must be set, and we must have R/C input.
+ * The PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK flag must be set, and we
+ * must have R/C input.
* Override is enabled if either the hardcoded channel / value combination
* is selected, or the AP has requested it.
*/
- if ((r_setup_features & PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK) &&
+ if ((r_setup_arming & PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK) &&
(r_status_flags & PX4IO_P_STATUS_FLAGS_RC_OK)) {
bool override = false;
@@ -260,14 +261,7 @@ controls_main(void)
*
* XXX This should be configurable.
*/
- if ((r_rc_valid & (1 << 4)) && (r_rc_values[4] > RC_CHANNEL_HIGH_THRESH))
- override = true;
-
- /*
- * Check for an explicit manual override request from the AP.
- */
- if ((r_status_flags & PX4IO_P_STATUS_FLAGS_FMU_OK) &&
- (r_setup_arming & PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE))
+ if ((r_status_flags & PX4IO_P_STATUS_FLAGS_RC_OK) && (r_rc_values[4] > RC_CHANNEL_HIGH_THRESH))
override = true;
if (override) {
diff --git a/apps/px4io/protocol.h b/apps/px4io/protocol.h
index 6278e05d4..29a287e45 100644
--- a/apps/px4io/protocol.h
+++ b/apps/px4io/protocol.h
@@ -136,12 +136,11 @@
/* setup page */
#define PX4IO_PAGE_SETUP 100
#define PX4IO_P_SETUP_FEATURES 0
-#define PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK (1 << 0) /* OK to switch to manual override */
#define PX4IO_P_SETUP_ARMING 1 /* arming controls */
#define PX4IO_P_SETUP_ARMING_ARM_OK (1 << 0) /* OK to arm */
-#define PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE (1 << 2) /* request switch to manual override */
-#define PX4IO_P_SETUP_ARMING_VECTOR_FLIGHT_OK (1 << 3)
+#define PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK (1 << 2) /* OK to switch to manual override via override RC channel */
+#define PX4IO_P_SETUP_ARMING_VECTOR_FLIGHT_OK (1 << 3) /* OK to perform position / vector control (= position lock) */
#define PX4IO_P_SETUP_PWM_RATES 2 /* bitmask, 0 = low rate, 1 = high rate */
#define PX4IO_P_SETUP_PWM_LOWRATE 3 /* 'low' PWM frame output rate in Hz */
diff --git a/apps/px4io/registers.c b/apps/px4io/registers.c
index 815563daa..6229a6cc1 100644
--- a/apps/px4io/registers.c
+++ b/apps/px4io/registers.c
@@ -140,9 +140,9 @@ volatile uint16_t r_page_setup[] =
[PX4IO_P_SETUP_IBATT_BIAS] = 0
};
-#define PX4IO_P_SETUP_FEATURES_VALID (PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK)
+#define PX4IO_P_SETUP_FEATURES_VALID (0)
#define PX4IO_P_SETUP_ARMING_VALID (PX4IO_P_SETUP_ARMING_ARM_OK | \
- PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE)
+ PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK)
#define PX4IO_P_SETUP_RATES_VALID ((1 << IO_SERVO_COUNT) - 1)
#define PX4IO_P_SETUP_RELAYS_VALID ((1 << PX4IO_RELAY_CHANNELS) - 1)
@@ -283,9 +283,7 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
value &= PX4IO_P_SETUP_FEATURES_VALID;
r_setup_features = value;
- /* update manual override state - disable if no longer OK */
- if ((r_status_flags & PX4IO_P_STATUS_FLAGS_OVERRIDE) && !(value & PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK))
- r_status_flags &= ~PX4IO_P_STATUS_FLAGS_OVERRIDE;
+ /* no implemented feature selection at this point */
break;