Blob: monitor-bluetooth
Blob id: 347c91ac3c81df6e35fe912f118544e2ab61498c
Size: 1.6 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/usr/bin/env python3 # SPDX-License-Identifier: LGPL-2.1-or-later from __future__ import absolute_import, print_function, unicode_literals import dbus import dbus.mainloop.glib try: from gi.repository import GObject except ImportError: import gobject as GObject relevant_ifaces = [ "org.bluez.Adapter1", "org.bluez.Device1" ] def property_changed(interface, changed, invalidated, path): iface = interface[interface.rfind(".") + 1:] for name, value in changed.items(): val = str(value) print("{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val)) def interfaces_added(path, interfaces): for iface, props in interfaces.items(): if not(iface in relevant_ifaces): continue print("{Added %s} [%s]" % (iface, path)) for name, value in props.items(): print(" %s = %s" % (name, value)) def interfaces_removed(path, interfaces): for iface in interfaces: if not(iface in relevant_ifaces): continue print("{Removed %s} [%s]" % (iface, path)) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed, bus_name="org.bluez", dbus_interface="org.freedesktop.DBus.Properties", signal_name="PropertiesChanged", path_keyword="path") bus.add_signal_receiver(interfaces_added, bus_name="org.bluez", dbus_interface="org.freedesktop.DBus.ObjectManager", signal_name="InterfacesAdded") bus.add_signal_receiver(interfaces_removed, bus_name="org.bluez", dbus_interface="org.freedesktop.DBus.ObjectManager", signal_name="InterfacesRemoved") mainloop = GObject.MainLoop() mainloop.run() |