FreeCalypso > hg > gsm-codec-lib
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 |
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 } |