summaryrefslogtreecommitdiff
path: root/test/body_detection.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/body_detection.c')
-rw-r--r--test/body_detection.c116
1 files changed, 0 insertions, 116 deletions
diff --git a/test/body_detection.c b/test/body_detection.c
deleted file mode 100644
index aa131f0a31..0000000000
--- a/test/body_detection.c
+++ /dev/null
@@ -1,116 +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.
- *
- * Test body_detection algorithm
- */
-
-#include "accelgyro.h"
-#include "body_detection.h"
-#include "body_detection_test_data.h"
-#include "common.h"
-#include "motion_common.h"
-#include "motion_sense.h"
-#include "test_util.h"
-#include "util.h"
-
-static struct motion_sensor_t *sensor = &motion_sensors[BASE];
-static const int window_size = 50; /* sensor data rate (Hz) */
-
-static int filler(const struct motion_sensor_t *s, const float v)
-{
- int resolution = s->drv->get_resolution(s);
- int data_1g = BIT(resolution - 1) / s->current_range;
-
- return (int)(v * data_1g / 9.8);
-}
-
-static void feed_body_detect_data(const struct body_detect_test_data *array,
- const int idx)
-{
- sensor->xyz[X] = filler(sensor, array[idx].x);
- sensor->xyz[Y] = filler(sensor, array[idx].y);
- sensor->xyz[Z] = filler(sensor, array[idx].z);
-}
-
-static int get_trigger_time(const struct body_detect_test_data *data,
- const size_t size,
- const enum body_detect_states target_state)
-{
- int i, action_index = -1, target_index = -1;
-
- body_detect_reset();
- /*
- * Clear on-body state when the window is initialized, so
- * that we do not need to wait for 15 second if the testcase
- * is in off-body initially.
- */
- body_detect_change_state(BODY_DETECTION_OFF_BODY, false);
- for (i = 0; i < size; ++i) {
- enum body_detect_states motion_state;
-
- if (data[i].action == 1 && action_index == -1) {
- cprints(CC_ACCEL, "action start");
- action_index = i;
- }
- feed_body_detect_data(data, i);
- /* run the body detect */
- body_detect();
- /* skip if action not start yet */
- if (action_index == -1)
- continue;
-
- motion_state = body_detect_get_state();
- if (target_index == -1 && motion_state == target_state)
- target_index = i;
- }
- if (target_index == -1)
- return -1;
- return target_index - action_index;
-}
-
-static int test_body_detect(void)
-{
- int ret, trigger_time;
-
- ret = sensor->drv->set_data_rate(sensor, window_size * 1000, 0);
- TEST_ASSERT(ret == EC_SUCCESS);
-
- body_detect_set_enable(true);
- /* Onbody test */
- cprints(CC_ACCEL, "start OnBody test");
- trigger_time = get_trigger_time(kBodyDetectOnBodyTestData,
- kBodyDetectOnBodyTestDataLength,
- BODY_DETECTION_OFF_BODY);
- /* It should not enter off-body state ever */
- TEST_ASSERT(trigger_time == -1);
-
- /* OffOn test */
- cprints(CC_ACCEL, "start Off to On test");
- trigger_time = get_trigger_time(kBodyDetectOffOnTestData,
- kBodyDetectOffOnTestDataLength,
- BODY_DETECTION_ON_BODY);
- /* It should enter on-body state in 3 seconds */
- TEST_ASSERT(trigger_time >= 0 && trigger_time < 3 * window_size);
-
- /* OnOff test */
- cprints(CC_ACCEL, "start On to Off test");
- trigger_time = get_trigger_time(kBodyDetectOnOffTestData,
- kBodyDetectOnOffTestDataLength,
- BODY_DETECTION_OFF_BODY);
- /* It should enter off-body state between 15 to 20 seconds */
- TEST_ASSERT(15 * window_size <= trigger_time &&
- trigger_time < 20 * window_size);
-
- return EC_SUCCESS;
-}
-
-
-void run_test(int argc, char **argv)
-{
- test_reset();
-
- RUN_TEST(test_body_detect);
-
- test_print_result();
-}