FreeCalypso > hg > sipout-test-utils
annotate test-voice/pcmu_catcher.c @ 16:4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 13 May 2024 22:10:25 -0800 |
parents | |
children |
rev | line source |
---|---|
16
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This module implements the logic that scans received PCMU sample streams |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * for patterns that result from a GSM-FR or GSM-EFR decoder processing |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * uplink test frames constructed in vband-misc repository, ul-test |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * subdirectory. |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 */ |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdio.h> |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <stdint.h> |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 static const uint8_t match_frame_fr[160] = { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 0xFF,0x0F,0x0E,0x1B,0x8D,0x8A,0x9C,0x23,0x1D,0x38,0x1C,0x1B,0x26,0x8A,0x80,0x92, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 0x11,0x06,0x1E,0xA3,0x9B,0xBF,0x9B,0x91,0x9C,0x11,0x06,0x1C,0x98,0x87,0x8D,0xAF, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 0x1D,0x16,0x13,0x1F,0xBE,0x8D,0x88,0x99,0x1D,0x07,0x05,0x12,0xAC,0x8B,0x87,0x95, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 0x25,0x09,0x06,0x14,0xAA,0x8B,0x88,0x97,0x25,0x0A,0x09,0x1A,0xA4,0x8C,0x8A,0x99, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 0x28,0x0C,0x09,0x1B,0xA5,0x8C,0x8B,0x9D,0x23,0x0C,0x0A,0x19,0xA4,0x8C,0x8A,0x9D, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 0x1E,0x0A,0x0A,0x1C,0xA2,0x8C,0x8B,0x9B,0x25,0x0C,0x0A,0x19,0xA7,0x8C,0x8B,0x9B, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 0x26,0x0D,0x0B,0x1A,0xAA,0x8D,0x8A,0x99,0x2A,0x0D,0x0B,0x1A,0xAB,0x8E,0x8C,0x99, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 0x2F,0x0F,0x0B,0x19,0xAE,0x8E,0x8C,0x99,0x34,0x0F,0x0D,0x1A,0xB2,0x91,0x8D,0x99, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 0x3B,0x12,0x0D,0x19,0xBA,0x92,0x8E,0x9B,0x38,0x14,0x0F,0x1B,0xBB,0x94,0x8E,0x9A, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 0x3B,0x13,0x0E,0x1B,0xBA,0x95,0x90,0x9B,0x3F,0x16,0x0F,0x1B,0xBB,0x94,0x8F,0x9C, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 }; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 static const uint8_t match_frame_efr_classic[160] = { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 0x6F,0x64,0x63,0x6B,0xE8,0xDA,0xDC,0xEF,0x60,0x5A,0x5D,0x6F,0xE2,0xD8,0xD9,0xEC, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 0x5F,0x58,0x5E,0x7E,0xE2,0xDF,0xE2,0xF0,0x63,0x58,0x59,0x67,0xE0,0xD4,0xD7,0xEC, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 0x5E,0x56,0x5A,0x6D,0xE1,0xD6,0xD7,0xEA,0x4D,0x37,0x2F,0x3A,0xC2,0xA7,0xA3,0xB5, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 0x2F,0x1C,0x1A,0x2D,0xA9,0x96,0x96,0xAE,0x22,0x12,0x14,0x31,0x9E,0x8F,0x94,0xB6, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 0x1B,0x0D,0x0F,0x2C,0x9B,0x8C,0x8E,0xAB,0x17,0x09,0x0C,0x28,0x97,0x88,0x8A,0xA7, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 0x15,0x07,0x0A,0x29,0x95,0x88,0x8B,0xAA,0x15,0x08,0x0B,0x2A,0x96,0x88,0x8B,0xAA, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 0x15,0x09,0x0C,0x2A,0x97,0x89,0x8C,0xAA,0x17,0x0A,0x0D,0x2B,0x98,0x8A,0x8D,0xAB, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 0x18,0x0A,0x0D,0x2A,0x99,0x8A,0x8D,0xAA,0x18,0x0A,0x0D,0x29,0x99,0x8A,0x8D,0xA9, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 0x19,0x0A,0x0D,0x29,0x99,0x8A,0x8D,0xA9,0x19,0x0A,0x0D,0x29,0x99,0x8A,0x8D,0xA9, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 0x19,0x0A,0x0D,0x28,0x99,0x8A,0x8C,0xA8,0x19,0x0A,0x0D,0x27,0x9A,0x8B,0x8D,0xA7, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 }; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 static const uint8_t match_frame_amrefr_dec[160] = { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 0x6F,0x66,0x66,0x6E,0xE5,0xDA,0xDD,0xF2,0x5F,0x5A,0x5E,0x76,0xE0,0xD8,0xDA,0xEF, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 0x5E,0x59,0x5F,0xFC,0xE1,0xDF,0xE5,0xF5,0x61,0x59,0x5B,0x6B,0xDE,0xD4,0xD9,0xEF, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 0x5D,0x56,0x5B,0x71,0xDF,0xD6,0xD8,0xEE,0x4D,0x38,0x31,0x3E,0xBD,0xA7,0xA5,0xB9, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 0x2D,0x1C,0x1C,0x35,0xA5,0x96,0x98,0xB4,0x1F,0x12,0x17,0x3D,0x9C,0x90,0x96,0xC1, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 0x1A,0x0E,0x12,0x38,0x98,0x8C,0x8F,0xB4,0x16,0x0A,0x0D,0x32,0x94,0x88,0x8C,0xAE, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 0x13,0x08,0x0C,0x35,0x92,0x88,0x8C,0xB3,0x13,0x08,0x0D,0x35,0x93,0x88,0x8D,0xB3, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 0x13,0x09,0x0D,0x34,0x94,0x89,0x8D,0xB3,0x15,0x0A,0x0E,0x35,0x96,0x8B,0x8E,0xB5, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 0x16,0x0B,0x0E,0x32,0x97,0x8B,0x8E,0xB3,0x16,0x0A,0x0E,0x32,0x96,0x8A,0x8E,0xB1, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 0x16,0x0B,0x0E,0x31,0x96,0x8B,0x8E,0xB1,0x16,0x0B,0x0E,0x31,0x97,0x8B,0x8E,0xB1, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 0x16,0x0A,0x0E,0x30,0x97,0x8A,0x8E,0xAF,0x17,0x0B,0x0E,0x2F,0x97,0x8B,0x8E,0xAE, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 }; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 enum state { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 STATE_GROUND, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 STATE_FE, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 STATE_EFR_PRELIM, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 STATE_EFR_CLASSIC, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 STATE_EFR_AMR, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 STATE_FR, |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 }; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 static enum state state; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 static unsigned fe_byte_count, match_pos; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 void |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 pcmu_catcher_reset() |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 static void |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 report_match(name, offset) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 char *name; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 unsigned offset; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 offset++; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 if (offset == 160) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 offset = 0; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 printf("Caught output of %s decoder at offset %u\n", name, offset); |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 static void |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 process_sample(samp, offset) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 unsigned samp, offset; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 if (samp == 0xFE) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 if (state != STATE_FE) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 state = STATE_FE; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 fe_byte_count = 1; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 } else if (fe_byte_count < 160) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 fe_byte_count++; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 switch (state) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 case STATE_GROUND: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 case STATE_FE: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 if (fe_byte_count < 160) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 switch (samp) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 case 0x6F: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 state = STATE_EFR_PRELIM; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 case 0xFF: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 state = STATE_FR; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 match_pos = 1; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 default: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 case STATE_EFR_PRELIM: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 switch (samp) { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 case 0x64: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 state = STATE_EFR_CLASSIC; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 match_pos = 2; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 case 0x66: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 state = STATE_EFR_AMR; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 match_pos = 2; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 default: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 case STATE_EFR_CLASSIC: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 if (samp == match_frame_efr_classic[match_pos]) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 match_pos++; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 else { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 if (match_pos < 160) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 report_match("classic EFR", offset); |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 case STATE_EFR_AMR: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 if (samp == match_frame_amrefr_dec[match_pos]) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 match_pos++; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 else { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 if (match_pos < 160) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 report_match("AMR-EFR", offset); |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 case STATE_FR: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 if (samp == match_frame_fr[match_pos]) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 match_pos++; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 else { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 if (match_pos < 160) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 report_match("GSM-FR", offset); |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 return; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 default: |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 state = STATE_GROUND; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 } |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 void |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 pcmu_catcher_process(inbuf) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 uint8_t *inbuf; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 { |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 unsigned n; |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 for (n = 0; n < 160; n++) |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 process_sample(inbuf[n], n); |
4f81b959a5f5
sipout-test-voice: implement PCMU GSM uplink catcher
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 } |