Decodes POCSAG.
34 def decode(data):
35 r"""!Decodes POCSAG
36
37 @param data: POCSAG for decoding
38 @return BOSWatch POCSAG packet or None"""
39 bitrate, ric, subric = PocsagDecoder._getBitrateRicSubric(data)
40
41
42 if subric is None:
43 logging.warning("Invalid POCSAG function (not 0–3)")
44 return None
45
46 if ric and len(ric) == 7:
47 if "Alpha:" in data:
48 message = data.split('Alpha:')[1].strip()
49 message = re.sub(r'<\s*(?:NUL|EOT)\s*>?', '', message).strip()
50 else:
51 message = ""
52 subricText = subric.replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d")
53
54 logging.debug("found valid POCSAG")
55
56 bwPacket = Packet()
57 bwPacket.set("mode", "pocsag")
58 bwPacket.set("bitrate", bitrate)
59 bwPacket.set("ric", ric)
60 bwPacket.set("subric", subric)
61 bwPacket.set("subricText", subricText)
62 bwPacket.set("message", message)
63
64 return bwPacket
65
66 logging.warning("no valid POCSAG")
67 return None
68