summaryrefslogtreecommitdiff
path: root/src/kernel
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-08-28 00:15:43 -0700
committerKeith Packard <keithp@keithp.com>2017-08-28 00:22:43 -0700
commit4775b1d9b50a8732d66a0ad3b73ff74901a8cb7f (patch)
tree64e3bb83512bee2a2153aa7693c928d50fc135e2 /src/kernel
parentdacd4c70700041a018b1f8ba47f22071b9600eaf (diff)
altos: Don't compute filtered average of height error when HAS_ACCEL
We only use this for baro-only devices to avoid firing drogue charges at mach transitions; we trust the combination of accel+baro to do the right thing when available. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/ao_kalman.c6
-rw-r--r--src/kernel/ao_sample.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/src/kernel/ao_kalman.c b/src/kernel/ao_kalman.c
index 82315c48..ac41085d 100644
--- a/src/kernel/ao_kalman.c
+++ b/src/kernel/ao_kalman.c
@@ -45,7 +45,9 @@ static __pdata ao_k_t ao_avg_height_scaled;
__xdata ao_v_t ao_avg_height;
__pdata ao_v_t ao_error_h;
+#if !HAS_ACCEL
__pdata ao_v_t ao_error_h_sq_avg;
+#endif
#if HAS_ACCEL
__pdata ao_v_t ao_error_a;
@@ -83,7 +85,9 @@ ao_kalman_predict(void)
static void
ao_kalman_err_height(void)
{
+#if !HAS_ACCEL
ao_v_t e;
+#endif
ao_v_t height_distrust;
#if HAS_ACCEL
ao_v_t speed_distrust;
@@ -91,6 +95,7 @@ ao_kalman_err_height(void)
ao_error_h = ao_sample_height - (ao_v_t) (ao_k_height >> 16);
+#if !HAS_ACCEL
e = ao_error_h;
if (e < 0)
e = -e;
@@ -98,6 +103,7 @@ ao_kalman_err_height(void)
e = 127;
ao_error_h_sq_avg -= ao_error_h_sq_avg >> 4;
ao_error_h_sq_avg += (e * e) >> 4;
+#endif
if (ao_flight_state >= ao_flight_drogue)
return;
diff --git a/src/kernel/ao_sample.h b/src/kernel/ao_sample.h
index f89d6a4c..fbef031d 100644
--- a/src/kernel/ao_sample.h
+++ b/src/kernel/ao_sample.h
@@ -180,7 +180,9 @@ extern __xdata ao_v_t ao_max_height; /* max of ao_height */
extern __xdata ao_v_t ao_avg_height; /* running average of height */
extern __pdata ao_v_t ao_error_h;
+#if !HAS_ACCEL
extern __pdata ao_v_t ao_error_h_sq_avg;
+#endif
#if HAS_ACCEL
extern __pdata ao_v_t ao_error_a;