comparison libutil/tfo_msg_enc.c @ 194:05d01e810217

libutil: add TFO message gen function based on Osmocom crc8gen
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 17 Mar 2023 16:52:21 -0800
parents
children
comparison
equal deleted inserted replaced
193:1f9a6cede2c5 194:05d01e810217
1 /*
2 * The function implemented in this module encodes a GSM 08.62 Extension_Block.
3 */
4
5 #include <stdint.h>
6 #include "osmo_bits.h"
7
8 /*
9 * EFR TRAU parity
10 *
11 * g(x) = x^3 + x^1 + 1
12 */
13 static const struct osmo_crc8gen_code gsm0860_efr_crc3 = {
14 .bits = 3,
15 .poly = 0x3,
16 .init = 0x0,
17 .remainder = 0x7,
18 };
19
20 void
21 encode_tfo_ext_words(bits_2_10, bits_12_15, ex, out)
22 unsigned bits_2_10, bits_12_15, ex;
23 uint16_t *out;
24 {
25 ubit_t crc_in[13];
26 uint8_t crc;
27
28 uint16_to_bits(bits_2_10, crc_in, 9);
29 uint16_to_bits(bits_12_15, crc_in + 9, 4);
30 crc = osmo_crc8gen_compute_bits(&gsm0860_efr_crc3, crc_in, 13);
31 out[0] = bits_2_10;
32 out[1] = (bits_12_15 << 5) | (crc << 2) | ex;
33 }