add scaffolding for pocsag decoding
This commit is contained in:
parent
4859cb5db8
commit
12e5d2f6f3
@ -160,7 +160,10 @@
|
||||
{
|
||||
"name": "70cm",
|
||||
"lower_bound": 430000000,
|
||||
"upper_bound": 440000000
|
||||
"upper_bound": 440000000,
|
||||
"frequencies": {
|
||||
"pocsag": 439987500
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "23cm",
|
||||
|
@ -129,11 +129,6 @@
|
||||
"frequency": 439937500,
|
||||
"modulation": "dmr"
|
||||
},
|
||||
{
|
||||
"name": "Pocsag",
|
||||
"frequency": 439987500,
|
||||
"modulation": "nfm"
|
||||
},
|
||||
{
|
||||
"name": "DB0ULR",
|
||||
"frequency": 145575000,
|
||||
|
14
csdr/csdr.py
14
csdr/csdr.py
@ -244,6 +244,11 @@ class dsp(object):
|
||||
if self.last_decimation != 1.0:
|
||||
chain += ["csdr fractional_decimator_ff {last_decimation}"]
|
||||
return chain + ["csdr convert_f_s16", "direwolf -c {direwolf_config} -r {audio_rate} -t 0 -q d -q h - 1>&2"]
|
||||
elif which == "pocsag":
|
||||
chain += ["csdr fmdemod_quadri_cf"]
|
||||
if self.last_decimation != 1.0:
|
||||
chain += ["csdr fractional_decimator_ff {last_decimation}"]
|
||||
return chain + ["fsk_demodulator", "pocsag_decoder"]
|
||||
|
||||
def set_secondary_demodulator(self, what):
|
||||
if self.get_secondary_demodulator() == what:
|
||||
@ -448,6 +453,8 @@ class dsp(object):
|
||||
return 48000
|
||||
elif self.isWsjtMode():
|
||||
return 12000
|
||||
elif self.isPocsag():
|
||||
return 12000
|
||||
return self.get_output_rate()
|
||||
|
||||
def isDigitalVoice(self, demodulator=None):
|
||||
@ -465,6 +472,11 @@ class dsp(object):
|
||||
demodulator = self.get_secondary_demodulator()
|
||||
return demodulator == "packet"
|
||||
|
||||
def isPocsag(self, demodulator=None):
|
||||
if demodulator is None:
|
||||
demodulator = self.get_secondary_demodulator()
|
||||
return demodulator == "pocsag"
|
||||
|
||||
def set_output_rate(self, output_rate):
|
||||
if self.output_rate == output_rate:
|
||||
return
|
||||
@ -528,7 +540,7 @@ class dsp(object):
|
||||
def set_squelch_level(self, squelch_level):
|
||||
self.squelch_level = squelch_level
|
||||
# no squelch required on digital voice modes
|
||||
actual_squelch = -150 if self.isDigitalVoice() or self.isPacket() else self.squelch_level
|
||||
actual_squelch = -150 if self.isDigitalVoice() or self.isPacket() or self.isPocsag() else self.squelch_level
|
||||
if self.running:
|
||||
self.modification_lock.acquire()
|
||||
self.squelch_pipe_file.write("%g\n" % (self.convertToLinear(actual_squelch)))
|
||||
|
@ -187,6 +187,7 @@
|
||||
<option value="jt9" data-feature="wsjt-x">JT9</option>
|
||||
<option value="ft4" data-feature="wsjt-x">FT4</option>
|
||||
<option value="packet" data-feature="packet">Packet</option>
|
||||
<option value="pocsag" data-feature="pocsag">Pocsag</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="openwebrx-panel-line">
|
||||
|
@ -2160,6 +2160,7 @@ function demodulator_digital_replace(subtype) {
|
||||
demodulators[0].set();
|
||||
break;
|
||||
case "packet":
|
||||
case "pocsag":
|
||||
secondary_demod_start(subtype);
|
||||
demodulator_analog_replace('nfm', true);
|
||||
break;
|
||||
|
@ -32,6 +32,7 @@ class FeatureDetector(object):
|
||||
"digital_voice_dsd": ["dsd", "sox", "digiham"],
|
||||
"wsjt-x": ["wsjtx", "sox"],
|
||||
"packet": ["direwolf", "sox"],
|
||||
"pocsag": ["digiham", "sox"],
|
||||
}
|
||||
|
||||
def feature_availability(self):
|
||||
@ -181,6 +182,8 @@ class FeatureDetector(object):
|
||||
"mbe_synthesizer",
|
||||
"gfsk_demodulator",
|
||||
"digitalvoice_filter",
|
||||
"fsk_demodulator",
|
||||
"pocsag_decoder",
|
||||
],
|
||||
),
|
||||
True,
|
||||
|
Loading…
Reference in New Issue
Block a user