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(