from msg_container import MsgContainer from msg_listener import MsgListener from msg_talker import MsgTalker from struct import pack class NmeaPacketizer(MsgListener, MsgTalker): def __init__(self): MsgListener.__init__(self) MsgTalker.__init__(self) self.packet = b'' self.wait_sync = True def on_recv(self, msg: MsgContainer): name = msg.name data = msg.data for n in range (len(data)): d = data[n] if d == 13 or d == 10: timestamp = msg.timestamp self.wait_sync = False if len(self.packet) > 0: self.call_listener(MsgContainer(name, timestamp, self.packet)) self.wait_sync = True self.packet = b'' elif not self.wait_sync: self.packet += pack('B', d) def is_msg(self, msg: MsgContainer): return True