FreeCalypso > hg > sipout-test-utils
diff libutil/tfo_msg_enc.c @ 0:35c0d9f03c0a
beginning with sipout-test-voice,
a copy of sip-manual-out from themwi-system-sw
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 03 Mar 2024 23:20:19 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libutil/tfo_msg_enc.c Sun Mar 03 23:20:19 2024 -0800 @@ -0,0 +1,33 @@ +/* + * The function implemented in this module encodes a GSM 08.62 Extension_Block. + */ + +#include <stdint.h> +#include "osmo_bits.h" + +/* + * EFR TRAU parity + * + * g(x) = x^3 + x^1 + 1 + */ +static const struct osmo_crc8gen_code gsm0860_efr_crc3 = { + .bits = 3, + .poly = 0x3, + .init = 0x0, + .remainder = 0x7, +}; + +void +encode_tfo_ext_words(bits_2_10, bits_12_15, ex, out) + unsigned bits_2_10, bits_12_15, ex; + uint16_t *out; +{ + ubit_t crc_in[13]; + uint8_t crc; + + uint16_to_bits(bits_2_10, crc_in, 9); + uint16_to_bits(bits_12_15, crc_in + 9, 4); + crc = osmo_crc8gen_compute_bits(&gsm0860_efr_crc3, crc_in, 13); + out[0] = bits_2_10; + out[1] = (bits_12_15 << 5) | (crc << 2) | ex; +}