trau2rtp TW-TS-001: handle corner case of BFI with stale SID bits (details)
trau2rtp unit test: add patterns that showcase BFI=1 SID=0 (details)
trau2rtp EFR unit test: add patterns with bad CRC (details)
Commit
e34d2407e64ef403e62acaa1436ba40442c07bac
by falcon
trau2rtp TW-TS-001: handle corner case of BFI with stale SID bits
Many BTS models will emit the previous content of their internal buffer, perhaps corrupted in some peculiar way, when they need to emit "BFI with no data" because they received FACCH, or because they received nothing at all and no channel decoding attempt was made. This situation is described in detail here:
However, when these TRAU-UL BFIs (from Abis or from incoming TFO) are to be converted to TW-TS-001 with osmo_trau2rtp(), a corner case arises: if the BTS indicated SID=0 by way of C13 & C14 bits but the stale payload bit content indicates SID != 0, the full decoder or TFO transform on the receiving end of the RTP stream will get an erroneous "invalid SID" indication (instead of "plain" BFI) if the marked-bad payload is passed through without alteration.
Handle this corner case by modifying marked-bad (BFI=1) payloads to make them non-SID in the special case when the BTS indicated SID=0, but the bit pattern says otherwise.
Commit
9cfcbdd2b94195f77be37cbb2c7014946f476c1e
by falcon
trau2rtp unit test: add patterns that showcase BFI=1 SID=0
The previous patch added special handling for the corner case in which the BTS indicates BFI=1 SID=0, but the bit pattern is still SID by the bit counting rules of GSM 06.31 or 06.81 section 6.1.1. The selection of test patterns in the unit test already had some frames that exhibit this effect, taken from actual Abis output of Nokia InSite BTS, but the exact effect of our handling becomes more visible when the bit pattern forms a perfect (not corrupted) SID frame, which I haven't been able to produce with the InSite. Therefore, add some hand-crafted test frames that fully showcase the effect of our transform.
Commit
0d739ca669622faa29ef350d66a47979c54e8aaf
by falcon
trau2rtp EFR unit test: add patterns with bad CRC
Unlike its FRv1 counterpart, the TRAU frame format for EFR includes CRC, intended to catch transmission errors in terrestrial circuits. Add some bad CRC patterns to the unit test for osmo_trau2rtp() EFR.