re-start connection sdr if no sdr was available before

This commit is contained in:
Jakob Ketterl 2021-03-20 23:30:09 +01:00
parent 2a82f4e452
commit 8fa1796037

View File

@ -162,7 +162,7 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient):
self.write_modes(modes) self.write_modes(modes)
self._sendProfiles() self._sendProfiles()
SdrService.getActiveSources().wire(self._sendProfiles) SdrService.getActiveSources().wire(self._onSdrDeviceChanges)
CpuUsageThread.getSharedInstance().add_client(self) CpuUsageThread.getSharedInstance().add_client(self)
@ -239,7 +239,13 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient):
def getClientClass(self) -> SdrClientClass: def getClientClass(self) -> SdrClientClass:
return SdrClientClass.USER return SdrClientClass.USER
def _sendProfiles(self, *args): def _onSdrDeviceChanges(self, changes):
self._sendProfiles()
# restart the client if an sdr has become available
if self.sdr is None and any(s is not PropertyDeleted for s in changes.values()):
self.setSdr()
def _sendProfiles(self):
profiles = [ profiles = [
{"name": s.getName() + " " + p["name"], "id": sid + "|" + pid} {"name": s.getName() + " " + p["name"], "id": sid + "|" + pid}
for (sid, s) in SdrService.getActiveSources().items() for (sid, s) in SdrService.getActiveSources().items()
@ -302,13 +308,14 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient):
if self.sdr is not None: if self.sdr is not None:
self.sdr.removeClient(self) self.sdr.removeClient(self)
self.sdr = next
if next is None: if next is None:
# exit condition: no sdrs available # exit condition: no sdrs available
logger.warning("no more SDR devices available") logger.warning("no more SDR devices available")
self.handleNoSdrsAvailable() self.handleNoSdrsAvailable()
return return
self.sdr = next
self.sdr.addClient(self) self.sdr.addClient(self)
def handleSdrAvailable(self): def handleSdrAvailable(self):