From 2c373f50b725e0b55f46b7114175cc1e0fb7c413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sat, 19 Sep 2026 00:43:58 +0300 Subject: [PATCH] Show Location Status value in EVENT DOWNLOAD list summaries - _build_summary: fold cmd.location_status (Normal/Limited/No service) into the 'Location status' event entry, e.g. 'Location status: Normal service' (the detail view already showed it) - tests: summary assertions for the Normal/No-service vectors - Backend-only, no version bump --- simtrace2_pysniff/server/decode.py | 12 ++++++++++-- tests/test_decode.py | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/simtrace2_pysniff/server/decode.py b/simtrace2_pysniff/server/decode.py index a41674d..928a889 100644 --- a/simtrace2_pysniff/server/decode.py +++ b/simtrace2_pysniff/server/decode.py @@ -3746,8 +3746,16 @@ def _build_summary(result): parts.append(f"SMSC {cmd['smsc']}") if cmd.get('tp_da'): parts.append(f"DA {cmd['tp_da']}") - if cmd.get('events'): - parts.append(', '.join(cmd['events'])) + events = list(cmd.get('events') or []) + status = cmd.get('location_status') + if status and 'Location status' in events: + # Fold the decoded Location Status value into its event entry + # (Normal service / Limited service / No service). + events[events.index('Location status')] = f'Location status: {status}' + elif status: + events.append(f'Location status: {status}') + if events: + parts.append(', '.join(events)) if cmd.get('address'): parts.append(f"to {cmd['address']}") duration = cmd.get('duration') diff --git a/tests/test_decode.py b/tests/test_decode.py index 4178467..f92f968 100644 --- a/tests/test_decode.py +++ b/tests/test_decode.py @@ -474,12 +474,14 @@ class TestEventDownload(unittest.TestCase): self.assertEqual(cmd['type'], 'EVENT DOWNLOAD') self.assertEqual(cmd['events'], ['Location status']) self.assertEqual(cmd['location_status'], 'Normal service') + self.assertEqual(r['summary'], 'Location status: Normal service') def test_event_no_service(self): r = decode_message(bytes.fromhex( '80C200000CD60A190103020282811B01029000')) self.assertEqual(r['cmd']['events'], ['Location status']) self.assertEqual(r['cmd']['location_status'], 'No service') + self.assertEqual(r['summary'], 'Location status: No service') def test_location_status_with_info(self): r = decode_message(bytes.fromhex(