data used prior to FEC in DSDYSF::procesVFRFrame
VE3RQX opened this issue · 0 comments
VE3RQX commented
In DSDYSF::procesVFR(), there is a call to a function scrambleVFR() which is given a quantity ("seed") that is computed from data (the first 12 entries in m_vfrBitsRaw) that has not yet seen a FEC decoder.
scrambleVFR() has the property that a single bit error in that seed would ruin most of the 20ms VCH -- the Golay (23,12) decoders would likely be overwhelmed.
A quick test confirms this theory: we force an error by placing:
m_vfrBitsRaw[0] ^= 1;
on line 802 of ysf.cpp, just before the seed is computed. Rebuild. Then set a YSF radio to its "VW" mode -- I used a Yaesu FT5D -- and transmit: dsdcc produces mangled audio.
Remove that line and all is well.