P25 Phase 2: consult I-ISCH 2 when I-ISCH 1 fails to decode (#2458)

SuperFrameFragment.getTimeslotOffset() tests getIISCH1().isValid() twice,
so the second I-ISCH is never consulted and a fragment whose first I-ISCH
does not decode is descrambled at timeslot offset 0.  On a weak signal
the first I-ISCH fails on almost half of the fragments, and two of every
three of those are then descrambled with the wrong phase.  Test I-ISCH 2
as the surrounding code intends (isFinalFragment() already does).

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Steve Pinkham
2026-09-26 04:26:29 -04:00
committed by GitHub
parent 0c637ed80d
commit 9305abc784

View File

@@ -322,7 +322,7 @@ public class SuperFrameFragment implements IMessage
return getIISCH1().getIschSequence().getTimeslotOffset();
}
if(getIISCH1().isValid())
if(getIISCH2().isValid())
{
return getIISCH2().getIschSequence().getTimeslotOffset();
}