diff options
author | Randall Spangler <rspangler@chromium.org> | 2015-01-28 15:23:55 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-05 19:41:41 +0000 |
commit | fd6a6900f786d47fc5364f9013356a741da5c113 (patch) | |
tree | b701989e3564488dceb5ef965a1123aad22adcb9 /include/motion_lid.h | |
parent | df28140cc81bc87b4a278a2876db2c52158996c6 (diff) | |
download | chrome-ec-fd6a6900f786d47fc5364f9013356a741da5c113.tar.gz |
Convert motion sense calculations to fixed point.
Motion sense calculations do not require huge amounts of precision, so
fixed point is plenty accurate. And fixed point works on Cortex-M0,
which lacks a FPU.
BUG=chrome-os-partner:36126
BRANCH=minnie (samus already works with the FPU, but could grab this if we
want additional testing)
TEST=manual
1. Boot system
2. At EC console: accelinfo on 250
3. Move lid through several different angles (30 degrees to max open) and
see that it updates correctly and relatively smoothly. A few degrees
of angle jitter is normal.
4. At several angles, rotate the chromebook around and see that the lid
angle remains relatively stable.
5. If the hinge is made normal to the ground (or within 15 degrees of
vertical), the angle should read 500, since the acceleration vectors
don't yield good results in that orientation (for either fixed or float
math).
And run 'make buildall -j', which tests arc_cos() and lid angle calculations
Change-Id: I70a0d08b8914629a3e21ae5578cbe8e50f29ad68
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/244116
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'include/motion_lid.h')
-rw-r--r-- | include/motion_lid.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/motion_lid.h b/include/motion_lid.h index b3348c020e..8ccf27191e 100644 --- a/include/motion_lid.h +++ b/include/motion_lid.h @@ -3,13 +3,13 @@ * found in the LICENSE file. */ -/* Header for motion_sense.c */ +/* Header for motion_lid.h */ #ifndef __CROS_EC_MOTION_LID_H #define __CROS_EC_MOTION_LID_H /* Anything outside of lid angle range [-180, 180] should work. */ -#define LID_ANGLE_UNRELIABLE 500.0F +#define LID_ANGLE_UNRELIABLE 500 /** * This structure defines all of the data needed to specify the orientation @@ -37,7 +37,8 @@ extern const struct accel_orientation acc_orient; * Get last calculated lid angle. Note, the lid angle calculated by the EC * is un-calibrated and is an approximate angle. * - * @return lid angle in degrees in range [0, 360]. + * @return lid angle in degrees in range [0, 360], or LID_ANGLE_UNRELIABLE + * if the lid angle can't be determined. */ int motion_lid_get_angle(void); |