예제 #1
0
    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)
예제 #2
0
 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)
예제 #3
0
 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 = {}
예제 #4
0
 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")