summaryrefslogtreecommitdiff
path: root/src/core/ao_config.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-01-01 21:12:20 -0800
committerKeith Packard <keithp@keithp.com>2014-01-01 21:16:34 -0800
commitc35ea586b9e792c45b287924fd256928308d9a36 (patch)
tree83ceb8eda25fd45a00c8c15cf06488f4de17b66b /src/core/ao_config.c
parentafc16e805145c3e9ab4ba948f9ab1d9aa2b27afb (diff)
altos: Flip acceleration data consistently for orientation changes
Must flip the acceleration calibration data using the same function as flipping the actual acceleration data or the calibration will no longer be valid after changing orientation. For the MMA655x, this means using 4095 in both places, rather than using 0x7fff for the calibration data changes and 4095 for the data value changes. For the MPU6000, this means using 0 in both places. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/core/ao_config.c')
-rw-r--r--src/core/ao_config.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/core/ao_config.c b/src/core/ao_config.c
index 590d8a49..4482f673 100644
--- a/src/core/ao_config.c
+++ b/src/core/ao_config.c
@@ -514,6 +514,10 @@ ao_config_pad_orientation_show(void) __reentrant
printf("Pad orientation: %d\n", ao_config.pad_orientation);
}
+#ifndef AO_ACCEL_INVERT
+#define AO_ACCEL_INVERT 0x7fff
+#endif
+
void
ao_config_pad_orientation_set(void) __reentrant
{
@@ -523,10 +527,10 @@ ao_config_pad_orientation_set(void) __reentrant
_ao_config_edit_start();
ao_cmd_lex_i &= 1;
if (ao_config.pad_orientation != ao_cmd_lex_i) {
- uint16_t t;
+ int16_t t;
t = ao_config.accel_plus_g;
- ao_config.accel_plus_g = 0x7fff - ao_config.accel_minus_g;
- ao_config.accel_minus_g = 0x7fff - t;
+ ao_config.accel_plus_g = AO_ACCEL_INVERT - ao_config.accel_minus_g;
+ ao_config.accel_minus_g = AO_ACCEL_INVERT - t;
}
ao_config.pad_orientation = ao_cmd_lex_i;
_ao_config_edit_finish();