Major fix of FSK demod
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.