Kalman Filtered Symbol Clock
This headline item on this release is the use of a Kalman filter for M17 symbol clock recovery. This simplifies the code and improves symbol clock recovery. It comes at the cost of a dependency on Blaze and the need to enable C++ exceptions.
The 2.4.2 tag was never released. The primary change there was fixing an issue with LICH fragment re-assembly.
- Add M17 Setup Guide.
- Validate the LICH fragment number and mask the LICH segment bitfield properly. Send -1 for BER while LICH decode is incomplete.
- Add 8 and 11 symbol RRC filters to M17 demod.
- Trivial optimization to Viterbi.
- The FirFilter constructor and init function do not need to be templatized.
- Add reset() function to IIR filter.
- Use an 8-symbol length FIR filter for symbol interpolation.
- Update firmware version to 2.4.2.
- Make the adcInputQueue size match the number of buffers allocated in AudioInput.hpp (8).
- Add Kalman filter code. This adds a dependency on Blaze and requires that exceptions be enabled.
- Add symbol slope integrator code (currently unused).
- Allow more time for DC offset to settle.
- Add feature to allow forced DCD unlocking to aid in modem recycling.
- Use EOT sync word for end of stream rather than EOS bit. Use only sync word and Kalman filter for clock recovery. Simplify some of the state transistions. Reduce DCD limits since we can follow symbol clock at lower levels now. Use a smaller FIR filter for RRC.
- Update README.md for Blaze dependency.
- Change clock used for M17 to 48MHz.
- Update firmware version to 2.4.3.
To update the firmware, use the STM32CubeProgrammer:
STM32_Programmer_CLI -c port=SWD -d firmware-2.4.3.elf -g 0x08000000