monitor-connman: Listen to session method calls
[platform/upstream/connman.git] / test / monitor-connman
1 #!/usr/bin/python
2
3 import gobject
4
5 import dbus
6 import dbus.mainloop.glib
7
8 from dbus.lowlevel import MethodCallMessage, HANDLER_RESULT_NOT_YET_HANDLED
9
10 def property_changed(name, value, path, interface):
11         iface = interface[interface.rfind(".") + 1:]
12         if name in ["Strength", "Priority"]:
13                 val = int(value)
14         else:
15                 val = str(value)
16         print "{%s} [%s] %s = %s" % (iface, path, name, val)
17
18 def message_filter(connection, message):
19         if not isinstance(message, MethodCallMessage):
20                 return HANDLER_RESULT_NOT_YET_HANDLED
21
22         interface = message.get_interface()
23         path = message.get_path()
24         name = message.get_member()
25         args = message.get_args_list()
26
27         property_changed(name, args, path, interface)
28
29 if __name__ == '__main__':
30         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
31
32         bus = dbus.SystemBus()
33
34         bus.add_signal_receiver(property_changed,
35                                         bus_name="net.connman",
36                                         signal_name = "PropertyChanged",
37                                                 path_keyword="path",
38                                                 interface_keyword="interface")
39
40         bus.add_match_string("member=Change,interface=net.connman.Session")
41         bus.add_match_string("member=Update,interface=net.connman.Notification")
42         bus.add_message_filter(message_filter)
43
44         mainloop = gobject.MainLoop()
45         mainloop.run()