diff --git a/tuhi.py b/tuhi.py index b07ef41..5f41da7 100755 --- a/tuhi.py +++ b/tuhi.py @@ -154,10 +154,21 @@ class Tuhi(GObject.Object): def _on_stop_pairing_requested(self, dbus_server): self.bluez.stop_discovery() + @classmethod + def _is_pairing_device(cls, bluez_device): + if bluez_device.vendor_id != WACOM_COMPANY_ID: + return False + + manufacturer_data = bluez_device.get_manufacturer_data(WACOM_COMPANY_ID) + return manufacturer_data is not None and len(manufacturer_data) == 4 + def _on_bluez_device_added(self, manager, bluez_device): if bluez_device.vendor_id != WACOM_COMPANY_ID: return + if Tuhi._is_pairing_device(bluez_device): + return + tuhi_dbus_device = self.server.create_device(bluez_device) d = TuhiDevice(bluez_device, tuhi_dbus_device) self.devices[bluez_device.address] = d diff --git a/tuhi/ble.py b/tuhi/ble.py index 1ada0ab..1f0e01d 100755 --- a/tuhi/ble.py +++ b/tuhi/ble.py @@ -140,6 +140,12 @@ class BlueZDevice(GObject.Object): return (self.interface.get_cached_property('Connected').unpack() and self.interface.get_cached_property('ServicesResolved').unpack()) + def get_manufacturer_data(self, vendor_id): + md = self.interface.get_cached_property('ManufacturerData') + if md is not None and vendor_id in md.keys(): + return md[vendor_id] + return None + def resolve(self, om): """ Resolve the GattServices and GattCharacteristics. This function does