Skip to content

Commit 418266a

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 8860f36 + cd3e2b6 commit 418266a

File tree

9 files changed

+689
-68
lines changed

9 files changed

+689
-68
lines changed

CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ option(OPT_BUILD_FILE_SOURCE "Wav file source" ON)
1717
option(OPT_BUILD_HACKRF_SOURCE "Build HackRF Source Module (Dependencies: libhackrf)" ON)
1818
option(OPT_BUILD_HERMES_SOURCE "Build Hermes Source Module (no dependencies required)" ON)
1919
option(OPT_BUILD_LIMESDR_SOURCE "Build LimeSDR Source Module (Dependencies: liblimesuite)" OFF)
20+
option(OPT_BUILD_NETWORK_SOURCE "Build Network Source Module (no dependencies required)" on)
2021
option(OPT_BUILD_PERSEUS_SOURCE "Build Perseus Source Module (Dependencies: libperseus-sdr)" OFF)
2122
option(OPT_BUILD_PLUTOSDR_SOURCE "Build PlutoSDR Source Module (Dependencies: libiio, libad9361)" ON)
2223
option(OPT_BUILD_RFSPACE_SOURCE "Build RFspace Source Module (no dependencies required)" ON)
@@ -43,7 +44,7 @@ option(OPT_BUILD_FALCON9_DECODER "Build the falcon9 live decoder (Dependencies:
4344
option(OPT_BUILD_KG_SSTV_DECODER "Build the KG SSTV (KG-STV) decoder module (no dependencies required)" OFF)
4445
option(OPT_BUILD_M17_DECODER "Build the M17 decoder module (Dependencies: codec2)" OFF)
4546
option(OPT_BUILD_METEOR_DEMODULATOR "Build the meteor demodulator module (no dependencies required)" ON)
46-
option(OPT_BUILD_PAGER_DECODER "Build the pager decoder module (no dependencies required)" OFF)
47+
option(OPT_BUILD_PAGER_DECODER "Build the pager decoder module (no dependencies required)" ON)
4748
option(OPT_BUILD_RADIO "Main audio modulation decoder (AM, FM, SSB, etc...)" ON)
4849
option(OPT_BUILD_WEATHER_SAT_DECODER "Build the HRPT decoder module (no dependencies required)" OFF)
4950

@@ -144,6 +145,10 @@ if (OPT_BUILD_LIMESDR_SOURCE)
144145
add_subdirectory("source_modules/limesdr_source")
145146
endif (OPT_BUILD_LIMESDR_SOURCE)
146147

148+
if (OPT_BUILD_NETWORK_SOURCE)
149+
add_subdirectory("source_modules/network_source")
150+
endif (OPT_BUILD_NETWORK_SOURCE)
151+
147152
if (OPT_BUILD_PERSEUS_SOURCE)
148153
add_subdirectory("source_modules/perseus_source")
149154
endif (OPT_BUILD_PERSEUS_SOURCE)

decoder_modules/pager_decoder/src/pocsag/decoder.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,12 @@
88
#include "dsp.h"
99
#include "pocsag.h"
1010

11-
const char* msgTypes[] = {
12-
"Numeric",
13-
"Unknown (0b01)",
14-
"Unknown (0b10)",
15-
"Alphanumeric",
16-
};
17-
1811
#define BAUDRATE 2400
1912
#define SAMPLERATE (BAUDRATE*10)
2013

2114
class POCSAGDecoder : public Decoder {
2215
public:
23-
POCSAGDecoder(const std::string& name, VFOManager::VFO* vfo) : diag(0.6, BAUDRATE) {
16+
POCSAGDecoder(const std::string& name, VFOManager::VFO* vfo) : diag(0.6, 544) {
2417
this->name = name;
2518
this->vfo = vfo;
2619

@@ -33,7 +26,7 @@ class POCSAGDecoder : public Decoder {
3326
vfo->setBandwidthLimits(12500, 12500, true);
3427
vfo->setSampleRate(SAMPLERATE, 12500);
3528
dsp.init(vfo->output, SAMPLERATE, BAUDRATE);
36-
reshape.init(&dsp.soft, BAUDRATE, (BAUDRATE / 30.0) - BAUDRATE);
29+
reshape.init(&dsp.soft, 544, 0);
3730
dataHandler.init(&dsp.out, _dataHandler, this);
3831
diagHandler.init(&reshape.out, _diagHandler, this);
3932

@@ -68,15 +61,13 @@ class POCSAGDecoder : public Decoder {
6861
}
6962

7063
void start() {
71-
flog::debug("POCSAG start");
7264
dsp.start();
7365
reshape.start();
7466
dataHandler.start();
7567
diagHandler.start();
7668
}
7769

7870
void stop() {
79-
flog::debug("POCSAG stop");
8071
dsp.stop();
8172
reshape.stop();
8273
dataHandler.stop();

decoder_modules/pager_decoder/src/pocsag/dsp.h

Lines changed: 97 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,89 @@
1111
#include <dsp/digital/binary_slicer.h>
1212
#include <dsp/routing/doubler.h>
1313

14+
#include "packet_clock_sync.h"
15+
16+
inline float PATTERN_DSDSDZED[] = {
17+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
18+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
19+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 1.00000000e+00,
20+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
21+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
22+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
23+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
24+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
25+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
26+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
27+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
28+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
29+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 8.00000000e-01,
30+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
31+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
32+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
33+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
34+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -8.00000000e-01,
35+
-6.00000000e-01, -4.00000000e-01, -2.00000000e-01, -2.77555756e-17,
36+
2.00000000e-01, 4.00000000e-01, 6.00000000e-01, 8.00000000e-01,
37+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
38+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
39+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 8.00000000e-01,
40+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
41+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
42+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
43+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
44+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 8.00000000e-01,
45+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
46+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
47+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
48+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
49+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -8.00000000e-01,
50+
-6.00000000e-01, -4.00000000e-01, -2.00000000e-01, -2.77555756e-17,
51+
2.00000000e-01, 4.00000000e-01, 6.00000000e-01, 8.00000000e-01,
52+
1.00000000e+00, 8.00000000e-01, 6.00000000e-01, 4.00000000e-01,
53+
2.00000000e-01, 2.77555756e-17, -2.00000000e-01, -4.00000000e-01,
54+
-6.00000000e-01, -8.00000000e-01, -1.00000000e+00, -1.00000000e+00,
55+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
56+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
57+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
58+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
59+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
60+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
61+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
62+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
63+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
64+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 8.00000000e-01,
65+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
66+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
67+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
68+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
69+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 8.00000000e-01,
70+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
71+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
72+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
73+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
74+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 1.00000000e+00,
75+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
76+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
77+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
78+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
79+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 8.00000000e-01,
80+
6.00000000e-01, 4.00000000e-01, 2.00000000e-01, 2.77555756e-17,
81+
-2.00000000e-01, -4.00000000e-01, -6.00000000e-01, -8.00000000e-01,
82+
-1.00000000e+00, -8.00000000e-01, -6.00000000e-01, -4.00000000e-01,
83+
-2.00000000e-01, -2.77555756e-17, 2.00000000e-01, 4.00000000e-01,
84+
6.00000000e-01, 8.00000000e-01, 1.00000000e+00, 1.00000000e+00,
85+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
86+
1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
87+
1.00000000e+00, 8.00000000e-01, 6.00000000e-01, 4.00000000e-01,
88+
2.00000000e-01, 2.77555756e-17, -2.00000000e-01, -4.00000000e-01,
89+
-6.00000000e-01, -8.00000000e-01, -1.00000000e+00, -1.00000000e+00,
90+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
91+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
92+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
93+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
94+
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00
95+
};
96+
1497
class POCSAGDSP : public dsp::Processor<dsp::complex_t, uint8_t> {
1598
using base_type = dsp::Processor<dsp::complex_t, uint8_t>;
1699
public:
@@ -27,7 +110,9 @@ class POCSAGDSP : public dsp::Processor<dsp::complex_t, uint8_t> {
27110
float taps[] = { 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f };
28111
shape = dsp::taps::fromArray<float>(10, taps);
29112
fir.init(NULL, shape);
30-
recov.init(NULL, samplerate/baudrate, 1e-4, 1.0, 0.05);
113+
//recov.init(NULL, samplerate/baudrate, 1e-4, 1.0, 0.05);
114+
115+
cs.init(NULL, PATTERN_DSDSDZED, sizeof(PATTERN_DSDSDZED)/sizeof(float), 544, 10);
31116

32117
// Free useless buffers
33118
// dcBlock.out.free();
@@ -42,8 +127,11 @@ class POCSAGDSP : public dsp::Processor<dsp::complex_t, uint8_t> {
42127
count = demod.process(count, in, demod.out.readBuf);
43128
//count = dcBlock.process(count, demod.out.readBuf, demod.out.readBuf);
44129
count = fir.process(count, demod.out.readBuf, demod.out.readBuf);
45-
count = recov.process(count, demod.out.readBuf, softOut);
46-
dsp::digital::BinarySlicer::process(count, softOut, out);
130+
//count = recov.process(count, demod.out.readBuf, softOut);
131+
132+
count = cs.process(count, demod.out.readBuf, softOut);
133+
134+
//dsp::digital::BinarySlicer::process(count, softOut, out);
47135
return count;
48136
}
49137

@@ -58,8 +146,10 @@ class POCSAGDSP : public dsp::Processor<dsp::complex_t, uint8_t> {
58146
count = process(count, base_type::_in->readBuf, soft.writeBuf, base_type::out.writeBuf);
59147

60148
base_type::_in->flush();
61-
if (!base_type::out.swap(count)) { return -1; }
62-
if (!soft.swap(count)) { return -1; }
149+
//if (!base_type::out.swap(count)) { return -1; }
150+
151+
if (count) { if (!soft.swap(count)) { return -1; } }
152+
63153
return count;
64154
}
65155

@@ -72,4 +162,6 @@ class POCSAGDSP : public dsp::Processor<dsp::complex_t, uint8_t> {
72162
dsp::filter::FIR<float, float> fir;
73163
dsp::clock_recovery::MM<float> recov;
74164

165+
dsp::PacketClockSync cs;
166+
75167
};

0 commit comments

Comments
 (0)