#!/usr/bin/python3 from gi.repository import GLib import sys import dbus import dbus.service import dbus.mainloop.glib class SmartMessagingAgent(dbus.service.Object): @dbus.service.method("org.ofono.SmartMessagingAgent", in_signature="", out_signature="") def Release(self): print("Release") mainloop.quit() @dbus.service.method("org.ofono.SmartMessagingAgent", in_signature="aya{sv}", out_signature="") def ReceiveBusinessCard(self, data, props): for key in props.keys(): print("Key: %s, Value: %s" % (key, props[key])) string = "" for byte in data: string += str(byte) print("Received Business Card:") print(string) @dbus.service.method("org.ofono.SmartMessagingAgent", in_signature="aya{sv}", out_signature="") def ReceiveAppointment(self, data, props): for key in props.keys(): print("Key: %s, Value: %s" % (key, props[key])) string = "" for byte in data: string += str(byte) print("Received Appointment:") print(string) 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() for path, properties in modems: if "org.ofono.SmartMessaging" not in properties["Interfaces"]: continue pn = dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.SmartMessaging') path = "/test/agent" agent = SmartMessagingAgent(bus, path) pn.RegisterAgent(path) print("Agent registered") mainloop = GLib.MainLoop() try: mainloop.run() except KeyboardInterrupt: pn.UnregisterAgent(path) mainloop.run()