improve reader handling
This commit is contained in:
parent
d02a449544
commit
3cca3f82ed
21
owrx/fft.py
21
owrx/fft.py
|
|
@ -72,14 +72,16 @@ class SpectrumThread(SdrSourceEventClient):
|
||||||
self.reader = buffer.getReader()
|
self.reader = buffer.getReader()
|
||||||
threading.Thread(target=self.dsp.pump(self.reader.read, self.sdrSource.writeSpectrumData)).start()
|
threading.Thread(target=self.dsp.pump(self.reader.read, self.sdrSource.writeSpectrumData)).start()
|
||||||
|
|
||||||
def stop(self):
|
def stopDsp(self):
|
||||||
if self.dsp is None:
|
if self.dsp is None:
|
||||||
return
|
return
|
||||||
self.dsp.stop()
|
self.dsp.stop()
|
||||||
self.dsp = None
|
self.dsp = None
|
||||||
if self.reader:
|
self.reader.stop()
|
||||||
self.reader.stop()
|
self.reader = None
|
||||||
self.reader = None
|
|
||||||
|
def stop(self):
|
||||||
|
self.stopDsp()
|
||||||
self.sdrSource.removeClient(self)
|
self.sdrSource.removeClient(self)
|
||||||
while self.subscriptions:
|
while self.subscriptions:
|
||||||
self.subscriptions.pop().cancel()
|
self.subscriptions.pop().cancel()
|
||||||
|
|
@ -93,8 +95,7 @@ class SpectrumThread(SdrSourceEventClient):
|
||||||
|
|
||||||
def onStateChange(self, state: SdrSourceState):
|
def onStateChange(self, state: SdrSourceState):
|
||||||
if state is SdrSourceState.STOPPING:
|
if state is SdrSourceState.STOPPING:
|
||||||
if self.dsp:
|
self.stopDsp()
|
||||||
self.dsp.stop()
|
|
||||||
elif state == SdrSourceState.RUNNING:
|
elif state == SdrSourceState.RUNNING:
|
||||||
if self.dsp is None:
|
if self.dsp is None:
|
||||||
self.start()
|
self.start()
|
||||||
|
|
@ -102,11 +103,7 @@ class SpectrumThread(SdrSourceEventClient):
|
||||||
self.dsp.setReader(self.sdrSource.getBuffer().getReader())
|
self.dsp.setReader(self.sdrSource.getBuffer().getReader())
|
||||||
|
|
||||||
def onFail(self):
|
def onFail(self):
|
||||||
if self.dsp is None:
|
self.stopDsp()
|
||||||
return
|
|
||||||
self.dsp.stop()
|
|
||||||
|
|
||||||
def onShutdown(self):
|
def onShutdown(self):
|
||||||
if self.dsp is None:
|
self.stopDsp()
|
||||||
return
|
|
||||||
self.dsp.stop()
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue