code: def command(self, cmd_code, cmd_data, timeout):
          
          log.log(logging.DEBUG-1, self.CMD[cmd_code]+" "+hexlify(cmd_data))
  
          frame = bytearray([0xD4, cmd_code]) + bytearray(cmd_data)
          frame = bytearray([0xFF, 0x00, 0x00, 0x00, len(frame)]) + frame
  
          frame = self.ccid_xfr_block(frame, timeout)
          if not frame or len(frame) < 4:
              log.error("insufficient data for decoding chip response")
              raise IOError(errno.EIO, os.strerror(errno.EIO))
          if not (frame[0] == 0xD5 and frame[1] == cmd_code + 1):
              log.error("received invalid chip response")
              raise IOError(errno.EIO, os.strerror(errno.EIO))
          if not (frame[-2] == 0x90 and frame[-1] == 0x00):
              log.error("received pseudo apdu with error status")
              raise IOError(errno.EIO, os.strerror(errno.EIO))
          return frame[2:-2]
docs: Send a host command and return the chip response.