Hi James,
On 2/10/21 12:07 PM, James Prestwood wrote:
Creates a signal agent and registers for a few levels.
---
test/signal-agent | 52 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100755 test/signal-agent
diff --git a/test/signal-agent b/test/signal-agent
new file mode 100755
index 00000000..65f16cfd
--- /dev/null
+++ b/test/signal-agent
@@ -0,0 +1,52 @@
+#!/usr/bin/python3
+
+from gi.repository import GLib
+
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import sys
+import time
+
+class SignalAgent(dbus.service.Object):
+ def __init__(self):
+ self._bus = dbus.SystemBus()
+ self._path = '/test/agent/' + str(int(round(time.time() * 1000)))
+
+ dbus.service.Object.__init__(self, self._bus, self._path)
+
+ @property
+ def path(self):
+ return self._path
+
+ @dbus.service.method('net.connman.iwd.SignalLevelAgent',
+ in_signature='', out_signature='')
+ def Release(self):
+ print("SignalAgent released")
+
+ @dbus.service.method('net.connman.iwd.SignalLevelAgent',
+ in_signature='oy', out_signature='')
+ def Changed(self, path, level):
+ self.handle_new_level(str(path), int(level))
+
+ def handle_new_level(self, path, level):
+ print("New signal level %d" % level)
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ print("Usage: %s <device path>" % sys.argv[0])
+ quit()
Can we optionally pass the ranges on the command line?
+
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+ bus = dbus.SystemBus()
+ agent = SignalAgent()
+
+ station_if = dbus.Interface(bus.get_object('net.connman.iwd', sys.argv[1]),
+ 'net.connman.iwd.Station')
+ station_if.RegisterSignalLevelAgent(agent.path,
+ dbus.Array([-70, -75, -80], 'n'))
Maybe use the same ranges we use in iwctl by default?
+
+ mainloop = GLib.MainLoop()
+ mainloop.run()
+
Regards,
-Denis