summaryrefslogtreecommitdiff
path: root/test/accel_cal.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/accel_cal.c')
-rw-r--r--test/accel_cal.c143
1 files changed, 0 insertions, 143 deletions
diff --git a/test/accel_cal.c b/test/accel_cal.c
deleted file mode 100644
index de46822711..0000000000
--- a/test/accel_cal.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "common.h"
-#include "accel_cal.h"
-#include "test_util.h"
-#include "motion_sense.h"
-#include <math.h>
-
-struct motion_sensor_t motion_sensors[] = {};
-const unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors);
-
-struct accel_cal_algo algos[2] = {
- {
- .newton_fit = NEWTON_FIT(8, 1, 0.01f, 0.25f, 1.0e-8f, 100),
- },
- {
- .newton_fit = NEWTON_FIT(8, 1, 0.01f, 0.25f, 1.0e-8f, 100),
- }
-};
-
-struct accel_cal cal = {
- .still_det = STILL_DET(0.00025f, 800 * MSEC, 1200 * MSEC, 5),
- .algos = algos,
- .num_temp_windows = ARRAY_SIZE(algos),
-};
-
-static bool accumulate(float x, float y, float z, float temperature)
-{
- return accel_cal_accumulate(&cal, 0, x, y, z, temperature)
- | accel_cal_accumulate(&cal, 200 * MSEC, x, y, z, temperature)
- | accel_cal_accumulate(&cal, 400 * MSEC, x, y, z, temperature)
- | accel_cal_accumulate(&cal, 600 * MSEC, x, y, z, temperature)
- | accel_cal_accumulate(&cal, 800 * MSEC, x, y, z, temperature)
- | accel_cal_accumulate(&cal, 1000 * MSEC, x, y, z, temperature);
-}
-
-DECLARE_EC_TEST(test_calibrated_correctly_with_kasa)
-{
- bool has_bias;
-
- accumulate(1.01f, 0.01f, 0.01f, 21.0f);
- accumulate(-0.99f, 0.01f, 0.01f, 21.0f);
- accumulate(0.01f, 1.01f, 0.01f, 21.0f);
- accumulate(0.01f, -0.99f, 0.01f, 21.0f);
- accumulate(0.01f, 0.01f, 1.01f, 21.0f);
- accumulate(0.01f, 0.01f, -0.99f, 21.0f);
- accumulate(0.7171f, 0.7171f, 0.7171f, 21.0f);
- has_bias = accumulate(-0.6971f, -0.6971f, -0.6971f, 21.0f);
-
- zassert_true(has_bias, NULL);
- zassert_within(cal.bias[X], 0.01f, 0.0001f, "%f", cal.bias[X]);
- zassert_within(cal.bias[Y], 0.01f, 0.0001f, "%f", cal.bias[Y]);
- zassert_within(cal.bias[Z], 0.01f, 0.0001f, "%f", cal.bias[Z]);
-
- return EC_SUCCESS;
-}
-
-DECLARE_EC_TEST(test_calibrated_correctly_with_newton)
-{
- bool has_bias = false;
- struct kasa_fit kasa;
- fpv3_t kasa_bias;
- float kasa_radius;
- int i;
- float data[] = {
- 1.00290f, 0.09170f, 0.09649f,
- 0.95183f, 0.23626f, 0.25853f,
- 0.95023f, 0.15387f, 0.31865f,
- 0.97374f, 0.01639f, 0.27675f,
- 0.88521f, 0.30212f, 0.39558f,
- 0.92787f, 0.35157f, 0.21209f,
- 0.95162f, 0.33173f, 0.10924f,
- 0.98397f, 0.22644f, 0.07737f,
- };
-
- kasa_reset(&kasa);
- for (i = 0; i < ARRAY_SIZE(data); i += 3) {
- zassert_false(has_bias, NULL);
- kasa_accumulate(&kasa, data[i], data[i + 1], data[i + 2]);
- has_bias = accumulate(data[i], data[i + 1], data[i + 2], 21.0f);
- }
-
- kasa_compute(&kasa, kasa_bias, &kasa_radius);
- zassert_true(has_bias, NULL);
- /* Check that the bias is right */
- zassert_within(cal.bias[X], 0.01f, 0.001f, "%f", cal.bias[X]);
- zassert_within(cal.bias[Y], 0.01f, 0.001f, "%f", cal.bias[Y]);
- zassert_within(cal.bias[Z], 0.01f, 0.001f, "%f", cal.bias[Z]);
- /* Demonstrate that we got a better bias compared to kasa */
- zassert_true(sqrtf(powf(cal.bias[X] - 0.01f, 2.0f) +
- powf(cal.bias[Y] - 0.01f, 2.0f) +
- powf(cal.bias[Z] - 0.01f, 2.0f)) <
- sqrtf(powf(kasa_bias[X] - 0.01f, 2.0f) +
- powf(kasa_bias[Y] - 0.01f, 2.0f) +
- powf(kasa_bias[Z] - 0.01f, 2.0f)),
- NULL);
-
- return EC_SUCCESS;
-}
-
-DECLARE_EC_TEST(test_temperature_gates)
-{
- bool has_bias;
-
- accumulate(1.01f, 0.01f, 0.01f, 21.0f);
- accumulate(-0.99f, 0.01f, 0.01f, 21.0f);
- accumulate(0.01f, 1.01f, 0.01f, 21.0f);
- accumulate(0.01f, -0.99f, 0.01f, 21.0f);
- accumulate(0.01f, 0.01f, 1.01f, 21.0f);
- accumulate(0.01f, 0.01f, -0.99f, 21.0f);
- accumulate(0.7171f, 0.7171f, 0.7171f, 21.0f);
- has_bias = accumulate(-0.6971f, -0.6971f, -0.6971f, 31.0f);
-
- zassert_false(has_bias, NULL);
-
- return EC_SUCCESS;
-}
-
-void before_test(void)
-{
- cal.still_det = STILL_DET(0.00025f, 800 * MSEC, 1200 * MSEC, 5);
- accel_cal_reset(&cal);
-}
-
-void after_test(void) {}
-
-TEST_MAIN()
-{
- ztest_test_suite(test_accel_cal,
- ztest_unit_test_setup_teardown(
- test_calibrated_correctly_with_kasa,
- before_test, after_test),
- ztest_unit_test_setup_teardown(
- test_calibrated_correctly_with_newton,
- before_test, after_test),
- ztest_unit_test_setup_teardown(test_temperature_gates,
- before_test,
- after_test));
- ztest_run_test_suite(test_accel_cal);
-}