annotate libgsmhr1/dtx_rxfe.c @ 577:d68b2c92464a

libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 13 Feb 2025 03:06:11 +0000
parents
children 7756b23b78cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
577
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * Here we implement the subset of DTX functions that are used by the Rx
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * front end, i.e., the part of libgsmhr1 that is common between the full
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * decoder and our TFO transform implementation. Note that the same DTX
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * functions will also be used by the speech encoder.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "typedefs.h"
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "namespace.h"
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "dtx_rxfe.h"
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include "mathhalf.h"
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "mathdp31.h"
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 /* relevant definitions from original dtx.c */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #define PN_XOR_REG (Longword)0x00000005L
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #define PN_XOR_ADD (Longword)0x40000000L
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 #define OH_SHIFT 3 /* shift corresponding to OVERHANG */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 /* Values of GS for voicing state 0, all values shifted down by 2
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 shifts */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 const LongwordRom ppLr_gsTable[4][32] =
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 0x000011ab, 0x000038d2, 0x0000773e, 0x000144ef,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 0x00035675, 0x000648c5, 0x000c3d65, 0x0017ae17,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 0x002a3dbb, 0x005238e7, 0x00695c1a, 0x00a60d45,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 0x00e4cc68, 0x01c3ba6a, 0x019e3c96, 0x02d1fbac,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 0x030453ec, 0x0549a998, 0x05190298, 0x08258920,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 0x08daff30, 0x0c3150e0, 0x0e45d850, 0x14c111a0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 0x0ff7e1c0, 0x18a06860, 0x13810400, 0x1abc9ee0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 0x28500940, 0x41f22800, 0x22fc5040, 0x2cd90180
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 },
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 0x00003ede, 0x00021fc9, 0x0013f0c3, 0x003a7be2,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 0x007a6663, 0x00fe3773, 0x012fabf4, 0x02275cd0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 0x01c0ef14, 0x02c0b1d8, 0x0350fc70, 0x05505078,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 0x04175f30, 0x052c1098, 0x08ed3310, 0x0a63b470,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 0x05417870, 0x08995ee0, 0x07bbe018, 0x0a19fa10,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 0x0b5818c0, 0x0fd96ea0, 0x0e5cad10, 0x13b40d40,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 0x12d45840, 0x14577320, 0x2b2e5e00, 0x333e9640,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 0x194c35c0, 0x1c30f8c0, 0x2d16db00, 0x2cc970ff
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 },
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 0x002f18e7, 0x00a47be0, 0x01222efe, 0x01c42df8,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 0x024be794, 0x03424c40, 0x036950fc, 0x04973108,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 0x038405b4, 0x05d8c8f0, 0x05063e08, 0x070cdea0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 0x05812be8, 0x06da5fc8, 0x088fcd60, 0x0a013cb0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 0x0909a460, 0x09e6cf40, 0x0ee581d0, 0x0ec99f20,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 0x0b4e7470, 0x0c730e80, 0x0ff39d20, 0x105d0d80,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 0x158b0b00, 0x172babe0, 0x14576460, 0x181a6720,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 0x26126e80, 0x1f590180, 0x1fdaad60, 0x2e0e8000
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 },
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 0x00c7f603, 0x01260cda, 0x01b3926a, 0x026d82bc,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 0x0228fba0, 0x036ec5b0, 0x034bf4cc, 0x043a55d0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 0x044f9c20, 0x05c66f50, 0x0515f890, 0x06065300,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 0x0665dc00, 0x0802b630, 0x0737a1c0, 0x087294e0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 0x09253fc0, 0x0a619760, 0x097bd060, 0x0a6d4e50,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 0x0d19e520, 0x0e15c420, 0x0c4e4eb0, 0x0e8880e0,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 0x11cdf480, 0x12c85800, 0x10f4c0a0, 0x13e51b00,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 0x189dbaa0, 0x18a6bb60, 0x22e31500, 0x21615240
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 };
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 /*************************************************************************
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 * FUNCTION NAME: avgGsHistQntz
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 * PURPOSE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 * Average gs history, where history is of length OVERHANG-1
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 * frames. The last frame's (i.e. this frame) gs values are not
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 * available since quantization would have occured only after the
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 * VAD decision is made.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 * INPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 * pL_GsHistory[(OVERHANG-1)*N_SUB] - the GS of the past
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 * OVERHANG-1 frames. The GS values are stored shifted down by 2
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 * shifts to avoid overflow (the largest GS is greater than 2.0).
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 * OUTPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 * *pL_GsAvgd - the average of pL_GsHistory[], also shifted down
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 * by two shifts.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 * RETURN VALUE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 * none.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 *************************************************************************/
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 void avgGsHistQntz(Longword pL_GsHistory[], Longword *pL_GsAvgd)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 | Automatic Variables |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 int i;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 Longword L_avg;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 | Executable Code |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 L_avg = L_shift_r(pL_GsHistory[0], -(OH_SHIFT + 2));
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 for (i = 1; i < N_SUB * (OVERHANG - 1); i++)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 L_avg = L_add(L_shift_r(pL_GsHistory[i], -(OH_SHIFT + 2)), L_avg);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 /* avg number x/32 not x/28 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 *pL_GsAvgd = L_add(L_avg, L_mpy_ls(L_avg, 0x1249)); /* L_avg *= 32/28 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 /*************************************************************************
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 * FUNCTION NAME: gsQuant
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 * PURPOSE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 * Quantize a value of gs in any of the voicing modes. Input GS
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 * is a 32 bit number. The GSP0 index is returned.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 * INPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 * L_GsIn - 32 bit GS value, shifted down by 2 shifts.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 * swVoicingMode - voicing level
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 * ppLr_gsTable[4][32] - Rom GS Table. (global), all GS values
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 * have been shifted down by 2 from their true value.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 * OUTPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 * none
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 * RETURN VALUE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 * GSP0 Index closest to the input value of GS.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 *************************************************************************/
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 Shortword gsQuant(Longword L_GsIn, Shortword swVoicingMode)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 | Automatic Variables |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 Shortword swGsIndex,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 swBestGs;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 Longword L_diff,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 L_min = LW_MAX;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 | Executable Code |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 for (swGsIndex = 0; swGsIndex < 32; swGsIndex++)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 L_diff = L_abs(L_sub(L_GsIn, ppLr_gsTable[swVoicingMode][swGsIndex]));
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 if (L_sub(L_diff, L_min) < 0)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 /* new minimum */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 /* ----------- */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 swBestGs = swGsIndex;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 L_min = L_diff;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 return (swBestGs);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 /*************************************************************************
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 * FUNCTION NAME: getPnBits
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 * PURPOSE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 * Generate iBits pseudo-random bits using *pL_PNSeed as the
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 * pn-generators seed.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 * INPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 * iBits - integer indicating how many random bits to return.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 * range [0,15], 0 yields 1 bit output
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 * *pL_PNSeed - 32 bit seed (changed by function)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 * OUTPUTS:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 * *pL_PNSeed - 32 bit seed, modified.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 * RETURN VALUE:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 * random bits in iBits LSB's.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 * IMPLEMENTATION:
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 * implementation of x**31 + x**3 + 1 == PN_XOR_REG | PN_XOR_ADD a
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 * PN sequence generator using Longwords generating a 2**31 -1
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 * length pn-sequence.
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 *
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 *************************************************************************/
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 Shortword getPnBits(int iBits, Longword *pL_PNSeed)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 | Automatic Variables |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 Shortword swPnBits = 0;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 Longword L_Taps,
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 L_FeedBack;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 int i;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 /*_________________________________________________________________________
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 | |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 | Executable Code |
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 |_________________________________________________________________________|
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 for (i = 0; i < iBits; i++)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 /* update the state */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 /* ---------------- */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 L_Taps = *pL_PNSeed & PN_XOR_REG;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 L_FeedBack = L_Taps; /* Xor tap bits to yield
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 * feedback bit */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 L_Taps = L_shr(L_Taps, 1);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 while (L_Taps)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 {
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 L_FeedBack = L_FeedBack ^ L_Taps;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 L_Taps = L_shr(L_Taps, 1);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 /* LSB of L_FeedBack is next MSB of PN register */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 *pL_PNSeed = L_shr(*pL_PNSeed, 1);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 if (L_FeedBack & 1)
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 *pL_PNSeed = *pL_PNSeed | PN_XOR_ADD;
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 /* State update complete. Get the output bit from the state, add/or it
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 * into output */
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 swPnBits = shl(swPnBits, 1);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 swPnBits = swPnBits | (extract_l(*pL_PNSeed) & 0x0001);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 }
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 return (swPnBits);
d68b2c92464a libgsmhr1: bring in parts of dtx.[ch] needed for RxFE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 }