def is_rawhid(desc): if desc["usage_page"] != 0xFF60 or desc["usage"] != 0x61: logging.warning("is_rawhid: {} does not match - usage_page={:04X} usage={:02X}".format( desc["path"], desc["usage_page"], desc["usage"])) return False dev = hid.device() try: dev.open_path(desc["path"]) except OSError as e: logging.warning("is_rawhid: {} does not match - open_path error {}".format(desc["path"], e)) return False # probe VIA version and ensure it is supported data = b"" try: data = hid_send(dev, b"\x01", retries=3) except RuntimeError as e: logging.warning("is_rawhid: {} does not match - hid_send error {}".format(desc["path"], e)) pass dev.close() # must have VIA protocol version = 9 if data[0:3] != b"\x01\x00\x09": logging.warning("is_rawhid: {} does not match - unexpected data in response {}".format( desc["path"], data.hex())) return False logging.info("is_rawhid: {} matched OK".format(desc["path"])) return True
def open(self, override_json=None): self.dev = hid.device() for x in range(10): try: self.dev.open_path(self.desc["path"]) return except OSError: time.sleep(1) raise RuntimeError("unable to open the device")
def is_rawhid(desc): if desc["usage_page"] != 0xFF60 or desc["usage"] != 0x61: return False dev = hid.device() try: dev.open_path(desc["path"]) except OSError: return False # probe VIA version and ensure it is supported data = b"" try: data = hid_send(dev, b"\x01", retries=3) except RuntimeError: pass dev.close() # must have VIA protocol version = 9 return data[0:3] == b"\x01\x00\x09"
def open(self, override_json=None): # TODO: error handling here self.dev = hid.device() self.dev.open_path(self.desc["path"])