def parse_fifo(self): if not self.sock: return -1 while len(self.rfifo) >= 2: cmd = Packet.parse_header(self.rfifo[:2]) print(format(cmd, '#06x')) dlen = len(self.rfifo) print(dlen) cls = zd_packet_dict[cmd] print(cls) plen = cls.get_fmt_len() print(plen) if plen == -1: print('variable len!') if dlen <= 4: return 0 plen = cls.get_var_len_buffer(self.rfifo) print(plen) if plen > dlen: return 0 pkt = cls(self.rfifo[:plen]) print(pkt.get_data(as_string=True)) if pkt.parse(self): self.eof = True self.rfifo = self.rfifo[plen:] return 0