diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2012-12-19 11:20:10 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-12-19 11:23:39 +0200 |
commit | bec7ef3c3c7d0731e353aaa8fb2d7b44098bf5c8 (patch) | |
tree | 93ef6846217c1b4408325c4cb22d98f0c41627c5 /test | |
parent | 9169be4ff8b4dcf24098fb1cd3fe7bed429b5481 (diff) |
test: Update test-discovery to cope with removed DevicesFound signal
This patch updates test-discovery to reply only on ObjectManager and
standard D-Bus properties signals for device discovery.
Diffstat (limited to 'test')
-rwxr-xr-x | test/test-discovery | 89 |
1 files changed, 63 insertions, 26 deletions
diff --git a/test/test-discovery b/test/test-discovery index 0004f5252b..c13bfac77d 100755 --- a/test/test-discovery +++ b/test/test-discovery @@ -12,7 +12,7 @@ import bluezutils compact = False devices = {} -def print_compact(path, address, properties): +def print_compact(address, properties): name = "" address = "<unknown>" @@ -24,14 +24,16 @@ def print_compact(path, address, properties): elif (key == "Address"): address = value - if path in devices: + if "Logged" in properties: flag = "*" else: flag = " " print("%s%s %s" % (flag, address, name)) -def print_normal(path, address, properties): + properties["Logged"] = True + +def print_normal(address, properties): print("[ " + address + " ]") for key in properties.keys(): @@ -45,41 +47,63 @@ def print_normal(path, address, properties): print() -def skip_dev(path, new_dev): - if not compact: - return False; + properties["Logged"] = True - if not path in devices: +def skip_dev(old_dev, new_dev): + if not "Logged" in old_dev: return False - - old_dev = devices[path] - if "Name" in old_dev: return True - if not "Name" in new_dev: return True - return False -def print_dev(path, props): - if "Address" in props: - address = props["Address"] +def interfaces_added(path, interfaces): + properties = interfaces["org.bluez.Device1"] + if not properties: + return + + if path in devices: + dev = devices[path] + + if compact and skip_dev(dev, properties): + return + devices[path] = dict(devices[path].items() + properties.items()) + else: + devices[path] = properties + + if "Address" in devices[path]: + address = properties["Address"] else: address = "<unknown>" if compact: - print_compact(path, address, props) + print_compact(address, devices[path]) else: - print_normal(path, address, props) + print_normal(address, devices[path]) -def devices_found(found_devs): - for path, properties in found_devs.iteritems(): - if (skip_dev(path, properties)): - continue +def properties_changed(interface, changed, invalidated, path): + if interface != "org.bluez.Device1": + return - print_dev(path, properties) - devices[path] = properties + if path in devices: + dev = devices[path] + + if compact and skip_dev(dev, changed): + return + devices[path] = dict(devices[path].items() + changed.items()) + else: + devices[path] = changed + + if "Address" in devices[path]: + address = devices[path]["Address"] + else: + address = "<unknown>" + + if compact: + print_compact(address, devices[path]) + else: + print_normal(address, devices[path]) def property_changed(name, value): if (name == "Discovering" and not value): @@ -105,14 +129,27 @@ if __name__ == '__main__': if options.compact: compact = True; - bus.add_signal_receiver(devices_found, - dbus_interface = "org.bluez.Adapter1", - signal_name = "DevicesFound") + bus.add_signal_receiver(interfaces_added, + dbus_interface = "org.freedesktop.DBus.ObjectManager", + signal_name = "InterfacesAdded") + + bus.add_signal_receiver(properties_changed, + dbus_interface = "org.freedesktop.DBus.Properties", + signal_name = "PropertiesChanged", + arg0 = "org.bluez.Device1", + path_keyword = "path") bus.add_signal_receiver(property_changed, dbus_interface = "org.bluez.Adapter1", signal_name = "PropertyChanged") + om = dbus.Interface(bus.get_object("org.bluez", "/"), + "org.freedesktop.DBus.ObjectManager") + objects = om.GetManagedObjects() + for path, interfaces in objects.iteritems(): + if "org.bluez.Device1" in interfaces: + devices[path] = interfaces["org.bluez.Device1"] + adapter.StartDiscovery() mainloop = GObject.MainLoop() |