Example #1
0
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
Example #2
0
 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")
Example #3
0
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"
Example #4
0
 def open(self, override_json=None):
     # TODO: error handling here
     self.dev = hid.device()
     self.dev.open_path(self.desc["path"])