def handle_phy_nak_message(self, cmd): seq = cmd.seq() # to parent seq seq.pop() HidMessage(Message.MSG_DEVICE_NAK, self.id(), seq, pipe=self.logic_pipe()).send()
def handle_phy_raw_message(self, cmd, msg): type = cmd.parent_type() seq = cmd.seq() # to parent seq seq.pop() value = msg.value() return HidMessage(type, self.id(), seq, value=value, pipe=self.logic_pipe())
def handle_phy_test_message(self, cmd, msg): print(self.__class__.__name__, "handle_phy_test_message", msg) seq = cmd.seq() # to parent seq seq.pop() cmd_data = cmd.raw_data() value = msg.value() attached = cmd_data[0] == value[0] return HidMessage(Message.MSG_BRIDGE_ATTACH, self.id(), seq, value=attached, pipe=self.logic_pipe())
def handle_phy_interrupt_message(self, msg): type = Message.MSG_DEVICE_INTERRUPT_DATA seq = Message.seq_root() #print(self.__class__.__name__, "int", msg) value = msg.value() if value[0] == 0: return HidMessage(type, self.id(), seq, value=value[1:], pipe=self.logic_pipe()).send() else: print(self.__class__.__name__, "Invalid irq message:", value)
def handle_phy_interrupt_message(self, msg): type = Message.MSG_DEVICE_INTERRUPT_DATA seq = Message.seq_root() (RW_OK, NAK_W, NAK_ADDR, W_ONLY_OK) = range(4) #print(self.__class__.__name__, "int", msg) value = msg.value() if value[0] == 0x9A and value[1] == RW_OK: return HidMessage(type, self.id(), seq, value=value[2:], pipe=self.logic_pipe()).send() else: print(self.__class__.__name__, "Invalid irq message:", value)
def handle_phy_rw_message(self, cmd, msg): #print("handle_hid_read_message") type = cmd.parent_type() seq = cmd.seq() # to parent seq seq.pop() (RW_OK, NAK_W, NAK_ADDR, W_ONLY_OK) = range(4) cmd_data = cmd.raw_data() op = cmd.op value = msg.value() status = value[0] size = value[1] if (not status and not size): return if op == 'r' and cmd_data[2]: # command data[2] is readsize if status == RW_OK and size <= cmd.transfered_size(): result = value[2:size + 2] else: result = [] return HidMessage(type, self.id(), seq, value=result, pipe=self.logic_pipe()) elif op == 'w': if status == W_ONLY_OK and cmd.transfered_size() >= size: result = size else: result = 0 return HidMessage(type, self.id(), seq, value=result, pipe=self.logic_pipe())
def handle_phy_rw_message(self, cmd, msg): #print("handle_hid_read_message") type = cmd.parent_type() seq = cmd.seq() # to parent seq seq.pop() cmd_data = cmd.raw_data() op = cmd.op value = msg.value() if op == 'r' and cmd_data[2]: size = value[0] # size at index 0 return HidMessage(type, self.id(), seq, value=value[1:size + 1], pipe=self.logic_pipe()) elif op == 'w': size = cmd.transfered_size() - value[0] return HidMessage(type, self.id(), seq, value=size, pipe=self.logic_pipe())
def handle_phy_test_message(self, cmd, msg): print(self.__class__.__name__, "handle_phy_test_message", msg) seq = cmd.seq() # to parent seq seq.pop() cmd_data = cmd.raw_data() value = msg.value() tag = value[0] address = value[1] if tag == cmd_data[1] and address == cmd_data[2]: return HidMessage(Message.MSG_DEVICE_CONNECTED, self.id(), seq, value=address, pipe=self.logic_pipe())
def handle_phy_ouput_message(self, cmd, msg): cmd_data = cmd.raw_data() type = cmd.parent_type() seq = cmd.seq() # to parent seq seq.pop() (OK, FAILED) = range(2) value = msg.value() if cmd_data[0] == value[0] and value[1] == OK: result = True else: result = False return HidMessage(type, self.id(), seq, value=result, pipe=self.logic_pipe())