Hi Guillaume, On 05/23/2012 03:42 AM, Guillaume Zajac wrote: > This script uses dynamic SS codes in input and > displays answers to the different requests. > It handles all SS: call barring, call forwarding, > call waiting, CLIP, CLIR, ... > --- > test/test-ss | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 55 insertions(+), 0 deletions(-) > create mode 100755 test/test-ss > > diff --git a/test/test-ss b/test/test-ss > new file mode 100755 > index 0000000..adeff33 > --- /dev/null > +++ b/test/test-ss > @@ -0,0 +1,55 @@ > +#!/usr/bin/python > + > +import sys > +import gobject What is gobject for? > + > +import dbus > +import dbus.mainloop.glib Why do you need the mainloop? > + > +if __name__ == "__main__": > + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) > + > + bus = dbus.SystemBus() > + > + manager = dbus.Interface(bus.get_object('org.ofono', '/'), > + 'org.ofono.Manager') > + > + modems = manager.GetModems() > + modem = modems[0][0] > + > + if (len(sys.argv) == 2): > + ss_code = sys.argv[1] > + else: > + modem = sys.argv[1] > + ss_code = sys.argv[2] > + > + ss = dbus.Interface(bus.get_object('org.ofono', modem), > + 'org.ofono.SupplementaryServices') > + > + try: > + ss_type, properties = ss.Initiate(ss_code, timeout=100) > + except dbus.DBusException, e: > + print "Unable to perform operation: ", e > + sys.exit(1); > + > + if (ss_type == "CallBarring"): > + print "%s : Operation [ %s ] Service Type [ %s ]" % (ss_type, properties[0], properties[1]) > + for key in properties[2]: > + print "%s : %s" % (key, properties[2][key]) > + sys.exit(1); This sys.exit seems unnecessary, and since the operation succeeded you should be returning 0 anyway. > + elif (ss_type == "CallForwarding"): > + print "%s : Operation [ %s ] Service Type [ %s ]" % (ss_type, properties[0], properties[1]) > + for key in properties[2]: > + print "%s : %s" % (key, properties[2][key]) > + sys.exit(1); ditto > + elif (ss_type == "CallWaiting"): > + print "%s : Operation [ %s ]" % (ss_type, properties[0]) > + for key in properties[1]: > + print "%s : %s" % (key, properties[1][key]) > + sys.exit(1); ditto > + else: > + print "%s : Operation [ %s ] Status [ %s ]" % (ss_type, properties[0], properties[1]) > + sys.exit(1); ditto > + > + mainloop = gobject.MainLoop() > + mainloop.run() This seems unnecessary as well since you're not actually using a main loop. Regards, -Denis