summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/motion_sense_fifo.c6
-rw-r--r--test/motion_sense_fifo.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/common/motion_sense_fifo.c b/common/motion_sense_fifo.c
index 2325de4c87..0ecfff95d6 100644
--- a/common/motion_sense_fifo.c
+++ b/common/motion_sense_fifo.c
@@ -533,6 +533,12 @@ commit_data_end:
/* Reset metadata for next staging cycle. */
memset(&fifo_staged, 0, sizeof(fifo_staged));
+ /*
+ * Reset the initialized bits. This will allow new timestamps to be
+ * considered as the new "source of truth".
+ */
+ next_timestamp_initialized = 0;
+
mutex_unlock(&g_sensor_mutex);
}
diff --git a/test/motion_sense_fifo.c b/test/motion_sense_fifo.c
index 09d3404032..c234e29eee 100644
--- a/test/motion_sense_fifo.c
+++ b/test/motion_sense_fifo.c
@@ -295,6 +295,12 @@ static int test_spread_double_commit_same_timestamp(void)
const uint32_t now = __hw_clock_source_read();
int read_count;
+ /*
+ * Stage and commit the same sample. This is not expected to happen
+ * since batches of sensor samples should be staged together and only
+ * commit once. We assume that the driver did this on purpose and will
+ * allow the same timestamp to be sent.
+ */
motion_sensors[0].oversampling_ratio = 1;
motion_sensors[0].collection_rate = 20000; /* ns */
motion_sense_fifo_stage_data(data, motion_sensors, 3, now - 20500);
@@ -308,8 +314,7 @@ static int test_spread_double_commit_same_timestamp(void)
TEST_BITS_SET(data[0].flags, MOTIONSENSE_SENSOR_FLAG_TIMESTAMP);
TEST_EQ(data[0].timestamp, now - 20500, "%u");
TEST_BITS_SET(data[2].flags, MOTIONSENSE_SENSOR_FLAG_TIMESTAMP);
- TEST_GT(time_until(now - 20500, data[2].timestamp), 10000, "%u");
- TEST_LE(time_until(now - 20500, data[2].timestamp), 20000, "%u");
+ TEST_EQ(data[2].timestamp, now - 20500, "%u");
return EC_SUCCESS;
}