client.py 716 B

1234567891011121314151617181920212223242526272829
  1. """XAP Client
  2. """
  3. import hid
  4. from .device import XAPDevice
  5. class XAPClient:
  6. @staticmethod
  7. def list(search=None):
  8. """Find compatible XAP devices
  9. """
  10. def _is_xap_usage(x):
  11. return x['usage_page'] == 0xFF51 and x['usage'] == 0x0058
  12. def _is_filtered_device(x):
  13. name = '%04x:%04x' % (x['vendor_id'], x['product_id'])
  14. return name.lower().startswith(search.lower())
  15. devices = filter(_is_xap_usage, hid.enumerate())
  16. if search:
  17. devices = filter(_is_filtered_device, devices)
  18. return list(devices)
  19. def connect(self, dev):
  20. """Connect to a given XAP device
  21. """
  22. return XAPDevice(dev)