FreeCalypso > hg > gsm-codec-lib
view hrutil/print-frame.c @ 604:54f0f1b74c25
libgsmhr1 TFO: require BFI=0 and SID=0 for homing
In order for a received frame to be recognized as DHF, we need
not only the correct bit pattern, but also BFI=0 and SID=0.
The BFI=0 requirement should be obvious, while the SID=0 requirement
is needed only for HR codec. With FR and EFR, SID classification
comes from the payload bits and no separate check is needed -
but in HR we get an out-of-band SID ternary flag. When SID=1,
no payload bits are used at all; when SID=2, we use only the first
33 bits of the payload. Therefore, it is proper to conditionalize
DHF acceptance on SID=0.
We already implemented this logic in the just finished full decoder;
now bring TFO code into agreement.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 04 Dec 2025 19:40:35 +0000 |
| parents | bb36ef735f25 |
| children |
line wrap: on
line source
/* * Here we implement the common function that prints the parameters body * of each GSM-HR codec frame, whichever file format we read it from. */ #include <stdio.h> #include <stdint.h> print_frame_params(params) int16_t *params; { printf(" R0=%02x LPC=%03x,%03x,%02x Int=%x Mode=%x\n", params[0], params[1], params[2], params[3], params[4], params[5]); printf(params[5] ? " s1=%02x,%03x,%02x" : " s1=%02x,%02x,%02x", params[6], params[7], params[8]); printf(params[5] ? " s2=%x,%03x,%02x" : " s2=%02x,%02x,%02x", params[9], params[10], params[11]); printf(params[5] ? " s3=%x,%03x,%02x" : " s3=%02x,%02x,%02x", params[12], params[13], params[14]); printf(params[5] ? " s4=%x,%03x,%02x\n" : " s4=%02x,%02x,%02x\n", params[15], params[16], params[17]); }
