From 4d0d316fdd3324d6690f7f773fbdf7412c6e9ae5 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 21 Dec 2019 23:29:56 +0100 Subject: [PATCH] improve sdr failure detection --- owrx/connection.py | 4 ++-- owrx/service.py | 2 +- owrx/source/__init__.py | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/owrx/connection.py b/owrx/connection.py index 58e91d9..e28c7aa 100644 --- a/owrx/connection.py +++ b/owrx/connection.py @@ -158,7 +158,7 @@ class OpenWebRxReceiverClient(Client): next = SdrService.getSource(id) if next is None: - self.handleSdrFailure("sdr device failed") + self.handleSdrFailure("sdr device unavailable") return if next == self.sdr: @@ -207,7 +207,7 @@ class OpenWebRxReceiverClient(Client): self.write_sdr_error(message) def startDsp(self): - if self.dsp is None: + if self.dsp is None and self.sdr is not None: self.dsp = DspManager(self, self.sdr) self.dsp.start() diff --git a/owrx/service.py b/owrx/service.py index aa65079..4002f88 100644 --- a/owrx/service.py +++ b/owrx/service.py @@ -110,9 +110,9 @@ class Schedule(object): class ServiceScheduler(object): def __init__(self, source, schedule): self.source = source + self.selectionTimer = None self.schedule = Schedule.parse(schedule) self.source.addClient(self) - self.selectionTimer = None self.source.getProps().collect("center_freq", "samp_rate").wire(self.onFrequencyChange) self.scheduleSelection() diff --git a/owrx/source/__init__.py b/owrx/source/__init__.py index a3c61e5..d56c10f 100644 --- a/owrx/source/__init__.py +++ b/owrx/source/__init__.py @@ -190,7 +190,11 @@ class SdrSource(object): if not available: self.failed = True - self.postStart() + try: + self.postStart() + except Exception: + logger.exception("Exception during postStart()") + self.failed = True self.modificationLock.release()