summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2020-02-01 23:37:56 -0800
committerCommit Bot <commit-bot@chromium.org>2020-02-12 18:22:38 +0000
commit5c3bc0d02523850b0c8ef82cc16e6f8c27ab3229 (patch)
treed624bec72f92b48634dfbeb9418e61c7de4483ff
parentb56a56eaba32f4d7d06750ffb3aed3f6e69b0d42 (diff)
downloadchrome-ec-stabilize-12871.24.B-master.tar.gz
Sensors add offset to raw value. kaza_compute calculate the bias (the hard iron) and it has to be remove from the raw value. Invert the vector in magnetometer calibration code. Fixes: 994af4a65fa7e ("common: mag_cal: update magnetometer to leverage kasa") BUG=b:144027014,b:149116125 BRANCH=none TEST=Check that after successful online calibration, value reported to the host are closer to 0 than before calibration. Change-Id: I6cfd711c82287b1c877912e85d84d2725b063cb2 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2034675 Reviewed-by: Yuval Peress <peress@chromium.org> (cherry picked from commit d60a962c3a4907d2f18c236015aef7b989e1d384) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2051100 Tested-by: Yuval Peress <peress@chromium.org> Auto-Submit: Yuval Peress <peress@chromium.org>
-rw-r--r--common/mag_cal.c6
-rw-r--r--test/mag_cal.c12
2 files changed, 9 insertions, 9 deletions
diff --git a/common/mag_cal.c b/common/mag_cal.c
index 1dc40e34db..f7b1945933 100644
--- a/common/mag_cal.c
+++ b/common/mag_cal.c
@@ -132,9 +132,9 @@ int mag_cal_update(struct mag_cal_t *moc, const intv3_t v)
/* 4. Kasa sphere fitting */
kasa_compute(&moc->kasa_fit, bias, &radius);
if (radius > MIN_FIT_MAG && radius < MAX_FIT_MAG) {
- moc->bias[X] = FP_TO_INT(bias[X]);
- moc->bias[Y] = FP_TO_INT(bias[Y]);
- moc->bias[Z] = FP_TO_INT(bias[Z]);
+ moc->bias[X] = -FP_TO_INT(bias[X]);
+ moc->bias[Y] = -FP_TO_INT(bias[Y]);
+ moc->bias[Z] = -FP_TO_INT(bias[Z]);
moc->radius = radius;
diff --git a/test/mag_cal.c b/test/mag_cal.c
index e1931c352a..65ffa13d8f 100644
--- a/test/mag_cal.c
+++ b/test/mag_cal.c
@@ -62,9 +62,9 @@ static int test_mag_cal_computes_bias(void)
/* Add the final sample and check calibration. */
TEST_EQ(1, mag_cal_update(&cal, samples[cal.batch_size - 1]), "%d");
TEST_EQ(525, FP_TO_INT(cal.radius), "%d");
- TEST_EQ(-1, cal.bias[0], "%d");
- TEST_EQ(1, cal.bias[1], "%d");
- TEST_EQ(-2, cal.bias[2], "%d");
+ TEST_EQ(1, cal.bias[0], "%d");
+ TEST_EQ(-1, cal.bias[1], "%d");
+ TEST_EQ(2, cal.bias[2], "%d");
/*
* State should have reset, run the same code again to verify that
@@ -74,9 +74,9 @@ static int test_mag_cal_computes_bias(void)
TEST_EQ(0, mag_cal_update(&cal, samples[i]), "%d");
TEST_EQ(1, mag_cal_update(&cal, samples[cal.batch_size - 1]), "%d");
TEST_EQ(525, FP_TO_INT(cal.radius), "%d");
- TEST_EQ(-1, cal.bias[0], "%d");
- TEST_EQ(1, cal.bias[1], "%d");
- TEST_EQ(-2, cal.bias[2], "%d");
+ TEST_EQ(1, cal.bias[0], "%d");
+ TEST_EQ(-1, cal.bias[1], "%d");
+ TEST_EQ(2, cal.bias[2], "%d");
return EC_SUCCESS;
}