diff --git a/owrx/controllers/settings/sdr.py b/owrx/controllers/settings/sdr.py index a044e15..a776419 100644 --- a/owrx/controllers/settings/sdr.py +++ b/owrx/controllers/settings/sdr.py @@ -1,8 +1,9 @@ from owrx.controllers.admin import AuthorizationMixin from owrx.controllers.template import WebpageController from owrx.controllers.settings import SettingsFormController -from owrx.source import SdrDeviceDescription, SdrDeviceDescriptionMissing +from owrx.source import SdrDeviceDescription, SdrDeviceDescriptionMissing, SdrClientClass from owrx.config import Config +from owrx.connection import OpenWebRxReceiverClient from urllib.parse import quote, unquote from owrx.sdr import SdrService from abc import ABCMeta @@ -26,6 +27,24 @@ class SdrDeviceListController(AuthorizationMixin, WebpageController): # TODO: this only returns non-failed sources... source = SdrService.getSource(device_id) + additional_info = "" + + if source is not None: + profiles = source.getProfiles() + currentProfile = profiles[source.getProfileId()] + clients = {c: len(source.getClients(c)) for c in SdrClientClass} + clients = {c: v for c, v in clients.items() if v} + connections = len([c for c in source.getClients() if isinstance(c, OpenWebRxReceiverClient)]) + additional_info = """ +
Current profile: {current_profile}
+
Clients: {clients}
+
Connections: {connections}
+ """.format( + current_profile=currentProfile["name"], + clients=", ".join("{cls}: {count}".format(cls=c.name, count=v) for c, v in clients.items()), + connections=connections, + ) + return """
  • @@ -33,12 +52,14 @@ class SdrDeviceListController(AuthorizationMixin, WebpageController):
    State: {state}
    {num_profiles} profile(s)
    + {additional_info}
  • """.format( device_name=config["name"], device_link="{}/{}".format(self.request.path, quote(device_id)), state="Unknown" if source is None else source.getState(), num_profiles=len(config["profiles"]), + additional_info=additional_info, ) return """ diff --git a/owrx/source/__init__.py b/owrx/source/__init__.py index a6480ba..ba93773 100644 --- a/owrx/source/__init__.py +++ b/owrx/source/__init__.py @@ -298,9 +298,13 @@ class SdrSource(ABC): if self.monitor: self.monitor.join() + def getClients(self, *args): + if not args: + return self.clients + return [c for c in self.clients if c.getClientClass() in args] + def hasClients(self, *args): - clients = [c for c in self.clients if c.getClientClass() in args] - return len(clients) > 0 + return len(self.getClients(*args)) > 0 def addClient(self, c: SdrSourceEventClient): if c in self.clients: