From d753fa71f9776b561f21fdee555355d41e2ac474 Mon Sep 17 00:00:00 2001
From: giovannaloro <giovanni.annaloro@skywarder.eu>
Date: Thu, 23 Jan 2025 22:48:03 +0100
Subject: [PATCH] lm6dsrx loggers adapted to the thread safe SensorFIFO
 implementation

loggings adapted to thread safe SensorFIFO implementation
---
 skyward-boardcore               |  2 +-
 src/Main/Sensors/Sensors.cpp    |  6 ++++--
 src/Motor/Sensors/Sensors.cpp   |  7 +++++--
 src/Payload/Sensors/Sensors.cpp | 10 +++++-----
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/skyward-boardcore b/skyward-boardcore
index 93254875b..9eb183f43 160000
--- a/skyward-boardcore
+++ b/skyward-boardcore
@@ -1 +1 @@
-Subproject commit 93254875ba79c70c4e1b4fb1b144a8b117337abf
+Subproject commit 9eb183f438306cb9e3e1c9d90c3ec5c095484239
diff --git a/src/Main/Sensors/Sensors.cpp b/src/Main/Sensors/Sensors.cpp
index d8dd731aa..9a86955e5 100644
--- a/src/Main/Sensors/Sensors.cpp
+++ b/src/Main/Sensors/Sensors.cpp
@@ -625,8 +625,10 @@ void Sensors::lsm6dsrxCallback()
         return;
 
     // For every instance inside the fifo log the sample
-    for (uint16_t i = 0; i < lsm6dsrx->getLastFifoSize(); i++)
-        sdLogger.log(lsm6dsrx->getLastFifo().at(i));
+    uint16_t lastFifoSize;
+    const auto lastFifo = lsm6dsrx->getLastFifo(lastFifoSize);
+    for (uint16_t i = 0; i < lastFifoSize; i++)
+        sdLogger.log(lastFifo.at(i));
 }
 
 void Sensors::vn100Init()
diff --git a/src/Motor/Sensors/Sensors.cpp b/src/Motor/Sensors/Sensors.cpp
index 5d8ed74e4..c930178ca 100644
--- a/src/Motor/Sensors/Sensors.cpp
+++ b/src/Motor/Sensors/Sensors.cpp
@@ -259,9 +259,12 @@ void Sensors::lsm6dsrxCallback()
     if (!lsm6dsrx)
         return;
 
+    uint16_t lastFifoSize;
+    const auto lastFifo = lsm6dsrx->getLastFifo(lastFifoSize);
+
     // For every instance inside the fifo log the sample
-    for (uint16_t i = 0; i < lsm6dsrx->getLastFifoSize(); i++)
-        sdLogger.log(lsm6dsrx->getLastFifo().at(i));
+    for (uint16_t i = 0; i < lastFifoSize; i++)
+        sdLogger.log(lastFifo.at(i));
 }
 
 void Sensors::ads131m08Init()
diff --git a/src/Payload/Sensors/Sensors.cpp b/src/Payload/Sensors/Sensors.cpp
index c763eaddb..0adc003da 100644
--- a/src/Payload/Sensors/Sensors.cpp
+++ b/src/Payload/Sensors/Sensors.cpp
@@ -541,13 +541,13 @@ void Sensors::lsm6dsrxCallback()
         return;
 
     // We can skip logging the last sample since we are logging the fifo
-    auto& logger  = Logger::getInstance();
-    auto& fifo    = lsm6dsrx->getLastFifo();
-    auto fifoSize = lsm6dsrx->getLastFifoSize();
+    auto& logger = Logger::getInstance();
+    uint16_t lastFifoSize;
+    const auto lastFifo = lsm6dsrx->getLastFifo(lastFifoSize);
 
     // For every instance inside the fifo log the sample
-    for (auto i = 0; i < fifoSize; i++)
-        logger.log(fifo.at(i));
+    for (uint16_t i = 0; i < lastFifoSize; i++)
+        logger.log(lastFifo.at(i));
 }
 
 void Sensors::ads131m08Init()
-- 
GitLab