mirror of git://git.sysmocom.de/ofono
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
#!/usr/bin/python3
|
|
|
|
from gi.repository import GLib
|
|
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(channel, condition, gnss, path):
|
|
in_key = os.read(channel.unix_get_fd(), 160).rstrip().decode('UTF-8')
|
|
if in_key == '0':
|
|
xml = input('type the element and press enter: ')
|
|
try:
|
|
gnss.SendPositioningElement(dbus.String(xml))
|
|
print("ok")
|
|
except dbus.DBusException as e:
|
|
print("Unable to send positioning element")
|
|
|
|
elif in_key == '1':
|
|
try:
|
|
gnss.RegisterPositioningRequestAgent("/test/posagent")
|
|
print("ok")
|
|
except dbus.DBusException as e:
|
|
print("Unable to register positioning agent")
|
|
|
|
elif in_key == '2':
|
|
try:
|
|
gnss.UnregisterPositioningRequestAgent(path)
|
|
print("ok")
|
|
except dbus.DBusException as 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()
|
|
|
|
GLib.io_add_watch(GLib.IOChannel(filedes=sys.stdin.fileno()),
|
|
GLib.PRIORITY_DEFAULT, GLib.IO_IN, stdin_handler,
|
|
gnss, path)
|
|
mainloop = GLib.MainLoop()
|
|
mainloop.run()
|