annotate libgsmfrp/good_frame.c @ 245:6de564ef70d3

frtest: new program gsmfr-cod2std
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 09 May 2023 22:32:48 +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 }