diff --git a/src/meshcore/lpp_json_encoder.py b/src/meshcore/lpp_json_encoder.py index 0ff67f1..8235bc2 100644 --- a/src/meshcore/lpp_json_encoder.py +++ b/src/meshcore/lpp_json_encoder.py @@ -25,7 +25,7 @@ my_lpp_types = { 128: ("power", []), 130: ("distance", []), 131: ("energy", []), - 132: ("direction", None), + 132: ("direction", []), 133: ("time", []), 134: ("gyrometer", None), 135: ("colour", ["red", "green", "blue"]), diff --git a/tests/unit/test_lpp_parsing.py b/tests/unit/test_lpp_parsing.py index ba8c71f..4b322a9 100644 --- a/tests/unit/test_lpp_parsing.py +++ b/tests/unit/test_lpp_parsing.py @@ -37,3 +37,20 @@ class TestLppCurrentParsing: lpp = json.loads(json.dumps(LppFrame([lppdata]), default=lpp_json_encoder)) assert lpp[0]['value'] == 0.5 + + +class TestLppDirectionParsing: + """Tests to verify LPP direction values are encoded as scalars.""" + + def test_direction_value_is_scalar(self): + """A direction value should not be serialized as a one-item list.""" + from meshcore.lpp_json_encoder import lpp_json_encoder + + # Channel 2, Type 132 (direction), 90 degrees = 0x00 0x5A. + raw_bytes = bytes([2, 132, 0x00, 0x5A]) + lppdata = LppData.from_bytes(raw_bytes) + + lpp = json.loads(json.dumps(LppFrame([lppdata]), default=lpp_json_encoder)) + + assert lpp[0]['type'] == 'direction' + assert lpp[0]['value'] == 90.0