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