from msg_container import MsgContainer from msg_sink import MsgSink import re class AsciiReceiver(MsgSink): def __init__(self, name: str, filter: str): super().__init__() self.name = name self.filter = filter def is_msg(self, msg: MsgContainer): res = False try: res = re.match(bytes(self.filter, encoding="utf-8"), msg.data) is not None except UnicodeDecodeError: pass return res def on_recv(self, msg: MsgContainer): print(f"{self.name}: {msg}") class NmeaReceiver(AsciiReceiver): def __init__(self, name: str, tid: str, msg_type: str): if tid == "--": AsciiReceiver.__init__(self, name, filter=f"^\\$..{msg_type}.*") else: AsciiReceiver.__init__(self, name, filter=f"^\\${tid}{msg_type}.*")