falconia has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-abis/+/38129?usp=email )
Change subject: trau_frame: fix de/encoding of HR-data-8k frames ......................................................................
trau_frame: fix de/encoding of HR-data-8k frames
Functions for decoding and encoding HR-data TRAU frames in 8 kbit/s submultiplexing, accessible via osmo_trau_frame_encode() and osmo_trau_frame_decode_8k() public APIs, were broken: movement of data bits was wrong, and in the encoding direction the setting of the last sync bit was missed.
Change-Id: I051b0b70adffcc473dcbb42a555c19088973cc90 --- M src/trau/trau_frame.c 1 file changed, 9 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/29/38129/1
diff --git a/src/trau/trau_frame.c b/src/trau/trau_frame.c index 98e26da..509021d 100644 --- a/src/trau/trau_frame.c +++ b/src/trau/trau_frame.c @@ -1110,12 +1110,13 @@ d_idx += 2; /* D3 .. D8 */ memcpy(fr->d_bits + d_idx, trau_bits + 2 * 8 + 2, 6); - /* D9 .. D57 + D'1 .. D'57 */ - for (i = 3; i < 20; i++) { + d_idx += 6; + /* D9 .. D63 + D'1 .. D'57 */ + for (i = 3; i < 19; i++) { memcpy(fr->d_bits + d_idx, trau_bits + i * 8 + 1, 7); d_idx += 7; } - /* D'58 .. D'62 */ + /* D'58 .. D'63 */ memcpy(fr->d_bits + d_idx, trau_bits + 19 * 8 + 1, 6); d_idx += 6;
@@ -1132,7 +1133,7 @@ trau_bits[1 * 8] = 1; trau_bits[2 * 8] = 0; trau_bits[2 * 8 + 1] = 1; - for (i = 3; i < 19; i++) + for (i = 3; i < 20; i++) trau_bits[i * 8] = 1; trau_bits[19 * 8 + 7] = 1;
@@ -1143,12 +1144,13 @@ d_idx += 2; /* D3 .. D8 */ memcpy(trau_bits + 2 * 8 + 2, fr->d_bits + d_idx, 6); - /* D9 .. D57 + D'1 .. D'57 */ - for (i = 3; i < 20; i++) { + d_idx += 6; + /* D9 .. D63 + D'1 .. D'57 */ + for (i = 3; i < 19; i++) { memcpy(trau_bits + i * 8 + 1, fr->d_bits + d_idx, 7); d_idx += 7; } - /* D'58 .. D'62 */ + /* D'58 .. D'63 */ memcpy(trau_bits + 19 * 8 + 1, fr->d_bits + d_idx, 6); d_idx += 6;