6 import dbus.mainloop.glib
8 from dbus.lowlevel import MethodCallMessage, HANDLER_RESULT_NOT_YET_HANDLED
10 def extract_list(list):
18 if b == dbus.Boolean(1):
25 def property_changed_tag(name, value, path):
26 tag = path[path.rfind("/") + 1:]
27 if name in ["Records"]:
28 val = extract_list(value)
30 print "[Tag] [%s] %s = %s" % (tag, name, val)
32 def property_changed_device(name, value, path):
33 device = path[path.rfind("/") + 1:]
34 if name in ["Records"]:
35 val = extract_list(value)
37 print "[Device] [%s] %s = %s" % (device, name, val)
39 def property_changed_adapter(name, value, path):
40 adapter = path[path.rfind("/") + 1:]
41 if name in ["Polling"]:
42 val = extract_bool(value)
43 elif name in ["Tags", "Devices"]:
44 val = extract_list(value)
48 print "[Adapter] [%s] %s = %s" % (adapter, name, val)
50 def property_changed_manager(name, value, path):
51 manager = path[path.rfind("/") + 1:]
52 if name in ["Adapters"]:
53 val = extract_list(value)
55 print "[Manager] %s = %s" % (name, val)
58 if __name__ == '__main__':
59 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
61 bus = dbus.SystemBus()
63 bus.add_signal_receiver(property_changed_manager,
65 dbus_interface="org.neard.Manager",
66 signal_name = "PropertyChanged",
69 bus.add_signal_receiver(property_changed_adapter,
71 dbus_interface="org.neard.Adapter",
72 signal_name = "PropertyChanged",
75 bus.add_signal_receiver(property_changed_tag,
77 dbus_interface="org.neard.Tag",
78 signal_name = "PropertyChanged",
81 bus.add_signal_receiver(property_changed_device,
83 dbus_interface="org.neard.Device",
84 signal_name = "PropertyChanged",
87 mainloop = gobject.MainLoop()