#!/usr/bin/python import gobject import sys import os import dbus import dbus.service import dbus.mainloop.glib GNSS_INTERFACE = "org.ofono.AssistedSatelliteNavigation" AGENT_INTERFACE = "org.ofono.PositioningRequestAgent" class PositioningAgent(dbus.service.Object): @dbus.service.method(AGENT_INTERFACE, in_signature="", out_signature="") def Release(self): print "Release" mainloop.quit() @dbus.service.method(AGENT_INTERFACE, in_signature="s", out_signature="") def Request(self, xml): print "positioning data: %s" % (xml) @dbus.service.method(AGENT_INTERFACE, in_signature="", out_signature="") def ResetAssistanceData(self): print "Reset Assistance Data request received" def print_menu(): print "Select test case" print "-----------------------------------------------------------" print "[0] SendPositioningElement" print "[1] RegisterPositioningRequestAgent" print "[2] UnregisterPositioningRequestAgent" print "[x] Exit" print "-----------------------------------------------------------" def stdin_handler(fd, condition, gnss, path): in_key = os.read(fd.fileno(), 8).rstrip() if in_key == '0': xml = raw_input('type the element and press enter: ') try: gnss.SendPositioningElement(dbus.String(xml)) print "ok" except dbus.DBusException, e: print "Unable to send positioning element" elif in_key == '1': try: gnss.RegisterPositioningRequestAgent("/test/posagent") print "ok" except dbus.DBusException, e: print "Unable to register positioning agent" elif in_key == '2': try: gnss.UnregisterPositioningRequestAgent(path) print "ok" except dbus.DBusException, e: print "Unable to unregister positioning agent" elif in_key == 'x': sys.exit(1) return True if __name__ == "__main__": if len(sys.argv) < 1: sys.exit(1) 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 GNSS_INTERFACE not in properties["Interfaces"]: continue gnss = dbus.Interface(bus.get_object('org.ofono', path), GNSS_INTERFACE) path = "/test/posagent" agent = PositioningAgent(bus, path) print_menu() gobject.io_add_watch(sys.stdin, gobject.IO_IN, stdin_handler, gnss, path) mainloop = gobject.MainLoop() mainloop.run()