summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-12-20 22:06:52 -0800
committerKeith Packard <keithp@keithp.com>2013-12-20 22:06:52 -0800
commitc8b27410e45cc3d80ad4b896bffe70e9aec5e3aa (patch)
tree4710753f2212ab00ee97f278c5748e1692856679
parent2a912dcde191e2f750845c464611641a5abdc28a (diff)
altos: 3-axis accel calibration was invalid in explicit accel cal mode
When explicit Z-axis accel calibration values were provided to the 'c a' command, the 3-axis accelerometer calibration values would get set to uninitialized values. Not so helpful. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/core/ao_config.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/ao_config.c b/src/core/ao_config.c
index a30ec64a..4a1c58b9 100644
--- a/src/core/ao_config.c
+++ b/src/core/ao_config.c
@@ -353,9 +353,9 @@ ao_config_accel_calibrate_set(void) __reentrant
{
int16_t up, down;
#if HAS_GYRO
- int16_t accel_along_up, accel_along_down;
- int16_t accel_across_up, accel_across_down;
- int16_t accel_through_up, accel_through_down;
+ int16_t accel_along_up = 0, accel_along_down = 0;
+ int16_t accel_across_up = 0, accel_across_down = 0;
+ int16_t accel_through_up = 0, accel_through_down = 0;
#endif
ao_cmd_decimal();
@@ -390,9 +390,11 @@ ao_config_accel_calibrate_set(void) __reentrant
ao_config.accel_plus_g = up;
ao_config.accel_minus_g = down;
#if HAS_GYRO
- ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2;
- ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2;
- ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2;
+ if (ao_cmd_lex_i == 0) {
+ ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2;
+ ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2;
+ ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2;
+ }
#endif
_ao_config_edit_finish();
}