From 44dcfb1e509682ba9fc1fd09f995c36ab9145e12 Mon Sep 17 00:00:00 2001
From: Federico Mandelli <federicomandelli@skywarder.eu>
Date: Sat, 24 Jun 2023 17:22:58 +0200
Subject: [PATCH] [lis3mdl] Fixed casting bug

---
 src/shared/sensors/LIS3MDL/LIS3MDL.cpp | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/shared/sensors/LIS3MDL/LIS3MDL.cpp b/src/shared/sensors/LIS3MDL/LIS3MDL.cpp
index 91d8f42ef..23ba605df 100644
--- a/src/shared/sensors/LIS3MDL/LIS3MDL.cpp
+++ b/src/shared/sensors/LIS3MDL/LIS3MDL.cpp
@@ -219,8 +219,8 @@ LIS3MDLData LIS3MDL::sampleImpl()
         tempCounter % configuration.temperatureDivider == 0)
     {
         val = spi.readRegister(TEMP_OUT_H);
-        val = val << 8;
-        val = spi.readRegister(TEMP_OUT_L);
+        val = (val << 8);
+        val |= spi.readRegister(TEMP_OUT_L);
 
         newData.temperatureTimestamp = TimestampTimer::getTimestamp();
         newData.temperature =
@@ -231,16 +231,19 @@ LIS3MDLData LIS3MDL::sampleImpl()
         newData.temperature = lastSample.temperature;
     }
 
-    val                    = spi.readRegister(OUT_X_H);
-    val                    = (val << 8) | spi.readRegister(OUT_X_L);
+    val = spi.readRegister(OUT_X_H);
+    val = (val << 8);
+    val |= spi.readRegister(OUT_X_L);
     newData.magneticFieldX = currentUnit * val;
 
-    val                    = spi.readRegister(OUT_Y_H);
-    val                    = (val << 8) | spi.readRegister(OUT_Y_L);
+    val = spi.readRegister(OUT_Y_H);
+    val = (val << 8);
+    val |= spi.readRegister(OUT_Y_L);
     newData.magneticFieldY = currentUnit * val;
 
-    val                    = spi.readRegister(OUT_Z_H);
-    val                    = (val << 8) | spi.readRegister(OUT_Z_L);
+    val = spi.readRegister(OUT_Z_H);
+    val = (val << 8);
+    val |= spi.readRegister(OUT_Z_L);
     newData.magneticFieldZ = currentUnit * val;
 
     return newData;
-- 
GitLab