blob: ebc617c0ed9154441ab57f15362632ad05ad5ba3 [file] [log] [blame]
Harald Welte065dab82022-11-29 23:13:06 +01001#include <stdio.h>
2#include <stdlib.h>
3#include <stdint.h>
4#include <unistd.h>
5
6#include <osmocom/core/bits.h>
7#include <osmocom/isdn/v110.h>
8
9
10static void test_frame_enc(void)
11{
12 struct osmo_v110_decoded_frame fr;
13 ubit_t bits[80];
14 unsigned int i;
15
16 memset(&fr, 0, sizeof(fr));
17
18 /* we abuse the fact that ubit_t is 8bit so we can actually
19 * store integer values to clearly identify which bit ends up where */
20
21 /* D1..D48: 101..148 */
22 for (i = 0; i < ARRAY_SIZE(fr.d_bits); i++)
23 fr.d_bits[i] = 101 + i;
24 /* E1..E7: 201..207 */
25 for (i = 0; i < ARRAY_SIZE(fr.e_bits); i++)
26 fr.e_bits[i] = 201 + i;
27 /* S1..S9: 211..219 */
28 for (i = 0; i < ARRAY_SIZE(fr.s_bits); i++)
29 fr.s_bits[i] = 211 + i;
30 /* X1..X2: 221..222 */
31 for (i = 0; i < ARRAY_SIZE(fr.x_bits); i++)
32 fr.x_bits[i] = 221 + i;
33
34 /* run encoder and dump to stdout */
35 memset(bits, 0xff, sizeof(bits));
36 osmo_v110_encode_frame(bits, sizeof(bits), &fr);
37 osmo_v110_ubit_dump(stdout, bits, sizeof(bits));
38
39 /* run decoder on what we just encoded */
40 memset(&fr, 0, sizeof(fr));
41 osmo_v110_decode_frame(&fr, bits, sizeof(bits));
42
43 /* re-encode and dump again 'expout' will match it. */
44 memset(bits, 0xff, sizeof(bits));
45 osmo_v110_encode_frame(bits, sizeof(bits), &fr);
46 osmo_v110_ubit_dump(stdout, bits, sizeof(bits));
47}
48
49
50int main(int argc, char **argv)
51{
52 test_frame_enc();
53}
54