def __device_added(observer, device): if "uevent" in device.attributes: uevent = g15pythonlang.parse_as_properties(device.attributes["uevent"]) if "PRODUCT" in uevent: if "subsystem" in device.attributes and device.attributes["subsystem"] == "usb": major,minor,_ = uevent["PRODUCT"].split("/") else: _,major,minor,_ = uevent["PRODUCT"].split("/") for c in device_list: device_info = device_list[c] usb_id = (int(major, 16), int(minor, 16)) if device_info.matches(usb_id): if not _get_cached_device_by_usb_id(usb_id): del __cached_devices[:] find_all_devices() for r in reversed(__cached_devices): if r.usb_id == usb_id: logger.info("Added device %s", r) for l in device_added_listeners: l(r) break break
def parse_as_properties(properties_string): return g15pythonlang.parse_as_properties(properties_string)