From 30441f310daabdd4f9f3f6141954e9e2731897af Mon Sep 17 00:00:00 2001 From: Andreas Gattringer <andreas.gattringer@univie.ac.at> Date: Thu, 28 Mar 2024 14:22:01 +0100 Subject: [PATCH] lsp28dfw: repair (use big endian data for temperature) --- umnp/microcontroller/sensors/lps28dfw/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/umnp/microcontroller/sensors/lps28dfw/__init__.py b/umnp/microcontroller/sensors/lps28dfw/__init__.py index 26cd511..2c25063 100644 --- a/umnp/microcontroller/sensors/lps28dfw/__init__.py +++ b/umnp/microcontroller/sensors/lps28dfw/__init__.py @@ -139,12 +139,12 @@ class LPS28DFW: mask = 1 << bit return value & mask - def read_address_to_int(self, address, n_bytes): + def read_address_to_int(self, address, n_bytes, signed: bool = False): data = self.read_address(address, n_bytes) if n_bytes == 1: return int.from_bytes(data, "little") elif n_bytes == 2: - return struct.unpack("<h", data)[0] + return int.from_bytes(data, "big", signed=signed) elif n_bytes == 3: value = struct.unpack("<I", data + "\0")[0] if value & 0x800000: @@ -205,6 +205,6 @@ class LPS28DFW: break await asyncio.sleep(0.01) - temperature = self.read_address_to_int(LPS28DFW_TEMP_OUT_L, 2) + temperature = self.read_address_to_int(LPS28DFW_TEMP_OUT_L, 2, True) temperature = temperature / 100 return temperature -- GitLab