let's try pre-loading the pipes to improve dsp initialization

This commit is contained in:
Jakob Ketterl 2020-05-06 19:54:55 +02:00
parent eab3bf780e
commit 66a4f29911

View File

@ -639,7 +639,6 @@ class dsp(object):
def set_offset_freq(self, offset_freq): def set_offset_freq(self, offset_freq):
self.offset_freq = offset_freq self.offset_freq = offset_freq
if self.running: if self.running:
with self.modification_lock:
self.pipes["shift_pipe"].write("%g\n" % (-float(self.offset_freq) / self.samp_rate)) self.pipes["shift_pipe"].write("%g\n" % (-float(self.offset_freq) / self.samp_rate))
def set_center_freq(self, center_freq): def set_center_freq(self, center_freq):
@ -653,7 +652,6 @@ class dsp(object):
self.low_cut = low_cut self.low_cut = low_cut
self.high_cut = high_cut self.high_cut = high_cut
if self.running: if self.running:
with self.modification_lock:
self.pipes["bpf_pipe"].write( self.pipes["bpf_pipe"].write(
"%g %g\n" % (float(self.low_cut) / self.if_samp_rate(), float(self.high_cut) / self.if_samp_rate()) "%g %g\n" % (float(self.low_cut) / self.if_samp_rate(), float(self.high_cut) / self.if_samp_rate())
) )
@ -669,7 +667,6 @@ class dsp(object):
# no squelch required on digital voice modes # no squelch required on digital voice modes
actual_squelch = -150 if self.isDigitalVoice() or self.isPacket() or self.isPocsag() else self.squelch_level actual_squelch = -150 if self.isDigitalVoice() or self.isPacket() or self.isPocsag() else self.squelch_level
if self.running: if self.running:
with self.modification_lock:
self.pipes["squelch_pipe"].write("%g\n" % (self.convertToLinear(actual_squelch))) self.pipes["squelch_pipe"].write("%g\n" % (self.convertToLinear(actual_squelch)))
def set_unvoiced_quality(self, q): def set_unvoiced_quality(self, q):
@ -743,6 +740,16 @@ class dsp(object):
# create control pipes for csdr # create control pipes for csdr
self.try_create_pipes(self.pipe_names, command_base) self.try_create_pipes(self.pipe_names, command_base)
# send initial config through the pipes
if self.has_pipe("bpf_pipe"):
self.set_bpf(self.low_cut, self.high_cut)
if self.has_pipe("shift_pipe"):
self.set_offset_freq(self.offset_freq)
if self.has_pipe("squelch_pipe"):
self.set_squelch_level(self.squelch_level)
if self.has_pipe("dmr_control_pipe"):
self.set_dmr_filter(3)
# run the command # run the command
command = command_base.format( command = command_base.format(
bpf_pipe=self.pipes["bpf_pipe"], bpf_pipe=self.pipes["bpf_pipe"],
@ -799,16 +806,6 @@ class dsp(object):
self.start_secondary_demodulator() self.start_secondary_demodulator()
# send initial config through the pipes
if self.has_pipe("bpf_pipe"):
self.set_bpf(self.low_cut, self.high_cut)
if self.has_pipe("shift_pipe"):
self.set_offset_freq(self.offset_freq)
if self.has_pipe("squelch_pipe"):
self.set_squelch_level(self.squelch_level)
if self.has_pipe("dmr_control_pipe"):
self.set_dmr_filter(3)
if self.has_pipe("smeter_pipe"): if self.has_pipe("smeter_pipe"):
def read_smeter(): def read_smeter():
raw = self.pipes["smeter_pipe"].readline() raw = self.pipes["smeter_pipe"].readline()