#!/usr/bin/python import gobject import dbus import dbus.mainloop.glib from dbus.lowlevel import MethodCallMessage, HANDLER_RESULT_NOT_YET_HANDLED def extract_list(list): val = "[" for i in list: val += " " + str(i) val += " ]" return val def extract_bool(b): if b == dbus.Boolean(1): val = "true" else: val = "false" return val def property_changed_tag(name, value, path): tag = path[path.rfind("/") + 1:] if name in ["Records"]: val = extract_list(value) print "[Tag] [%s] %s = %s" % (tag, name, val) def property_changed_device(name, value, path): device = path[path.rfind("/") + 1:] if name in ["Records"]: val = extract_list(value) print "[Device] [%s] %s = %s" % (device, name, val) def property_changed_adapter(name, value, path): adapter = path[path.rfind("/") + 1:] if name in ["Polling"]: val = extract_bool(value) elif name in ["Tags", "Devices"]: val = extract_list(value) else: val = str(value) print "[Adapter] [%s] %s = %s" % (adapter, name, val) def property_changed_manager(name, value, path): manager = path[path.rfind("/") + 1:] if name in ["Adapters"]: val = extract_list(value) print "[Manager] %s = %s" % (name, val) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(property_changed_manager, bus_name="org.neard", dbus_interface="org.neard.Manager", signal_name = "PropertyChanged", path_keyword="path") bus.add_signal_receiver(property_changed_adapter, bus_name="org.neard", dbus_interface="org.neard.Adapter", signal_name = "PropertyChanged", path_keyword="path") bus.add_signal_receiver(property_changed_tag, bus_name="org.neard", dbus_interface="org.neard.Tag", signal_name = "PropertyChanged", path_keyword="path") bus.add_signal_receiver(property_changed_device, bus_name="org.neard", dbus_interface="org.neard.Device", signal_name = "PropertyChanged", path_keyword="path") mainloop = gobject.MainLoop() mainloop.run()