annotate libgsmfrp/good_frame.c @ 282:9ee8ad3d4d30

frtest: rm gsmfr-hand-test and gsmfr-max-out utils These hack programs were never properly documented and were written only as part of a debug chase, in pursuit of a bug that ultimately turned out to be in our then-hacky patch to osmo-bts-sysmo, before beginning of proper patches in Osmocom. These hack programs need to be dropped from the present sw package because they depend on old libgsm, and we are eliminating that dependency.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 14 Apr 2024 05:44:47 +0000
parents f081a6850fb5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we implement preprocessing of received good frames.
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <stdint.h>
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <string.h>
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include "gsm_fr_preproc.h"
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "internal.h"
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 void gsmfr_preproc_good_frame(struct gsmfr_preproc_state *st, gsm_byte *frame)
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 {
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 int sid;
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 /* always set correct magic */
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 frame[0] = 0xD0 | frame[0] & 0x0F;
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 /* now classify by SID */
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 sid = gsmfr_preproc_sid_classify(frame);
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 switch (sid) {
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 case 0: /* good speech frame */
242
f081a6850fb5 libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents: 5
diff changeset
20 st->rx_state = SPEECH;
5
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 memcpy(&st->speech_frame, frame, sizeof(gsm_frame));
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 return;
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 case 1: /* invalid SID frame */
242
f081a6850fb5 libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents: 5
diff changeset
24 /* state-dependent handling, similar to BFI */
f081a6850fb5 libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents: 5
diff changeset
25 gsmfr_preproc_invalid_sid(st, frame);
5
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 return;
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 case 2: /* valid SID frame */
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 st->rx_state = COMFORT_NOISE;
242
f081a6850fb5 libgsmfrp: new refined implementation
Mychaela Falconia <falcon@freecalypso.org>
parents: 5
diff changeset
29 gsmfr_preproc_sid2cn(st, frame);
5
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 return;
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 }
4812e00bc100 libgsmfrp: implement handling of good frames
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 }