FreeCalypso > hg > gsm-net-reveng
comparison doc/TRAU-UL-testing @ 23:bffbe80ffade
doc/TRAU-UL-testing: article written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 23 Jun 2024 23:21:45 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
22:8957383370c5 | 23:bffbe80ffade |
---|---|
1 In order to conduct behavioral reverse eng of the historical TRAU we have in | |
2 our lab (Nokia TCSM2), we will need to feed TRAU-UL frames to its Ater interface | |
3 (first GSM 08.60 FR and EFR, then later GSM 08.61 HR), exercising various | |
4 combinations of speech parameters and out-of-band control bits. In order to | |
5 conduct these exercises, we need some test file formats of our own invention: | |
6 | |
7 * The source format for human editing is ASCII-based, friendly toward arbitrary | |
8 manipulation of speech parameters and flags. We call this ad hoc ASCII source | |
9 format *.tsrc, for TRAU-UL source. | |
10 | |
11 * trau-ul-compile program in the present code repository will compile these | |
12 *.tsrc source files into *.tul (TRAU-UL) binary format; | |
13 | |
14 * The Ater test program in ice1-trau-tester repository will read binary frames | |
15 from our ad hoc *.tul file format and turn them into actual TRAU-UL bits | |
16 going to E1. | |
17 | |
18 *.tul binary format | |
19 =================== | |
20 | |
21 Each frame (FR or EFR) is stored as a fixed record of 34 bytes. The format for | |
22 FR is: | |
23 | |
24 * 33 bytes of standard RTP format representing 260 bits of payload; | |
25 * 1 byte of BFI+SID flags. | |
26 | |
27 The format for EFR is: | |
28 | |
29 * 31 bytes of standard RTP format representing 244 bits of payload; | |
30 * 1 byte controlling CRC inversion; | |
31 * 1 byte spare; | |
32 * 1 byte of BFI+SID flags. | |
33 | |
34 Because each *.tul record begins with an FR or EFR frame in standard RTP | |
35 encoding, and the latter includes a signature (0xD or 0xC) in the upper nibble | |
36 of the first byte, each *.tul record can be trivially checked if it is for FR | |
37 or EFR testing. | |
38 | |
39 Byte of BFI+SID flags | |
40 --------------------- | |
41 | |
42 Bit 0x80 is BFI, bits 0x03 are SID, the rest are reserved. | |
43 | |
44 EFR CRC inversion control | |
45 ------------------------- | |
46 | |
47 We can generate EFR TRAU-UL frames with either correct or inverted CRC. | |
48 Furthermore, GSM 08.60 frame format for EFR has 5 separate CRC fields covering | |
49 different parts of the frame, and we can independently control the correct-or- | |
50 inverted choice for each. | |
51 | |
52 The CRC manipulation byte included in *.tul frames for EFR has 5 used and 3 | |
53 reserved bits. The 5 most significant bits correspond to the 5 CRC fields in | |
54 GSM 08.60 frame format; control bit equal to 0 means send correct CRC, otherwise | |
55 send inverted CRC. | |
56 | |
57 ASCII source format | |
58 =================== | |
59 | |
60 Example for FR: | |
61 | |
62 Frame_FR { | |
63 LARc 9 23 15 8 7 3 3 2 | |
64 sf 40 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 | |
65 sf 40 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 | |
66 sf 40 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 | |
67 sf 40 0 0 0 4 4 4 4 3 4 4 4 4 4 4 4 4 | |
68 } | |
69 | |
70 Example for EFR: | |
71 | |
72 Frame_EFR { | |
73 BFI 0 | |
74 LPC 4 47 180 144 62 | |
75 sf 342 11 0 1 15 1 13 0 3 0 3 0 3 | |
76 sf 54 1 8 8 5 8 1 0 0 1 1 0 0 | |
77 sf 342 0 0 0 0 0 0 0 0 0 0 0 0 | |
78 sf 54 11 0 0 0 0 0 0 0 0 0 0 0 | |
79 SID 0 | |
80 } | |
81 | |
82 Each frame to be encoded must be given as a block beginning with "Frame_FR {" | |
83 or "Frame_EFR {" opening line and closing with "}". The opening brace must be | |
84 on the same line as the frame type keyword, and that line must have no other | |
85 fields; the closing brace must be on its own line. (The actual parser is line- | |
86 based, despite the appearance of braces.) | |
87 | |
88 Each interior line shall consist of a keyword followed by numbers; the keyword | |
89 indicates which part of the frame is being set. LARc for FR or LPC for EFR sets | |
90 the frame-global speech parameters (8 for FR and 5 for EFR); sf sets subframe | |
91 parameters. Every frame must have one LARc/LPC line and exactly 4 sf lines. | |
92 | |
93 BFI and SID settings are optional. If BFI is not set, it defaults to 0; if SID | |
94 is not set, it is computed from the speech parameters per standard bit counting | |
95 rules of GSM 06.31 or 06.81 section 6.1.1. | |
96 | |
97 For EFR only, there will also be an optional crc-inv setting that sets the CRC | |
98 manipulation byte, defaulting to 0 (correct CRC). | |
99 | |
100 Aside from the required line structure, white space (' ' and '\t') can appear | |
101 anywhere and is ignored. '#' character introduces a comment, continuing to the | |
102 end of the line. | |
103 | |
104 All keywords are case-insensitive. |