#!/usr/bin/python3 from gi.repository import GLib import sys import dbus import dbus.mainloop.glib def property_changed(name, value): print("CallBarring property: '%s' changed to '%s'" % (name, str(value))) if canexit: mainloop.quit() def print_useage(s): print("Usage: %s " % (s)) print("Usage: %s disableall " % (s)) print("Usage: %s passwd " % (s)) sys.exit(1); if __name__ == "__main__": if len(sys.argv) != 3 and len(sys.argv) != 4: print_useage(sys.argv[0]) if (sys.argv[1] == 'disableall'): pin = sys.argv[2] elif (sys.argv[1] == 'passwd'): old_password = sys.argv[2] new_password = sys.argv[3] else: if (len(sys.argv) != 4): print_useage(sys.argv[0]) property = sys.argv[1] newvalue = sys.argv[2] pin = sys.argv[3] canexit = False 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() cb = dbus.Interface(bus.get_object('org.ofono', modems[0][0]), 'org.ofono.CallBarring') cb.connect_to_signal("PropertyChanged", property_changed) properties = cb.GetProperties() print("Barring settings for Incoming Voice calls: %s" %\ (properties['VoiceIncoming'])) print("Barring settings for Outgoing Calls: %s" %\ (properties['VoiceOutgoing'])) if (sys.argv[1] == 'disableall'): print("Disabling all barrings") try: cb.DisableAll(pin) except dbus.DBusException as e: print("Unable to Disable All barrings: ", e) sys.exit(1) elif (sys.argv[1] == 'passwd'): try: cb.ChangePassword(old_password, new_password) except dbus.DBusException as e: print("Unable to change password: ", e) sys.exit(1) print("Password changed") sys.exit(0) else: try: cb.SetProperty(property, newvalue, pin) except dbus.DBusException as e: print("Unable to set property: ", e) sys.exit(1) canexit = True mainloop = GLib.MainLoop() mainloop.run()