Commit Graph

20 Commits

Author SHA1 Message Date
Niccolò Izzo 3163dd49d7 Add M17 demodulator code and tests
Added implementation of the M17 4FSK demodulator, including clock
recovery, phase detection, and quantization algorithms.
A testsuite is also included to do regression testing against a
reference baseband pre-generated and the corresponding reference
bitstream.

A 1% BER is still present due to a fault likely in the RRC filtering,
since the eye diagram of the filtered stream is bad.

TG-81
2022-05-27 21:48:46 +02:00
Silvano Seva 396f66a1f3 Implementation of M17 Viterbi decoder and associated unit test 2022-05-27 21:48:46 +02:00
Niccolò Izzo 3aeade6c1f Clarify M17 modulator constant naming
Further clarify modulator constant naming for sample rate and frame
lengths, to distinguish between demodulator values.
2022-05-27 21:48:46 +02:00
Niccolò Izzo 6588a6718e Add M17 namespace in M17 related source files
Now M17 source files reside in the M17 namespace, the OPMODE_ prefix
was added to all opmode enums to avoid a name clash.
2022-05-27 21:48:46 +02:00
Niccolò Izzo 876cb87d57 Move rrc filter into separate compilation unit
By moving the rrc filter into a separate compilation unit with its own
header file, we can use it both in the modulator and in the demodulator.
2022-05-27 21:48:46 +02:00
Niccolò Izzo c648ffe377 Add draft of M17Demodulator class 2022-05-27 21:48:46 +02:00
Silvano Seva 8a3643ad3a Implementation of Golay(24,12) decoder, reimplemented Golay(24,12) encoder using generator matrix, unit test for Golay(24,12) encoding and decoding routines 2022-05-27 21:48:46 +02:00
Silvano Seva a3b7b490d4 Fixed jitter in M17 baseband signal generation 2022-05-27 21:48:46 +02:00
Silvano Seva a9e1e68709 Implemented function for inverse code puncturing in M17 protocol 2021-10-03 12:09:00 +02:00
Silvano Seva d018dbb4a0 Implementation of M17 polynomial deinterleaver 2021-09-20 21:34:59 +02:00
Silvano Seva bad5a50d7d Updated code puncturing pattern for M17 link setup frame to follow new specifications 2021-09-03 16:44:57 +02:00
Silvano Seva 2f3db118fc Changed streamType_t from bitfield struct to union of anonymous bitfield struct and uint16_t to facilitate endianness conversion. Change also fixed a bug in endianness conversion inside M17LinkSetupFrame class due to unaligned memory access. 2021-09-03 16:44:57 +02:00
Silvano Seva 92ea1535ff Moved definition of 'PLATFORM_LINUX' macro from hwconfig to meson.build, added '-std=c++14' compilation flag to compile arguments for linux platform, added missing includes to M17Utils.h 2021-09-03 16:44:57 +02:00
Silvano Seva 98e4164f54 M17 transmitter class 2021-09-03 16:44:57 +02:00
Silvano Seva 39e41ee470 M17 4FSK modulator class 2021-09-03 16:44:57 +02:00
Silvano Seva 7b5e98bbca Implemented generation of Golay(24,12) LICH blocks inside M17LinkSetupFrame class 2021-09-03 16:39:06 +02:00
Silvano Seva 93af26ef13 Implementation of M17 decorrelator, polynomial interleaver and Golay(24,12) encoder 2021-09-03 16:39:06 +02:00
Silvano Seva ee1b111fb7 Implementation of M17 code puncturing scheme 2021-09-03 16:39:06 +02:00
Silvano Seva d545071df6 Implementation of M17 convolutional encoder 2021-09-03 16:39:06 +02:00
Silvano Seva 9e5c689bf3 M17 protocol data structures 2021-09-03 16:39:06 +02:00