#!/usr/bin/python3 from gi.repository import GLib import dbus import dbus.mainloop.glib def property_changed(property, value): print("CallForwarding property %s changed to %s" % (property, value)) def print_properties(cf): properties = cf.GetProperties() for p in properties: if len(properties[p].__str__()) > 0: value = properties[p] else: value = "disabled" print("%s call forwarding rule: %s" % (p, value)) 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() cf = dbus.Interface(bus.get_object('org.ofono', modems[0][0]), 'org.ofono.CallForwarding') cf.connect_to_signal("PropertyChanged", property_changed) ss = dbus.Interface(bus.get_object('org.ofono', modems[0][0]), 'org.ofono.SupplementaryServices') # Clear everything ss.Initiate("##002#") print_properties(cf) # Busy To +155542, for Voice print("Setting Busy Voice rule to +155542") print(ss.Initiate("*67*+155542*11#")) print_properties(cf) # Not Reachable to +155543, Voice print("Setting Voice Not Reachable rule to +155543") print(ss.Initiate("**62*+155543*11#")) # Not Reachable to +155544, Voice service print("Setting Voice No Reply rule to +155544, timeout=30") print(ss.Initiate("**61*+155544*11*30#")) # Unconditional to +155547, Voice print("Setting Unconditional for Voice to +155545") print(ss.Initiate("*21*+155545*10#")) print_properties(cf) print("Query all voice forwardings") print(ss.Initiate("*#002**11#")) print("Query no reply voice forwardings") print(ss.Initiate("*#61**11#")) # Deactivate everything print("Deactivating everything") print(ss.Initiate("##002#")) print_properties(cf) mainloop = GLib.MainLoop() mainloop.run()