def handle_cmd(self, cmd, rest): if self.state.off: self.debug("Discarding '%s' while AVR is off" % (cmd)) return self.debug("Handling '%s'" % (cmd)) avr, cmd = cmd.split(" ", 1) assert avr == self.name assert cmd in self.Commands assert not rest command = self.Commands[cmd] assert callable(command) for command_str in command(self): avr_cmd = AVR_Command(command_str) dgram_spec = AVR_Datagram.PC_AVR_Command dgram = AVR_Datagram.build_dgram(avr_cmd.dgram(), dgram_spec) self.schedule_write(dgram)
def handle_read(self): self.recv_data += os.read(self.master, 1024) while len(self.recv_data) >= self.recv_dgram_len: dgram = self.recv_data[:self.recv_dgram_len] self.recv_data = self.recv_data[self.recv_dgram_len:] self.handle_command(AVR_Command.from_dgram( AVR_Datagram.parse_dgram(dgram, self.RecvDGramSpec)))