| #!/usr/bin/python | |
| from __future__ import absolute_import, print_function, unicode_literals | |
| import dbus | |
| bus = dbus.SystemBus() | |
| manager = dbus.Interface(bus.get_object("org.bluez", "/"), | |
| "org.freedesktop.DBus.ObjectManager") | |
| def extract_objects(object_list): | |
| list = "" | |
| for object in object_list: | |
| val = str(object) | |
| list = list + val[val.rfind("/") + 1:] + " " | |
| return list | |
| def extract_uuids(uuid_list): | |
| list = "" | |
| for uuid in uuid_list: | |
| if (uuid.endswith("-0000-1000-8000-00805f9b34fb")): | |
| if (uuid.startswith("0000")): | |
| val = "0x" + uuid[4:8] | |
| else: | |
| val = "0x" + uuid[0:8] | |
| else: | |
| val = str(uuid) | |
| list = list + val + " " | |
| return list | |
| objects = manager.GetManagedObjects() | |
| all_devices = (str(path) for path, interfaces in objects.iteritems() if | |
| "org.bluez.Device1" in interfaces.keys()) | |
| for path, interfaces in objects.iteritems(): | |
| if "org.bluez.Adapter1" not in interfaces.keys(): | |
| continue | |
| print("[ " + path + " ]") | |
| properties = interfaces["org.bluez.Adapter1"] | |
| for key in properties.keys(): | |
| value = properties[key] | |
| if (key == "UUIDs"): | |
| list = extract_uuids(value) | |
| print(" %s = %s" % (key, list)) | |
| else: | |
| print(" %s = %s" % (key, value)) | |
| device_list = [d for d in all_devices if d.startswith(path + "/")] | |
| for dev_path in device_list: | |
| print(" [ " + dev_path + " ]") | |
| dev = objects[dev_path] | |
| properties = dev["org.bluez.Device1"] | |
| for key in properties.keys(): | |
| value = properties[key] | |
| if (key == "UUIDs"): | |
| list = extract_uuids(value) | |
| print(" %s = %s" % (key, list)) | |
| elif (key == "Class"): | |
| print(" %s = 0x%06x" % (key, value)) | |
| elif (key == "Vendor"): | |
| print(" %s = 0x%04x" % (key, value)) | |
| elif (key == "Product"): | |
| print(" %s = 0x%04x" % (key, value)) | |
| elif (key == "Version"): | |
| print(" %s = 0x%04x" % (key, value)) | |
| else: | |
| print(" %s = %s" % (key, value)) | |
| print("") |