Skip to content

Major fix of FSK demod

Compare
Choose a tag to compare
@f4exb f4exb released this 26 Aug 21:22
· 266 commits to master since this release

Major fix of FSK demod

This is a complete rewrite of the FSK demod present in the DSDSymbol class. The original algorithm was giving a lot of errors because symbol synchronization and min/max estimation were not implemented correctly. This results in a much improved and robust decoding process removing many clicks and noises that were polluting voice output and less corruption in decoded data.

The min/max estimation runs permanently with an optimized running min/max calculator over 24 symbols.

The symbol synchronization is obtained by squaring the discriminator input signal and passing it through a narrow second order pass band filter. The zero crossings with enough quality (slope) are used to maintain symbol framing.

The sync words of each protocol (DMR, D-Star, dPMR, ...) are searched after processes above have taken place and this does not interfere with them. When looking for a protocol sync word a 2-FSK is assumed. Except for the case of Yaesu System Fusion (YSF) the synchronization words only use the extreme symbols (mapped to -3/+3 deviation). In the case of YSF the low deviation symbols (-1/+1) are mapped to their high deviation counterparts.

Other changes to FSK demod

- Better isolation of the DSDSymbol class (the actual FSK demod) - Complete removal of pseudo optimizations (GFSK, C4FM) - Complete removal of QPSK. This is a FSK demod. If you want QPSK you must use a different implementation. - Following both changes above there is no "mode" any more - Method to set 2 or 4-FSK and polarity - Method to set symbol (Baud) rate: 2400, 4800 and 9600. The 9600 baud rate is not operational and will be fixed or removed in future versions - Expose symbol synchronization data for client visualization - Expose signal range and center for client visualization

Changes to dPMR decoder

- Fixed CCH frame count - Decode own and caller IDs also from CCH