def __init__(self, conn): super().__init__(conn) self.dsp = None self.dspLock = threading.Lock() self.sdr = None self.configSubs = [] self.bookmarkSub = None self.connectionProperties = {} try: ClientRegistry.getSharedInstance().addClient(self) except TooManyClientsException: self.write_backoff_message("Too many clients") self.close() raise self.setupGlobalConfig() self.stack = self.setupStack() self.setSdr() features = FeatureDetector().feature_availability() self.write_features(features) modes = Modes.getModes() self.write_modes(modes) self.configSubs.append(SdrService.getActiveSources().wire( self._onSdrDeviceChanges)) self.configSubs.append(SdrService.getAvailableProfiles().wire( self._sendProfiles)) self._sendProfiles() CpuUsageThread.getSharedInstance().add_client(self)
def start(): config = Config.get() config.wireProperty("services_enabled", Services._receiveEnabledEvent) activeSources = SdrService.getActiveSources() activeSources.wire(Services._receiveDeviceEvent) for key, source in activeSources.items(): Services.schedulers[key] = ServiceScheduler(source)
def _receiveEnabledEvent(state): if state: for key, source in SdrService.getActiveSources().__dict__().items(): Services.handlers[key] = ServiceHandler(source) else: for handler in list(Services.handlers.values()): handler.shutdown() Services.handlers = {}
def indexAction(self): pm = Config.get() status = { "receiver": { "name": pm["receiver_name"], "admin": pm["receiver_admin"], "gps": pm["receiver_gps"], "asl": pm["receiver_asl"], "location": pm["receiver_location"], }, "max_clients": pm["max_clients"], "version": openwebrx_version, "sdrs": [ self.getReceiverStats(r) for r in SdrService.getActiveSources().values() ], } self.send_response(json.dumps(status, cls=Encoder), content_type="application/json")