From 1c056d1965b7c471ef1ad5117ece8e4fdbf6666f Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Sat, 3 Aug 2019 17:19:10 +0200
Subject: [PATCH] fix(bhi160): Fix FIFO parsing algorithm

FIFO parsing would parse certain packets late because of an incorrect
assumption about FIFO-internals.

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/modules/bhi.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/epicardium/modules/bhi.c b/epicardium/modules/bhi.c
index e824f70d..a0b9c0ed 100644
--- a/epicardium/modules/bhi.c
+++ b/epicardium/modules/bhi.c
@@ -257,12 +257,7 @@ static int bhi160_fetch_fifo(void)
 		/* Handle all full packets received in this transfer */
 		uint8_t *fifo_ptr   = bhi160_fifo;
 		uint16_t bytes_left = bytes_read;
-		while (ret == BHY_SUCCESS &&
-		       bytes_left > sizeof(bhy_data_generic_t)) {
-			/*
-			 * TODO: sizeof(bhy_data_generic_t) is probably
-			 * incorrect and makes some measurements arrive late.
-			 */
+		while (bytes_left > 0) {
 			bhy_data_generic_t sensor_data;
 			bhy_data_type_t data_type;
 			ret = bhy_parse_next_fifo_packet(
@@ -274,6 +269,8 @@ static int bhi160_fetch_fifo(void)
 
 			if (ret == BHY_SUCCESS) {
 				bhi160_handle_packet(data_type, &sensor_data);
+			} else {
+				break;
 			}
 		}
 
-- 
GitLab