From 5458b87913d7d381331ec0a0010b3144469bf629 Mon Sep 17 00:00:00 2001 From: Thomas Schalch Date: Thu, 8 Oct 2026 08:49:30 +0200 Subject: [PATCH 1/2] Add failing test for unpacking data --- tests/test_pack_unpack.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_pack_unpack.py b/tests/test_pack_unpack.py index 1905cd9..a917b19 100644 --- a/tests/test_pack_unpack.py +++ b/tests/test_pack_unpack.py @@ -52,7 +52,10 @@ def test_unpack(rx: RxData, data): @pytest.mark.parametrize("rx, data", [(RxData(">HH"), (0xABCD, 1234)), (RxData(">HH8B"), (0xABCD, 1234, (1, 2, 3, 4, 5, 6, 7, 8))), - (RxData(">I16s"), (0xABCD, 'hello world'))]) + (RxData(">I16s"), (0xABCD, 'hello world')), + (RxData(">I8BHHH"), (0x0803028D, + (0x32, 0x32, 0x32, 0x38, 0x42, 0x44, 0x00, 0x00), + 0x0C10, 0x1121, 0x0054))]) def test_dynamic_unpack(rx: RxData, data): to_pack = [] for d in data: From 254bbcfeede7269422640b48a316978362cffcb6 Mon Sep 17 00:00:00 2001 From: Thomas Schalch Date: Thu, 8 Oct 2026 08:49:53 +0200 Subject: [PATCH 2/2] Fix unpacking received data from the sensor --- sensirion_driver_adapters/rx_tx_data.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sensirion_driver_adapters/rx_tx_data.py b/sensirion_driver_adapters/rx_tx_data.py index 2f731c5..6a82a27 100644 --- a/sensirion_driver_adapters/rx_tx_data.py +++ b/sensirion_driver_adapters/rx_tx_data.py @@ -162,9 +162,10 @@ def unpack_dynamic_sized(self, data): elif is_string: # a string val = val[0].decode() unpacked.append(val) + data_pos += field_len else: descriptor = f"{byte_order_specifier} {descriptor}" unpacked.extend(struct.unpack_from(descriptor, data, data_pos)) - data_pos += elem_size + data_pos += elem_size match = self.field_match.match(self._descriptor, descriptor_pos) return tuple(unpacked)