client.py 724 B

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