diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2012-10-11 12:35:29 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-10-12 18:02:34 +0300 |
commit | b1f1b58eecdbdafc73728b1d5aca799997669ba0 (patch) | |
tree | 5dac431ff5573a5bbda397fb5fc2ec2bd9379b41 /test/test-discovery | |
parent | f99775d47afdf7f9bb3403178072b485a8ce4615 (diff) | |
download | bluez-b1f1b58eecdbdafc73728b1d5aca799997669ba0.tar.gz |
test: Update test-discovery to support the latest API
Diffstat (limited to 'test/test-discovery')
-rwxr-xr-x | test/test-discovery | 107 |
1 files changed, 89 insertions, 18 deletions
diff --git a/test/test-discovery b/test/test-discovery index 94eafe481..32e780e3b 100755 --- a/test/test-discovery +++ b/test/test-discovery @@ -8,31 +8,31 @@ import dbus import dbus.mainloop.glib from optparse import OptionParser, make_option -compact = False; -addresses = []; +compact = False +devices = {} def print_compact(address, properties): - if address in addresses: - return - - addresses.append(address) - name = "" + address = "<unknown>" - for key in properties.keys(): - value = properties[key] + for key, value in properties.iteritems(): if type(value) is dbus.String: value = unicode(value).encode('ascii', 'replace') if (key == "Name"): name = value + elif (key == "Address"): + address = value - print("%s %s" % (address, name)) + if "Logged" in properties: + flag = "*" + else: + flag = " " -def device_found(address, properties): - if compact: - print_compact(address, properties) - return + print("%s%s %s" % (flag, address, name)) + + properties["Logged"] = True +def print_normal(address, properties): print("[ " + address + " ]") for key in properties.keys(): @@ -46,6 +46,64 @@ def device_found(address, properties): print() + properties["Logged"] = True + +def skip_dev(old_dev, new_dev): + if not "Logged" in old_dev: + return False + if "Name" in old_dev: + return True + if not "Name" in new_dev: + return True + return False + +def interfaces_added(path, interfaces): + properties = interfaces["org.bluez.Device"] + 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(address, devices[path]) + else: + print_normal(address, devices[path]) + +def properties_changed(interface, changed, invalidated, path): + if interface != "org.bluez.Device": + return + + 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): mainloop.quit() @@ -78,14 +136,27 @@ if __name__ == '__main__': adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path), "org.bluez.Adapter") - bus.add_signal_receiver(device_found, - dbus_interface = "org.bluez.Adapter", - signal_name = "DeviceFound") + 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.Device", + path_keyword = "path") bus.add_signal_receiver(property_changed, - dbus_interface = "org.bluez.Adapter", + dbus_interface = "org.bluez.Adapter", 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.Device" in interfaces: + devices[path] = interfaces["org.bluez.Device"] + adapter.StartDiscovery() mainloop = GObject.MainLoop() |