Silvano Seva
1f77c2af6c
Reorganised logging inside M17 demodulator, logging is disabled by default.
...
On non-linux devices log data is printed on the serial port in raw binary format.
2022-05-27 21:48:47 +02:00
Silvano Seva
6be567a781
Implementation of a statically allocated ring buffer with blocking and non-blocking push and pop
2022-05-27 21:48:47 +02:00
Niccolò Izzo
ef61c532a3
Cleaned up quantization average
...
Now average is computed over all the syncword symbols, for each syncword
as a simple average.
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
5fe5b0e578
Refactor M17 logging
...
Refactored logging functions to enable in-system logging on Module17 and
MDx radios.
TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva
361308be16
Generator of pseudorandom binary sequence compliant with M17 specification
2022-05-27 21:48:47 +02:00
Silvano Seva
3988540b6c
Changed coefficients for the 41-tap, 24kHz RRC filter to have unitary input-output gain
2022-05-27 21:48:47 +02:00
Mathis Schmieder
54112d4d7b
Increased input gain on MD-UV3x0 type of radios
2022-05-27 21:48:47 +02:00
Niccolò Izzo
c3c984d504
Add syncword fuzzy detection
...
Frame decoder now tolerates bit error in syncword, removed syncword type
detection in demodulator code.
TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva
b998d3b78f
Modified time constant of DC removal high-pass filter to avoid a too high cut-off frequency when run with at fast sample rates
2022-05-27 21:48:47 +02:00
Silvano Seva
6b31a73f42
Corrected RRC gain and changed HR_C5000 modulation factor and input gain to have the correct 2.4kHz deviation when transmitting M17 with an MD3x0 radio
2022-05-27 21:48:47 +02:00
Niccolò Izzo
b1f2cb109f
Switch M17 Rx sample rate to 5SPS
...
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.
TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva
e68b05d859
Fixed double free errors in M17 code, see #73
2022-05-27 21:48:47 +02:00
Niccolò Izzo
2d59658d60
Switch M17 Rx sample rate to 5SPS
...
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
63bd864674
Fix M17 Rx LED
...
Now LED turns on when a syncword is successfully detected, not just when
the correlation is sufficiently high.
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
c4483edff0
Improve quantization strategy
...
Now quantization is performed by averaging syncword samples and dividing
the resulting threshold by a constant.
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
2e7ed7a8f0
M17 demodulator further improvements
...
- Fix phase propagation across buffers
- Fix initial syncword offset detection
- Improve quantization algorithm
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
7d1b89550e
Rewrite quantization algorithm
...
Quantization algorithm is now based on separate rolling averages for
positive and negative samples.
Merged csv outputs from syncword search and quantization on Linux.
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
aa9fcc26b7
Remove useless DC bias in quantization
...
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo
d1651a702c
Add proper DC-bias removal, tuned EMAs
2022-05-27 21:48:47 +02:00
Silvano Seva
da5c453852
Implemented unpacking and decoding of M17 audio stream frames
2022-05-27 21:48:47 +02:00
Silvano Seva
a37e24c953
Fixed a buffer management bug inside linux input stream driver
2022-05-27 21:48:47 +02:00
Silvano Seva
086cb549c7
Stub implementation of output stream driver for linux emulator
2022-05-27 21:48:47 +02:00
Silvano Seva
beca0d2acc
Reorganised constants inside M17 demodulator class
2022-05-27 21:48:47 +02:00
Silvano Seva
77dfeef9e7
Implemented audio decoding functions in CODEC2 module
2022-05-27 21:48:47 +02:00
Silvano Seva
c7fbd98dc9
Stub implementatio of output stream driver for GDx devices
2022-05-27 21:48:47 +02:00
Silvano Seva
fda0fed5e7
Moved constant specifying sample rate for M17 baseband decoding from hwconfig.h files to M17Demodulator class
2022-05-27 21:48:47 +02:00
Silvano Seva
e5b5daba85
Moved state variables of PWM compensator and DC removal filter outside the function bodies to allow keeping their consistency among function calls
2022-05-27 21:48:47 +02:00
Silvano Seva
9139b19aac
Fixed bug in MDx input stream driver causing the SPI clock line towards the DMR chip to be set as analog input when an audio stream from the RF stage was opened
2022-05-27 21:48:47 +02:00
Mathis Schmieder
89c05a7332
Adjusted Module17 mic processing gain; interim-fix for DC offset removal
2022-05-27 21:48:47 +02:00
Silvano Seva
49e5486ea6
Parametric mic gain inside codec2 module
2022-05-27 21:48:47 +02:00
Silvano Seva
b144657257
Moved CODEC2 management to a dedicated module
2022-05-27 21:48:47 +02:00
Silvano Seva
4b8685b853
Changed gain and added an offset at tx RRC stage only for Module 17 to compensate for an hardware bug
2022-05-27 21:48:47 +02:00
Silvano Seva
4a3e31cd03
Fixed bug in M17 demodulator caused by the precedent code refactoring
2022-05-27 21:48:47 +02:00
Silvano Seva
d1b4973cc9
Fixed reset of DC bias on stream stop in Module 17 output stream driver, made parametric the gain of the RRC at modulator side
2022-05-27 21:48:47 +02:00
Silvano Seva
94fdf44954
Biased Module 17 baseband DAC output to Vdd/2 when idle
2022-05-27 21:48:47 +02:00
Silvano Seva
83020d4fa3
Increased priority of CODEC2 thread, this fixes glitches when generating M17 baseband signal
2022-05-27 21:48:47 +02:00
Silvano Seva
628c341712
Small improvements to MDx and Module 17 output stream drivers
2022-05-27 21:48:47 +02:00
Silvano Seva
1bc1316f7d
Fixed bug to Module 17 input stream driver causing the thread waiting on inputStream_getData() to not be woken up when stream was stopped
2022-05-27 21:48:47 +02:00
Silvano Seva
12dc186129
Fixed bug in Module 17 output stream driver causing outputStream_sync() to hang when a stream was opened for the second time
2022-05-27 21:48:47 +02:00
Silvano Seva
eb22e4b4b2
Default VFO channel for Module 17, making it start in M17 operating mode at boot
2022-05-27 21:48:47 +02:00
Silvano Seva
3d169484e9
Improved management of CODEC2 thread in M17 mode handler, now activated only when transmitting. Fixes a confict with RTX and MIC input streams causing the rtx thread to hang when PTT was pressed
2022-05-27 21:48:47 +02:00
Silvano Seva
54a89abcd0
Removed a printf left behind after debugging from M17 demodulator class and slightly cleaned up the code
2022-05-27 21:48:47 +02:00
Silvano Seva
163a2ef06a
Updated Module 17 output stream driver to support also double buffered mode
2022-05-27 21:48:47 +02:00
Silvano Seva
c9a4bfb199
Cleanup and refactoring of M17 modulator class, now using output streams for baseband signal output
2022-05-27 21:48:47 +02:00
Silvano Seva
0df1dc4f7e
Extended output stream API to support also circular double-buffered mode, implemented output stream driver for MDx
2022-05-27 21:48:47 +02:00
Silvano Seva
034f5d9ee9
Removed API for audio stream playback from MDx tone generator
2022-05-27 21:48:47 +02:00
Silvano Seva
5c90c19bea
Data conversion utilities
2022-05-27 21:48:47 +02:00
Silvano Seva
7891288030
Fixed compilation warnings generated by graphics.cpp
2022-05-27 21:48:47 +02:00
Silvano Seva
427c5f50b3
Made M17Demodulator::update() return a boolean indicating when a new decoded frame is ready
2022-05-27 21:48:47 +02:00
Niccolò Izzo
3372da2b64
Set Rx test to 48k
2022-05-27 21:48:47 +02:00