annotate chipsetsw/layer1/cfile/l1_ctl.c @ 84:1cda9bc89011

l1_ctl.c: l1ctl_afc() reconstructed
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sat, 02 Apr 2016 07:56:24 +0000
parents 43dd68d8d891
children eca8d5f642fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1 /************* Revision Controle System Header *************
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2 * GSM Layer 1 software
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3 * L1_CTL.C
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
4 *
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
5 * Filename l1_ctl.c
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
6 * Copyright 2003 (C) Texas Instruments
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
7 *
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
8 ************* Revision Controle System Header *************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
9
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
10 #define L1_CTL_C
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
11
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
12 #include "l1_macro.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
13 #include "l1_confg.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
14
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
15 #if (CODE_VERSION == SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
16 #include <string.h>
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
17 #include "l1_types.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
18 #include "sys_types.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
19 #include "l1_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
20 #include "l1_time.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
21 #include "l1_signa.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
22
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
23 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
24 #include "l1tm_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
25 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
26 #if (AUDIO_TASK == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
27 #include "l1audio_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
28 #include "l1audio_cust.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
29 #include "l1audio_signa.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
30 #include "l1audio_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
31 #include "l1audio_msgty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
32 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
33 #if (L1_GTT == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
34 #include "l1gtt_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
35 #include "l1gtt_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
36 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
37 #if (L1_MP3 == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
38 #include "l1mp3_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
39 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
40 #if (L1_MIDI == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
41 #include "l1midi_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
42 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
43 //ADDED FOR AAC
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
44 #if (L1_AAC == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
45 #include "l1aac_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
46 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
47 #include "l1_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
48 #include "cust_os.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
49 #include "l1_msgty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
50 #include "l1_varex.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
51 #include "l1_proto.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
52 #include "l1_mftab.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
53 #include "l1_tabs.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
54 #include "l1_ver.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
55 #if L2_L3_SIMUL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
56 #include "hw_debug.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
57 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
58
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
59 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
60 #include "l1tm_msgty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
61 #include "l1tm_varex.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
62 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
63
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
64 #include "l1_ctl.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
65
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
66 #ifdef _INLINE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
67 #define INLINE static inline // Inline functions when -v option is set
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
68 #else // when the compiler is ivoked.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
69 #define INLINE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
70 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
71 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
72 #include <string.h>
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
73 #include "l1_types.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
74 #include "sys_types.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
75 #include "l1_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
76 #include "l1_time.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
77 #include "l1_signa.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
78
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
79 #if (RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
80 #include "tpudrv61.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
81 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
82
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
83 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
84 #include "l1tm_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
85 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
86 #if (AUDIO_TASK == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
87 #include "l1audio_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
88 #include "l1audio_cust.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
89 #include "l1audio_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
90 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
91 #if (L1_GTT == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
92 #include "l1gtt_const.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
93 #include "l1gtt_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
94 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
95 #if (L1_MP3 == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
96 #include "l1mp3_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
97 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
98 #if (L1_MIDI == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
99 #include "l1midi_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
100 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
101 //ADDED FOR AAC
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
102 #if (L1_AAC == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
103 #include "l1aac_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
104 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
105 #include "l1_defty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
106 #include "cust_os.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
107 #include "l1_msgty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
108 #include "l1_varex.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
109 #include "l1_proto.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
110 #include "l1_tabs.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
111 #include "l1_ctl.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
112 #if L2_L3_SIMUL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
113 #include "hw_debug.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
114 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
115
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
116 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
117 #include "l1tm_msgty.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
118 #include "l1tm_varex.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
119 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
120 #ifdef _INLINE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
121 #define INLINE static inline // Inline functions when -v option is set
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
122 #else // when the compiler is ivoked.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
123 #define INLINE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
124 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
125 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
126
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
127 #if(RF_FAM == 61)
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
128 #include "l1_rf61.h"
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
129 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
130
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
131 #if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
132 #include "l1_trace.h"
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
133 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
134
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
135 extern SYS_UWORD16 Convert_l1_radio_freq(SYS_UWORD16 radio_freq);
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
136 #if(RF_FAM == 61)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
137 extern WORD16 drp_gain_correction(UWORD16 arfcn, UWORD8 lna_off, UWORD16 agc);
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
138 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
139
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
140 #define LNA_OFF 1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
141 #define LNA_ON 0
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
142
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
143
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
144
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
145
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
146 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
147 /* Automatic frequency compensation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
148 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
149
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
150 #define L1_WORD16_POS_MAX (32767)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
151 #define L1_WORD16_NEG_MAX (-32768)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
152 #define L1_WORD32_POS_MAX ((unsigned long)(1<<31)-1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
153 #define L1_WORD32_NEG_MAX (-(unsigned long)(1<<31))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
154
83
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
155 /*
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
156 * FreeCalypso TCS211 reconstruction: the following 3 functions
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
157 * are new with the LoCosto version of this module. Their bodies
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
158 * used to be here (prefixed with INLINE for conditional inlining
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
159 * like Add_40b() and friends), but we have made the following
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
160 * changes:
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
161 *
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
162 * moved the function bodies to the end
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
163 * made the functions static
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
164 * added forward declarations below
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
165 *
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
166 * These changes have been made in order to aid the diffing
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
167 * of compiled objects.
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
168 */
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
169
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
170 static WORD16 Add_Sat_sign_16b(WORD16 val1, WORD16 val2);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
171 static WORD32 Add_Sat_sign_32b(WORD32 val1, WORD32 val2);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
172 static WORD32 Sat_Mult_20sign_16unsign(WORD32 val1, UWORD32 val2);
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
173
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
174 INLINE WORD32 Add_40b( WORD32 guard1guard2, WORD32 lvar1, WORD32 lvar2, WORD16 *guardout )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
175 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
176 WORD32 result, temp, carry, Lvar1, Lvar2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
177 WORD16 guard1,guard2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
178
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
179 guard1=(WORD16) ((WORD32) guard1guard2>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
180 guard2=(WORD16) guard1guard2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
181
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
182 /* lvar1 and lvar2 are both 48 bits variables */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
183 /* We 1st add the low parts of lvar1 and lvar2 and we give */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
184 /* a 32 bits result and a carry if needed */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
185 Lvar1 = (UWORD16)lvar1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
186 Lvar2 = (UWORD16)lvar2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
187
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
188 temp = Lvar1 + Lvar2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
189
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
190 carry = temp >> 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
191
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
192 result = temp & 0x0000ffffL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
193
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
194 /* We now add the two high parts of var1 and var2 (scaled */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
195 /* to a 16 bits format) and carry (if any) and we give a */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
196 /* 48 bits results. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
197 Lvar1 = (UWORD32)lvar1 >> 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
198 Lvar2 = (UWORD32)lvar2 >> 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
199
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
200 temp = Lvar1 + Lvar2 + carry;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
201
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
202 carry = (UWORD32)temp >> 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
203
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
204 temp = (UWORD32)temp << 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
205
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
206 result = result | temp;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
207
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
208 temp = guard1 + guard2 + carry;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
209
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
210 *guardout = (WORD16)temp;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
211
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
212 return( result );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
213 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
214
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
215
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
216 INLINE WORD32 Mult_40b(WORD32 var1, WORD16 var2, WORD16 *guardout)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
217 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
218 WORD32 mult,guard1guard2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
219 WORD32 aux1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
220 UWORD32 aux2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
221 WORD16 neg_flag=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
222 WORD32 var1_low_nosign,var2_nosign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
223
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
224 if (var2<0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
225 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
226 var2=-var2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
227 neg_flag=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
228 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
229
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
230 /*aux1 = AccHigh(var1)*var2 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
231 aux1 = (WORD32)(var1>>16) * (WORD32)var2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
232 /* 16 bits * 16 bits -> 32 bits result */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
233
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
234 /*aux2 = AccLow(var1)*var2 (unsigned multiplication) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
235 /* Performs the sign suppression of the words */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
236 var1_low_nosign = (UWORD16)var1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
237 var2_nosign = (UWORD16) var2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
238
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
239 aux2 = (UWORD32)var1_low_nosign * (UWORD32)var2_nosign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
240
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
241 /*Shift aux1=F48 of 16 bit left */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
242 guard1guard2=aux1&0xFFFF0000L;/*guard1=(WORD16)(aux1>>16)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
243 /*guard2=0x0000 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
244 aux1=aux1<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
245
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
246
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
247 /* ((var1_high*var2)<<16) +(var1_low*var2) = aux1 + aux2 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
248 /* aux1 and aux2 are both 48 bits variables */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
249 /* We first add the low pats of aux1 and aux2 and we give*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
250 /* a 32 bits result and a carry if needed */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
251 mult=Add_40b(guard1guard2,aux1,aux2,guardout );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
252
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
253 if (neg_flag)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
254 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
255 mult=-mult;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
256 if (*guardout!=0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
257 *guardout=-(*guardout)-1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
258 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
259 *guardout=-1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
260 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
261
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
262 return(mult);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
263 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
264
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
265
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
266 /***********************************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
267 /* This function allows to multiply a WORD32 and a WORD16, both POSITIVE, */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
268 /* variables. Result is WORD32. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
269 /***********************************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
270 INLINE WORD32 UMult_40b(WORD32 var1, WORD16 var2, WORD16 *guardout)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
271 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
272 WORD32 mult,guard1guard2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
273 UWORD32 aux1,aux2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
274 WORD32 var1_high_nosign,var1_low_nosign,var2_nosign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
275
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
276
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
277 /*aux1 = AccHigh(var1)*var2 (unsigned multiplication) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
278 /* Performs the sign suppression of the words */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
279 var1_high_nosign = (UWORD32)var1>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
280 var2_nosign = (UWORD16) var2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
281
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
282 aux1 = (UWORD32)var1_high_nosign * (UWORD32)var2_nosign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
283
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
284 /*aux2 = AccLow(var1)*var2 (unsigned multiplication) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
285 /* Performs the sign suppression of the words */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
286 var1_low_nosign = (WORD32)((UWORD16)var1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
287
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
288 aux2 = (UWORD32)var1_low_nosign * (UWORD32)var2_nosign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
289
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
290 /*Shift aux1=F48 of 16 bit left */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
291 guard1guard2=aux1&0xFFFF0000L;/*guard1=(WORD16)(aux1>>16)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
292 /*guard2=0x0000 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
293 aux1=aux1<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
294
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
295
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
296 /* ((var1_high*var2)<<16) +(var1_low*var2) = aux1 + aux2 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
297 mult=Add_40b(guard1guard2,aux1,aux2,guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
298
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
299 return(mult);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
300 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
301
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
302
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
303 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
304 /* l1ctl_afc() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
305 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
306 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
307 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
308 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
309 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
310 #if (VCXO_ALGO == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
311 WORD16 l1ctl_afc (UWORD8 phase, UWORD32 *frame_count, WORD16 angle, WORD32 snr, UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
312 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
313 WORD16 l1ctl_afc (UWORD8 phase, UWORD32 *frame_count, WORD16 angle, WORD32 snr, UWORD16 radio_freq, UWORD32 l1_mode)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
314 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
315 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
316 /*************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
317 /* Variables declaration */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
318 /*************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
319 WORD16 i=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
320 UWORD32 denom; /* F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
321 WORD32 var_32,num,Phi_32=0,var1,var2,guard1guard2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
322 static UWORD32 P=C_cov_start; /* F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
323 static WORD32 Psi=0; /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
324 static WORD16 Psi_quant[C_N_del+1]; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
325 WORD16 var_16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
326 WORD16 Phi=0; /* F1.15 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
327 WORD16 quotient,guard1,guard2,guardout;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
328 UWORD32 LGuard;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
329 WORD16 denomH,denomH_3msb;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
330 UWORD32 K=0; /* algo 1 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
331
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
332 static WORD16 old_Psi_quant[C_N_del+1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
333 static WORD32 old_Psi=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
334
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
335 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
336 static WORD32 psi_past[C_N_del+1]; /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
337 static WORD16 psi_quant; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
338 static WORD16 quant_avg;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
339 static UWORD32 M_Count;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
340 static WORD32 psi_avg[C_PSI_AVG_SIZE_D+1]; // Data history array
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
341 static WORD16 B_Count; // Counter for consecutive SNR below C_thr_snr
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
342 #if 0 /* LoCosto added var */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
343 UWORD16 L = 10433; // Gain algo2
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
344 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
345 static UWORD16 first_avg;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
346 static UWORD16 good_snr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
347
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
348 /* to be able to keep in memory the old AFC variables in case of spurious
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
349 FB detection */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
350 static WORD32 old_psi_past[C_N_del+1]; /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
351 static WORD16 old_psi_quant; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
352
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
353 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
354 #if (L1_FF_MULTIBAND == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
355 UWORD8 physical_band_id;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
356 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
357
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
358 #if 0 /* LoCosto added var init */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
359 //Set AFC close loop gain for ALGO_AFC_LQG_PREDICTOR.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
360 if(l1_mode==I_MODE)//MS is in Idle mode
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
361 L = 41732; //F0.20 L=41732/2^20 = 0.04
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
362 else //All other modes than Idle
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
363 L = 10433; //F0.20 L=10433/2^20 = 0.01
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
364 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
365
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
366 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
367
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
368 if (((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) || (l1_config.std.id == DUAL_US)) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
369 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
370 ((phase != AFC_INIT_CENTER) || (phase != AFC_INIT_MIN) || (phase != AFC_INIT_MAX)))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
371 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
372 (phase != AFC_INIT))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
373 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
374 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
375 if (radio_freq >= l1_config.std.first_radio_freq_band2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
376 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
377 angle = (angle + 1) >> 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
378 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
379 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
380
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
381 else if (((l1_config.std.id == DCS1800) || (l1_config.std.id == PCS1900)) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
382 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
383 ((phase != AFC_INIT_CENTER) || (phase != AFC_INIT_MIN) || (phase != AFC_INIT_MAX)))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
384 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
385 (phase != AFC_INIT))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
386 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
387 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
388 angle = (angle + 1) >> 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
389 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
390
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
391 #else // L1_FF_MULTIBAND = 1 below
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
392
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
393 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
394 if((phase != AFC_INIT_CENTER) || (phase != AFC_INIT_MIN) || (phase != AFC_INIT_MAX))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
395 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
396 if(phase != AFC_INIT)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
397 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
398 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
399 physical_band_id = l1_multiband_radio_freq_convert_into_physical_band_id(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
400
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
401 if( (multiband_rf[physical_band_id].gsm_band_identifier == DCS1800) || (multiband_rf[physical_band_id].gsm_band_identifier == PCS1900))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
402 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
403 angle = (angle + 1) >> 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
404 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
405 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
406
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
407 #endif // #if (L1_FF_MULTIBAND == 1) else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
408
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
409
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
410
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
411 /*********************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
412 /* frequency offset compensation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
413 /*********************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
414 /* Initialization */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
415
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
416 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
417 switch (l1_config.params.afc_algo)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
418 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
419
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
420 /* algo1 only: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
421 case ALGO_AFC_KALMAN:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
422 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
423 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
424 #if (VCXO_ALGO == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
425 if (phase==AFC_INIT)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
426 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
427 // WARNING
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
428 // In this case, "angle" variable contains EEPROM_AFC initialization value
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
429 // directly loaded from EEPROM, and "snr" variable is not meaningful.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
430 /* Static variables initialisation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
431 P=C_cov_start;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
432 Psi=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
433 if (angle>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
434 Psi_quant[C_N_del]=C_max_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
435 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
436 if(angle<C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
437 Psi_quant[C_N_del]=C_min_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
438 else Psi_quant[C_N_del]=angle;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
439
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
440 Psi=l1_config.params.psi_st*Psi_quant[C_N_del]; /* F0.16 * F13.3 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
441 } /* end AFC_INIT*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
442 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
443 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
444 if (phase==AFC_OPEN_LOOP)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
445 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
446 /* delay line for Psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
447 for (i=1;i<=C_N_del;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
448 Psi_quant[i-1]=Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
449
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
450 var_32=(WORD32)((WORD32)angle*l1_config.params.psi_sta_inv)<<4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
451 /*(F16.0 * F1.15 = F17.15) << 4 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
452
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
453 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
454 /* In order to implement the NINT function for a F16.0, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
455 /* if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
456 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<17)))/(1<<18)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
457 var_16=quotient*4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
458 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
459 /* In order to implement the NINT function for a F16.0, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
460 /* if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
461 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<18)))/(1<<19)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
462 var_16=quotient*8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
463 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
464 if (var_16>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
465 Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],C_max_step);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
466 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
467 if(var_16<C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
468 Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],C_min_step);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
469 else Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],var_16); /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
470
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
471 Psi=l1_config.params.psi_st*Psi_quant[C_N_del]; /* F0.16 * F13.3 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
472 }/*end if AFC_OPEN_LOOP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
473
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
474 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
475 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
476 /* delay line for Psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
477 for (i=1;i<=C_N_del;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
478 Psi_quant[i-1]=Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
479
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
480 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
481 /* Filter algorithm */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
482 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
483
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
484 /* Covariance error is increased of C_Q */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
485 P=P+(*frame_count)*C_Q;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
486
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
487 /* Clipping of P */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
488 if (P>C_thr_P) P=C_thr_P;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
489
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
490 if (snr>=C_thr_snr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
491 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
492 /* Clipping of error angle */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
493 if (angle>C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
494 angle=C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
495 if (angle<-C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
496 angle=-C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
497
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
498 /* Kalman gain */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
499 /*K=P*(1/(P+C_a0_kalman+(C_g_kalman*RNS))) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
500 /*C_a0_kalman=0.01 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
501 /*C_g_kalman =0.05 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
502 num=(C_g_kalman/snr)+P+C_a0_kalman;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
503 /* (F2.30 / F6.10) = F 12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
504
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
505 /* denom = P << 19 = F 1.39 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
506 /* extension of denom=P to a 40 bits variable */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
507 /* denom (F12.20) << 16 = F 4.36 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
508 guard1=(WORD16)((WORD32)P>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
509 /* denom = P<<16 = (F4.36) << 3 = F 1.39 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
510 denomH=(UWORD16)P;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
511 /* Low part of denom is equal to 0, because P has been 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
512 /* bits left shifted previously. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
513 denomH_3msb=(denomH>>13)&0x0007;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
514 guard1=(guard1<<3)|denomH_3msb;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
515 denomH<<=3;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
516 denom=(UWORD32)denomH<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
517 /* num + guard1 are a 40 bits representation of P */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
518 /* In order to compute P(F1.39)/num, we sample P in guard1 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
519 /* (scaled to a 32 bits number) and num (32 bits number) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
520 /* K = ((guard1<<24)/num)<<8 + (denom/num) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
521 var1=(WORD32)guard1<<24;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
522 var1=var1/num;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
523 var1=(WORD32)var1<<8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
524 /* var2 is an unsigned variable, var1 contains signed guard*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
525 /* bits. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
526 var2=denom/num;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
527 K = (var1+var2)<<1; /* F1.39 / F12.20 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
528 /* F13.19 << 1 = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
529
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
530 /* Clipping of the Kalman gain */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
531 if (K>=C_thr_K)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
532 K=C_thr_K;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
533
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
534 /*******************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
535 /* P=(1-K)*P = 0.8 * 0.5 at maximum */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
536 /*******************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
537 /* Perform a positive variable F12.20 multiplication by*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
538 /* positive variable F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
539 var_16=(WORD16)(1048576L-K); /* acclow(1-K) = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
540 guard1=0; /* positive variable */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
541 var1=UMult_40b(P,var_16,&guard1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
542 var_16=(WORD16)((1048576L-K)>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
543 /* acchigh(1-K) = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
544 var2=P*var_16; /* var2 = 0x80000 * 0xc */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
545 /* at maximum, so result */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
546 /* is 32 bits WORD32 and */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
547 /* equal 0x600000 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
548 /* extension of var2 to a 40 bits variable : var2<<16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
549 guard2=(WORD16)((WORD32)var2>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
550 guard1guard2=((WORD32)guard1<<16) |((WORD32) guard2&0x0000FFFFL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
551 var2=var2<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
552 var_32=Add_40b(guard1guard2,var1,var2,&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
553 /* var_32 (F8.40) >> 16 = F8.24 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
554 LGuard=(WORD32)guardout<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
555 var1=(UWORD32)var_32>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
556 /* var_32 >> 4 = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
557 P=(var1+LGuard)>>4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
558
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
559 Phi_32=Mult_40b(l1_config.params.psi_st_32,Psi_quant[0],&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
560 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
561 LGuard=(WORD32)guardout<<16; /* var_32 (F5.35) >> 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
562 /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
563 var1=(UWORD32)Phi_32>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
564 Phi_32=Psi-(LGuard+var1); /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
565
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
566 /*Phi=angle-Phi_32*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
567 Phi_32=((WORD32)angle<<4)-Phi_32;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
568 /* F1.15 * 4 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
569 Phi=(WORD16)(Phi_32>>4); /* F17.15 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
570 /*var1=K*Phi F12.20 * F1.15 = 13.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
571 guard1=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
572 var1=Mult_40b(K,Phi,&guard1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
573 /* var1 (F13.35) >> 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
574 /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
575 LGuard=(WORD32)guard1<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
576 var1=(UWORD32)var1>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
577 Psi+=var1+LGuard;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
578 }/*if snr */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
579
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
580 var_32=Mult_40b(Psi,l1_config.params.psi_st_inv,&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
581 /* F13.19 * C = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
582
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
583 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
584 /* In order to implement the NINT function for a F13.3, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
585 /* if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
586 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<17)))/(1<<18)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
587 var_16=quotient*4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
588 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
589 /* In order to implement the NINT function for a F13.3, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
590 /* if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
591 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<18)))/(1<<19)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
592 var_16=quotient*8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
593 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
594 if (var_16>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
595 Psi_quant[C_N_del]=C_max_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
596 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
597 if(var_16<C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
598 Psi_quant[C_N_del]=C_min_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
599 else Psi_quant[C_N_del]=var_16; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
600
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
601 }/*end AFC_CLOSE_LOOP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
602 } /* end else AFC_INIT*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
603
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
604 *frame_count=0;
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
605 return(Psi_quant[C_N_del]>>3); /* F16.0 */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
606
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
607 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
608
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
609 } /* end case algo 1 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
610
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
611
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
612 /* algo2 + init + estimator/predictor */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
613 case ALGO_AFC_LQG_PREDICTOR:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
614 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
615 /******************************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
616 /* (New) VCXO Algorithm */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
617 /******************************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
618
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
619 switch (phase) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
620 case AFC_INIT_CENTER :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
621 case AFC_INIT_MAX :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
622 case AFC_INIT_MIN :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
623 quant_avg = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
624 M_Count = 0;
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
625 #if 0 /* present in LoCosto but not in TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
626 for (i = 0; i <= C_PSI_AVG_SIZE_D ; i++) //omaps00090550
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
627 psi_avg[i] = 0;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
628 #endif
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
629 first_avg = 1;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
630 good_snr = 0;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
631
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
632 // DAC search algorithm is as follows - up to 12 attempts are made
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
633 // DAC search algorithm uses three values : DAC_center -> DAC_max -> DAC_min ->
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
634 // The first four attempts are made on DAC_center
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
635 // The next four attempts are made on DAC_max
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
636 // The last four attempts are made on DAC_min
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
637 // There are statistical reasons for trying four times
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
638
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
639 switch (phase)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
640 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
641 case AFC_INIT_CENTER:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
642 psi_quant = l1_config.params.afc_dac_center;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
643 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
644 case AFC_INIT_MAX:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
645 psi_quant = l1_config.params.afc_dac_max;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
646 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
647 case AFC_INIT_MIN:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
648 psi_quant = l1_config.params.afc_dac_min;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
649 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
650 default :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
651 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
652 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
653
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
654 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
655 psi_past[C_N_del]=Mult_40b(l1_config.params.psi_st_32,psi_quant, &guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
656 /* (F13.3<<16 )+(F5.35>>16) = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
657 psi_past[C_N_del]=((WORD32)guardout<<16)+((UWORD32)psi_past[C_N_del]>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
658
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
659 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
660
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
661 case AFC_OPEN_LOOP :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
662 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
663 /* VCXO changes for spurious FB detection */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
664 if (l1s.spurious_fb_detected == TRUE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
665 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
666 psi_quant = old_psi_quant;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
667
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
668 for(i=0;i<C_N_del+1;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
669 psi_past[i] = old_psi_past[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
670
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
671 /* reset the spurious_fb_detected_flag */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
672 l1s.spurious_fb_detected = FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
673 } /* end of spuriousFB detected */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
674
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
675 /* save in memory the old AFC related values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
676 old_psi_quant = psi_quant;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
677
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
678 for(i=0;i<C_N_del+1;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
679 old_psi_past[i] = psi_past[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
680
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
681 /* delay line for psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
682 for (i = 1; i <= C_N_del; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
683 psi_past[i-1] = psi_past[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
684
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
685 /* (F16.0 * F1.15 = F17.15) << 4 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
686 var_32 = (WORD32) ((WORD32)angle * l1_config.params.psi_sta_inv) << 4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
687
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
688 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
689 /* In order to implement the NINT function for a F16.0,*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
690 /*we check if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
691 var_16 = (WORD16)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
692 ((WORD32) (((WORD32)(var_32 + (1<<17))) / (1<<18)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
693 var_16 = var_16 * 4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
694 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
695 /* In order to implement the NINT function for a F16.0,*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
696 /*we check if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
697 var_16 = (WORD16)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
698 ((WORD32) (((WORD32)(var_32 + (1<<18))) / (1<<19)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
699 var_16 = var_16 * 8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
700 #endif
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
701
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
702 #if 0 /* LoCosto code with saturation */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
703 if (var_16 > C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
704 psi_quant = Add_Sat_sign_16b(psi_quant,C_max_step);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
705 else if (var_16 < C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
706 psi_quant = Add_Sat_sign_16b(psi_quant,C_min_step);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
707 else psi_quant = Add_Sat_sign_16b(psi_quant,var_16); /* F13.3 */
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
708 #else /* matching TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
709 if (var_16 > C_max_step)
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
710 psi_quant += C_max_step;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
711 else if (var_16 < C_min_step)
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
712 psi_quant += C_min_step;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
713 else psi_quant += var_16; /* F13.3 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
714 #endif
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
715
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
716 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
717 psi_past[C_N_del]=Mult_40b(l1_config.params.psi_st_32,psi_quant, &guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
718 /* (F13.3<<16 )+(F5.35>>16) = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
719 psi_past[C_N_del]=((WORD32)guardout<<16)+((UWORD32)psi_past[C_N_del]>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
720
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
721 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
722 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
723
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
724 case AFC_CLOSED_LOOP :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
725
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
726 /* delay line for psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
727 for (i = 1; i <= C_N_del; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
728 psi_past[i-1] = psi_past[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
729
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
730 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
731 /* Estimation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
732 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
733 if ( (l1_config.params.rgap_algo != 0) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
734 ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
735 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
736 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
737 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
738 ))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
739 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
740
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
741 M_Count += *frame_count;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
742 if (snr >= l1_config.params.afc_snr_thr) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
743 // Accumulate average over N TDMA frames
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
744 psi_avg[0] += psi_past[C_N_del];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
745 // Count number of good snr's within window_avg_size chunks
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
746 good_snr++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
747 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
748 // M_Count >= M ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
749 if (M_Count >= l1_config.params.afc_win_avg_size_M) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
750 // M_Count counts how far we have reached in the window_avg_size blocks
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
751
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
752 // Scale estimate relative to good snr - Don't divide by zero in case of bad measurements
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
753 if (good_snr > 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
754 psi_avg[0] /= good_snr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
755
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
756 // We now have an estimation over window_avg_size TDMA frames in psi_avg[0]
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
757 if (first_avg == 1) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
758 first_avg = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
759 // Use first estimation as best guess for the other avg values
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
760 // This is used both at initialisation and when returning from reception gap
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
761 for (i = 1; i <= C_PSI_AVG_SIZE_D ; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
762 psi_avg[i] = psi_avg[0];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
763 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
764
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
765 // Estimation 1st order
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
766 // Use biggest window to reduce noise effects signal in psi values
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
767 // NOTE: Due to performance issues division by MSIZE is in predictor
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
768 if (l1_config.params.rgap_algo >= 1) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
769 quant_avg = (WORD16) (psi_avg[0] - psi_avg[C_PSI_AVG_SIZE_D]);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
770 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
771
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
772 for (i = C_PSI_AVG_SIZE_D - 1; i >= 0 ; i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
773 psi_avg[i+1] = psi_avg[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
774 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
775 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
776 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
777 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
778
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
779 } else {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
780 // No estmation when in Idle mode (DEEP or BIG SLEEP) => Reset!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
781 first_avg = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
782 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
783 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
784 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
785 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
786
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
787 if (snr >= l1_config.params.afc_snr_thr) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
788 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
789 /* Filter algorithm */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
790 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
791
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
792 /* No prediction during normal operation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
793 B_Count= 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
794
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
795 /* Clip error angle */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
796 if (angle > C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
797 angle = C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
798 if (angle < -C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
799 angle = -C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
800
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
801 Phi_32 = psi_past[C_N_del] - psi_past[0]; /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
802 /* Phi = angle - Phi_32*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
803 Phi_32 = ((WORD32) angle << 4) - Phi_32;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
804 /* F1.15 * 4 = F13.19 */
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
805 #if 0 /* LoCosto code */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
806 Phi = (WORD16)((WORD32)((WORD32)(Phi_32 + (1<<3)))/ (1<<4)); /* F17.15 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
807 #else /* TCS211 reconstruction */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
808 Phi = Phi_32 >> 4;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
809 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
810 /* (F0.20 * F1.15) >> 16 = F13.19 */
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
811 #if 0 /* LoCosto code with saturation and L */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
812 var_32 = (L * Phi + (1<<15)) >> 16;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
813 psi_past[C_N_del] = Add_Sat_sign_32b(psi_past[C_N_del],var_32);
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
814 #else /* matching TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
815 psi_past[C_N_del] += (10433 * Phi) >> 16;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
816 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
817
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
818 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
819 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
820 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
821 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
822 /* Prediction */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
823 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
824
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
825 // Only predict in dedicated mode
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
826 // NO prediction in idle mode
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
827 // l1a_l1s_com.dedic_set.SignalCode = NULL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
828 if ( (l1_config.params.rgap_algo != 0) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
829 ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
830 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
831 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
832 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
833 ))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
834 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
835 /* Prediction of psi during reception gaps */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
836 B_Count
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
837 += *frame_count;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
838
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
839 /* Predict psi ONLY when we have sufficient measurements available */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
840 /* If we don't have enough measurements we don't do anything (= 0th order estimation)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
841
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
842 // Was the consecutive bad SNRs threshold value exceeded?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
843 if (B_Count>= l1_config.params.rgap_bad_snr_count_B) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
844
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
845 // Predict with 0th order estimation is the default
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
846
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
847 // Predict with 1st order estimation
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
848 if (l1_config.params.rgap_algo >= 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
849 {
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
850 #if 0 /* LoCosto code with saturation */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
851 psi_past[C_N_del] = Add_Sat_sign_32b(psi_past[C_N_del],
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
852 ((quant_avg * (l1_config.params.rgap_bad_snr_count_B))/(C_MSIZE))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
853 );
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
854 #else /* matching TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
855 psi_past[C_N_del] +=
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
856 ((quant_avg * (l1_config.params.rgap_bad_snr_count_B))/(C_MSIZE));
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
857 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
858 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
859
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
860 B_Count= B_Count - l1_config.params.rgap_bad_snr_count_B;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
861
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
862 // Indicate by raising first_avg flag that a reception gap has occurred
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
863 // I.e. the psi_avg table must be reinitialised after leaving reception gap
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
864 first_avg = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
865
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
866 // Counters in estimation part must also be reset
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
867 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
868 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
869 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
870 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
871 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
872 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
873
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
874 /* Quantize psi value */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
875
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
876 /* F0.19 * 16.0 = F16.19 */
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
877 #if 0 /* LoCosto code */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
878 var_32 = Sat_Mult_20sign_16unsign(psi_past[C_N_del],l1_config.params.psi_st_inv);
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
879 #else /* TCS211 reconstruction */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
880 var_32 = psi_past[C_N_del] * l1_config.params.psi_st_inv;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
881 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
882
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
883 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
884 /* In order to implement the NINT function for a F13.3,*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
885 /*we check if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
886 var_16 = (WORD16)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
887 ((WORD32)((WORD32)(var_32 + (1<<17))) / (1<<18));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
888 var_16 = var_16 * 4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
889 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
890 /* In order to implement the NINT function for a F13.3,*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
891 /*we check if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
892 var_16 = (WORD16)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
893 ((WORD32)((WORD32)(var_32 + (1<<18))) / (1<<19));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
894 var_16 = var_16 * 8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
895 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
896 if (var_16 > C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
897 psi_quant = C_max_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
898 else if (var_16 < C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
899 psi_quant = C_min_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
900 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
901 psi_quant = var_16; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
902 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
903 } // switch phase
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
904
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
905 *frame_count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
906
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
907 return (psi_quant >> 3); /* F16.0 */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
908 } /* end case algo 2 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
909
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
910 /* algo1 + init + estimator/predictor */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
911 case ALGO_AFC_KALMAN_PREDICTOR:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
912 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
913 if ((phase==AFC_INIT_CENTER) || (phase==AFC_INIT_MAX) || (phase==AFC_INIT_MIN))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
914 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
915 // WARNING
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
916 // In this case, "angle" variable contains EEPROM_AFC initialization value
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
917 // directly loaded from EEPROM, and "snr" variable is not meaningful.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
918 /* Static variables initialisation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
919
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
920 quant_avg = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
921 M_Count = 0;
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
922 #if 0 /* present in LoCosto but not in TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
923 for (i = 0; i <=C_PSI_AVG_SIZE_D ; i++) //omaps00090550
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
924 psi_avg[i] = 0;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
925 #endif
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
926 first_avg = 1;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
927 good_snr = 0;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
928
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
929 // DAC search algorithm is as follows - up to 12 attempts are made
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
930 // DAC search algorithm uses three values : DAC_center -> DAC_max -> DAC_min ->
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
931 // The first four attempts are made on DAC_center
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
932 // The next four attempts are made on DAC_max
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
933 // The last four attempts are made on DAC_min
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
934 // There are statistical reasons for trying four times
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
935
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
936 switch (phase) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
937 case AFC_INIT_CENTER:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
938 Psi_quant[C_N_del] = l1_config.params.afc_dac_center;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
939 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
940 case AFC_INIT_MAX:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
941 Psi_quant[C_N_del] = l1_config.params.afc_dac_max;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
942 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
943 case AFC_INIT_MIN:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
944 Psi_quant[C_N_del] = l1_config.params.afc_dac_min;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
945 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
946 default :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
947 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
948 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
949
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
950 P=C_cov_start;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
951 Psi=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
952 if (angle>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
953 Psi_quant[C_N_del]=C_max_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
954 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
955 if(angle<C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
956 Psi_quant[C_N_del]=C_min_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
957 else Psi_quant[C_N_del]=angle;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
958
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
959 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
960 Psi=Mult_40b(l1_config.params.psi_st_32,Psi_quant[C_N_del], &guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
961 /* (F13.3<<16 )+(F5.35>>16) = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
962 Psi=((WORD32)guardout<<16)+((UWORD32)Psi>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
963
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
964 } /* end AFC_INIT*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
965 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
966 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
967 if (phase==AFC_OPEN_LOOP)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
968 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
969 /* relaod last good values in the ALGO */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
970 if (l1s.spurious_fb_detected == TRUE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
971 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
972 for(i=0;i<C_N_del+1;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
973 Psi_quant[i] = old_Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
974
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
975 Psi = old_Psi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
976 l1s.spurious_fb_detected = FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
977 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
978
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
979 /* Save the old values in memory */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
980 for(i=0;i<C_N_del+1;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
981 old_Psi_quant[i] = Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
982 old_Psi = Psi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
983
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
984 /* delay line for Psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
985 for (i=1;i<=C_N_del;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
986 Psi_quant[i-1]=Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
987
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
988 var_32=(WORD32)((WORD32)angle*l1_config.params.psi_sta_inv)<<4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
989 /*(F16.0 * F1.15 = F17.15) << 4 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
990
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
991 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
992 /* In order to implement the NINT function for a F16.0, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
993 /* if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
994 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<17)))/(1<<18)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
995 var_16=quotient*4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
996 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
997 /* In order to implement the NINT function for a F16.0, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
998 /* if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
999 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<18)))/(1<<19)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1000 var_16=quotient*8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1001 #endif
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1002
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1003 #if 0 /* LoCosto code with saturation */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1004 if (var_16>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1005 Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],C_max_step);
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1006 else if (var_16<C_min_step)
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1007 Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],C_min_step);
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1008 else Psi_quant[C_N_del]=Add_Sat_sign_16b(Psi_quant[C_N_del],var_16); /* F13.3 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1009 #else /* matching TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1010 if (var_16>C_max_step)
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1011 Psi_quant[C_N_del] += C_max_step;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1012 else if (var_16<C_min_step)
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1013 Psi_quant[C_N_del] += C_min_step;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1014 else Psi_quant[C_N_del] += var_16; /* F13.3 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1015 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1016
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1017 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1018 Psi=Mult_40b(l1_config.params.psi_st_32,Psi_quant[C_N_del], &guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1019 /* (F13.3<<16 )+(F5.35>>16) = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1020 Psi=((WORD32)guardout<<16)+((UWORD32)Psi>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1021
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1022 }/*end if AFC_OPEN_LOOP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1023 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1024 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1025
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1026 /* delay line for Psi_quant values */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1027 for (i=1;i<=C_N_del;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1028 Psi_quant[i-1]=Psi_quant[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1029
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1030 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1031 /* Estimation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1032 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1033 if ( (l1_config.params.rgap_algo != 0) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1034 ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1035 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1036 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1037 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1038 ))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1039 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1040
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1041 M_Count += *frame_count;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1042 if (snr >= l1_config.params.afc_snr_thr) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1043 // Accumulate average over N TDMA frames
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1044 psi_avg[0] += psi_past[C_N_del];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1045 // Count number of good snr's within window_avg_size chunks
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1046 good_snr++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1047 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1048
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1049 // M_Count >= M ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1050 if (M_Count >= l1_config.params.afc_win_avg_size_M) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1051 // M_Count counts how far we have reached in the window_avg_size blocks
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1052
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1053 // Scale estimate relative to good snr - Don't divide by zero in case of bad measurements
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1054 if (good_snr > 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1055 psi_avg[0] /= good_snr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1056
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1057 // We now have an estimation over window_avg_size TDMA frames in psi_avg[0]
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1058 if (first_avg == 1) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1059 first_avg = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1060 // Use first estimation as best guess for the other avg values
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1061 // This is used both at initialisation and when returning from reception gap
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1062 for (i = 1; i <= C_PSI_AVG_SIZE_D ; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1063 psi_avg[i] = psi_avg[0];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1064 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1065
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1066 // Estimation 1st order
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1067 // Use biggest window to reduce noise effects signal in psi values
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1068 // NOTE: Due to performance issues division by MSIZE is in predictor
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1069 if (l1_config.params.rgap_algo >= 1) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1070 quant_avg = (WORD16) (psi_avg[0] - psi_avg[C_PSI_AVG_SIZE_D]);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1071 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1072
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1073 for (i = C_PSI_AVG_SIZE_D - 1; i >= 0 ; i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1074 psi_avg[i+1] = psi_avg[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1075 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1076 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1077 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1078 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1079
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1080 } else {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1081 // No estmation when in Idle mode (DEEP or BIG SLEEP) => Reset!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1082 first_avg = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1083 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1084 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1085 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1086 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1087
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1088 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1089 /* Filter algorithm */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1090 /********************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1091
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1092 /* Covariance error is increased of C_Q */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1093 P=P+(*frame_count)*C_Q;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1094
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1095 /* Clipping of P */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1096 if (P>C_thr_P) P=C_thr_P;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1097
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1098 if (snr>=C_thr_snr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1099 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1100 /* Clipping of error angle */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1101 if (angle>C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1102 angle=C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1103 if (angle<-C_thr_phi)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1104 angle=-C_thr_phi;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1105
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1106 /* Kalman gain */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1107 /*K=P*(1/(P+C_a0_kalman+(C_g_kalman*RNS))) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1108 /*C_a0_kalman=0.01 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1109 /*C_g_kalman =0.05 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1110 num=(C_g_kalman/snr)+P+C_a0_kalman;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1111 /* (F2.30 / F6.10) = F 12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1112
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1113 /* denom = P << 19 = F 1.39 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1114 /* extension of denom=P to a 40 bits variable */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1115 /* denom (F12.20) << 16 = F 4.36 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1116 guard1=(WORD16)((WORD32)P>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1117 /* denom = P<<16 = (F4.36) << 3 = F 1.39 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1118 denomH=(UWORD16)P;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1119 /* Low part of denom is equal to 0, because P has been 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1120 /* bits left shifted previously. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1121 denomH_3msb=(denomH>>13)&0x0007;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1122 guard1=(guard1<<3)|denomH_3msb;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1123 denomH<<=3;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1124 denom=denomH<<16; //(UWORD32) removed typecast omaps00090550
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1125 /* num + guard1 are a 40 bits representation of P */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1126 /* In order to compute P(F1.39)/num, we sample P in guard1 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1127 /* (scaled to a 32 bits number) and num (32 bits number) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1128 /* K = ((guard1<<24)/num)<<8 + (denom/num) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1129 var1=(WORD32)guard1<<24;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1130 var1=var1/num;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1131 var1=(WORD32)var1<<8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1132 /* var2 is an unsigned variable, var1 contains signed guard*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1133 /* bits. */
84
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1134 #if 0 /* fixed LoCosto code */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1135 var2= ((WORD32)(denom)/(num)); //omaps00090550
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1136 #else /* matching TCS211 */
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1137 var2= denom / num;
1cda9bc89011 l1_ctl.c: l1ctl_afc() reconstructed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 83
diff changeset
1138 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1139 K = (var1+var2)<<1; /* F1.39 / F12.20 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1140 /* F13.19 << 1 = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1141
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1142 /* Clipping of the Kalman gain */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1143 if (K>=C_thr_K)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1144 K=C_thr_K;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1145
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1146 /*******************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1147 /* P=(1-K)*P = 0.8 * 0.5 at maximum */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1148 /*******************************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1149 /* Perform a positive variable F12.20 multiplication by*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1150 /* positive variable F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1151 var_16=(WORD16)(1048576L-K); /* acclow(1-K) = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1152 guard1=0; /* positive variable */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1153 var1=UMult_40b(P,var_16,&guard1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1154 var_16=(WORD16)((1048576L-K)>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1155 /* acchigh(1-K) = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1156 var2=P*var_16; /* var2 = 0x80000 * 0xc */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1157 /* at maximum, so result */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1158 /* is 32 bits WORD32 and */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1159 /* equal 0x600000 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1160 /* extension of var2 to a 40 bits variable : var2<<16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1161 guard2=(WORD16)((WORD32)var2>>16);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1162 guard1guard2=((WORD32)guard1<<16) |((WORD32) guard2&0x0000FFFFL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1163 var2=var2<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1164 var_32=Add_40b(guard1guard2,var1,var2,&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1165 /* var_32 (F8.40) >> 16 = F8.24 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1166 LGuard=(WORD32)guardout<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1167 var1=(UWORD32)var_32>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1168 /* var_32 >> 4 = F12.20 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1169 P=(var1+LGuard)>>4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1170
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1171 Phi_32=Mult_40b(l1_config.params.psi_st_32,Psi_quant[0],&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1172 /* F0.32 * F13.3 = F5.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1173 LGuard=(WORD32)guardout<<16; /* var_32 (F5.35) >> 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1174 /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1175 var1=(UWORD32)Phi_32>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1176 Phi_32=Psi-(LGuard+var1); /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1177
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1178 /*Phi=angle-Phi_32*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1179 Phi_32=((WORD32)angle<<4)-Phi_32;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1180 /* F1.15 * 4 = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1181 Phi=(WORD16)(Phi_32>>4); /* F17.15 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1182 /*var1=K*Phi F12.20 * F1.15 = 13.35 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1183 guard1=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1184 var1=Mult_40b(K,Phi,&guard1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1185 /* var1 (F13.35) >> 16 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1186 /* F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1187 LGuard=(WORD32)guard1<<16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1188 var1=(UWORD32)var1>>16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1189 Psi+=var1+LGuard;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1190 } else {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1191 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1192 /* Prediction */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1193 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1194
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1195 // Only predict in dedicated mode
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1196 // NO prediction in idle mode
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1197 // l1a_l1s_com.dedic_set.SignalCode = NULL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1198 if ( (l1_config.params.rgap_algo != 0) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1199 ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1200 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1201 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1202 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1203 ))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1204 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1205
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1206 /* Prediction of psi during reception gaps */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1207 B_Count+= *frame_count;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1208
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1209 /* Predict psi ONLY when we have sufficient measurements available */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1210 /* If we don't have enough measurements we don't do anything (= 0th order estimation)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1211
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1212 // Was the consecutive bad SNRs threshold value exceeded?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1213 if (B_Count>= l1_config.params.rgap_bad_snr_count_B) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1214
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1215 // Predict with 0th order estimation is the default
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1216
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1217 // Predict with 1st order estimation
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1218 if (l1_config.params.rgap_algo >= 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1219 Psi += ((quant_avg * (l1_config.params.rgap_bad_snr_count_B))/(C_MSIZE));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1220
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1221 B_Count= B_Count - l1_config.params.rgap_bad_snr_count_B;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1222
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1223 // Indicate by raising first_avg flag that a reception gap has occurred
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1224 // I.e. the psi_avg table must be reinitialised after leaving reception gap
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1225 first_avg = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1226
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1227 // Counters in estimation part must also be reset
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1228 M_Count = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1229 good_snr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1230 psi_avg[0] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1231 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1232 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1233 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1234
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1235 /* Quantize psi value */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1236
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1237 var_32=Mult_40b(Psi,l1_config.params.psi_st_inv,&guardout);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1238 /* F13.19 * C = F13.19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1239
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1240 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1241 /* In order to implement the NINT function for a F13.3, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1242 /* if var_32 + 0.5*2**18 is a multiple of 2**18 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1243 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<17)))/(1<<18)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1244 var_16=quotient*4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1245 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1246 /* In order to implement the NINT function for a F13.3, we check */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1247 /* if var_32 + 0.5*2**19 is a multiple of 2**19 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1248 quotient=(WORD16)((WORD32)(((WORD32)(var_32+(1<<18)))/(1<<19)));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1249 var_16=quotient*8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1250 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1251 if (var_16>C_max_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1252 Psi_quant[C_N_del]=C_max_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1253 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1254 if(var_16<C_min_step)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1255 Psi_quant[C_N_del]=C_min_step;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1256 else Psi_quant[C_N_del]=var_16; /* F13.3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1257
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1258
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1259 }/*end AFC_CLOSE_LOOP*/
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
1260 } /* end else AFC_INIT*/
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
1261
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
1262 *frame_count = 0;
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
1263 return(Psi_quant[C_N_del]>>3); /* F16.0 */
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1264 } /* end case algo 3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1265 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1266
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1267 #if (VCXO_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1268 default:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1269 return 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1270 //omaps00090550 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1271 } // end of Switch
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1272 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1273
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1274 } /* end l1ctl_afc */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1275
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1276
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1277 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1278 /* Automatic timing control (TOA) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1279 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1280
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1281 #if (TOA_ALGO == 2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1282
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1283 #define TOA_DEBUG_ENABLE 0
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1284
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1285
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1286 #if (TOA_DEBUG_ENABLE == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1287
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1288 #define TOA_MAKE_ZERO 0
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1289
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1290 #define TOA_LOG_BUFFER_LENGTH 4096
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1291
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1292 typedef struct
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1293 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1294 UWORD16 SNR_val;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1295 UWORD16 TOA_val;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1296 UWORD16 l1_mode;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1297 UWORD16 toa_frames_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1298 UWORD16 fn_mod42432;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1299 }T_TOA_log_debug;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1300
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1301
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1302 T_TOA_log_debug toa_log_debug[TOA_LOG_BUFFER_LENGTH];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1303 UWORD32 toa_log_index;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1304
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1305 UWORD32 toa_make_zero_f;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1306
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1307 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1308
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1309 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1310 /* l1ctl_toa() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1311 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1312 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1313 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1314 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1315 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1316
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1317 WORD16 l1ctl_toa (UWORD8 phase, UWORD32 l1_mode, UWORD16 SNR_val, UWORD16 TOA_val)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1318 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1319 WORD16 TOA_period_len = TOA_PERIOD_LEN [l1_mode];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1320 WORD16 TOA_SHIFT=ISH_INVALID;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1321 UWORD16 cumul_abs;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1322 WORD16 cumul_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1323 WORD32 prod_tmp, div_tmp,prod_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1324 WORD32 toa_update_flag=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1325 WORD16 cumul;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1326 UWORD16 cumul_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1327 #if (NEW_TOA_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1328 UWORD16 Trans_active;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1329 static WORD16 cumul_noTrans =0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1330 static UWORD16 period_counter_noTrans =0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1331
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1332 if ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1333 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1334 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1335 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1336 )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1337 Trans_active=TRUE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1338 else Trans_active=FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1339 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1340 if (phase==TOA_INIT)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1341 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1342 #if (NEW_TOA_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1343 cumul_noTrans =0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1344 period_counter_noTrans =0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1345 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1346
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1347 l1s.toa_var.toa_frames_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1348 l1s.toa_var.toa_accumul_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1349 l1s.toa_var.toa_accumul_value=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1350 #if (TOA_DEBUG_ENABLE == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1351 toa_log_index = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1352 #if (TOA_MAKE_ZERO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1353 toa_make_zero_f = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1354 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1355 toa_make_zero_f = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1356 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1357 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1358
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1359 return (TOA_SHIFT);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1360 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1361
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1362 cumul = l1s.toa_var.toa_accumul_value;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1363 cumul_counter = l1s.toa_var.toa_accumul_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1364
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1365 #if (TOA_DEBUG_ENABLE == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1366 toa_log_debug[toa_log_index].SNR_val = SNR_val;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1367 toa_log_debug[toa_log_index].TOA_val = TOA_val;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1368 toa_log_debug[toa_log_index].l1_mode = l1_mode;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1369 toa_log_debug[toa_log_index].toa_frames_counter = l1s.toa_var.toa_frames_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1370 toa_log_debug[toa_log_index].fn_mod42432 = l1s.actual_time.fn_mod42432;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1371
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1372 toa_log_index++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1373 if(toa_log_index == TOA_LOG_BUFFER_LENGTH)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1374 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1375 toa_log_index = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1376 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1377 #endif /* #if (TOA_DEBUG_ENABLE == 1) */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1378
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1379 #if (TRACE_TYPE == 5)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1380 trace_toa_sim_ctrl(SNR_val, TOA_val, l1_mode, l1s.toa_var.toa_frames_counter,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1381 l1s.toa_var.toa_accumul_counter, l1s.toa_var.toa_accumul_value);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1382 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1383
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1384 l1s.toa_var.toa_frames_counter++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1385
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1386 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1387 /* Fix for TOA */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1388 #define DSP_CALC_NO_TABS_HO 0x3CA4
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1389
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1390 UWORD16 *toa_ho_fix;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1391 toa_ho_fix=(UWORD16 *)API_address_dsp2mcu(DSP_CALC_NO_TABS_HO);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1392
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1393 if ((TOA_val >= 22) || (TOA_val <= 6)) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1394 *toa_ho_fix = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1395 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1396
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1397 if (*toa_ho_fix == 1) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1398 if((TOA_val <= 18) && (TOA_val >= 10)) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1399 *toa_ho_fix = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1400 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1401 } else {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1402 *toa_ho_fix = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1403 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1404 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1405
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1406
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1407 #if (NEW_TOA_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1408 if (Trans_active)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1409 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1410 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1411 if (SNR_val>= L1_TOA_SNR_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1412 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1413 cumul_counter++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1414
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1415 prod_tmp = L1_TOA_LAMBDA * cumul;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1416 prod_tmp = prod_tmp + ((0x00004000)); // basically for rounding
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1417 div_tmp = ((prod_tmp >> 15) & (0x0000FFFF));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1418 cumul = div_tmp;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1419
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1420 // implemented below is
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1421 // cumul = cumul + (L1_TOA_ONE_MINUS_LAMBDA * signum(TOA_Val - L1_TOA_EXPECTED_TOA))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1422 if(TOA_val > L1_TOA_EXPECTED_TOA) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1423 cumul = cumul + L1_TOA_ONE_MINUS_LAMBDA;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1424 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1425 else if (TOA_val < L1_TOA_EXPECTED_TOA) {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1426 cumul = cumul - L1_TOA_ONE_MINUS_LAMBDA;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1427 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1428 } // End if SNR_val
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1429
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1430 if(l1s.toa_var.toa_update_flag == TRUE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1431 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1432 toa_update_flag = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1433 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1434
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1435 if (toa_update_flag)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1436 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1437 cumul_sign = (cumul>0)? 1: -1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1438 cumul_abs = cumul_sign*cumul;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1439 if(cumul_counter <= 5)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1440 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1441 TOA_SHIFT = (cumul_abs<=L1_TOA_THRESHOLD_15)? 0: cumul_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1442 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1443 else if(cumul_counter == 6)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1444 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1445 TOA_SHIFT = (cumul_abs<=L1_TOA_THRESHOLD_20)? 0: cumul_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1446 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1447 else if(cumul_counter == 7)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1448 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1449 TOA_SHIFT = (cumul_abs<=L1_TOA_THRESHOLD_25)? 0: cumul_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1450 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1451 else if(cumul_counter >= 8)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1452 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1453 TOA_SHIFT = (cumul_abs<=L1_TOA_THRESHOLD_30)? 0: cumul_sign;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1454 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1455 #if (TRACE_TYPE==1) || (TRACE_TYPE==4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1456 trace_info.toa_trace_var.toa_accumul_value = cumul;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1457 trace_info.toa_trace_var.toa_accumul_counter = cumul_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1458 trace_info.toa_trace_var.toa_frames_counter = l1s.toa_var.toa_frames_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1459 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1460
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1461 cumul = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1462 cumul_counter = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1463 l1s.toa_var.toa_frames_counter = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1464 l1s.toa_var.toa_update_flag = FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1465
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1466 #if (TOA_DEBUG_ENABLE == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1467 #if (TOA_MAKE_ZERO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1468 if (toa_make_zero_f == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1469 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1470 TOA_SHIFT=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1471 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1472 #endif /*#if (TOA_DEBUG_ENABLE == 1)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1473 #endif /*#if (TOA_MAKE_ZERO == 1)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1474
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1475 } // end of if toa_update_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1476 #if (NEW_TOA_ALGO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1477
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1478 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1479
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1480 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1481 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1482 period_counter_noTrans++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1483
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1484 if (SNR_val>= L1_TOA_SNR_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1485 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1486 cumul_noTrans = cumul_noTrans + TOA_val - L1_TOA_EXPECTED_TOA;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1487
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1488 } // End if SNR_val
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1489
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1490 if (l1s.toa_var.toa_update_flag == TRUE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1491 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1492 switch (period_counter_noTrans)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1493 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1494 case 2:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1495 if (cumul_noTrans>=0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1496 TOA_SHIFT = (cumul_noTrans+1) >>1 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1497 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1498 TOA_SHIFT = (cumul_noTrans) >>1 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1499 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1500 case 3: /* Not fully accurate rounding*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1501 if (cumul_noTrans>=0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1502 TOA_SHIFT = (cumul_noTrans+2)/3 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1503 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1504 TOA_SHIFT = (cumul_noTrans-2)/3 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1505 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1506 case 4:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1507 if (cumul_noTrans>=0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1508 TOA_SHIFT = (cumul_noTrans+2) >>2 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1509 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1510 TOA_SHIFT = (cumul_noTrans+1) >>2 ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1511 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1512 default:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1513 TOA_SHIFT = cumul_noTrans;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1514 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1515 } /* end switch*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1516
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1517 if (TOA_SHIFT>8)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1518 TOA_SHIFT =8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1519 if (TOA_SHIFT<-8)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1520 TOA_SHIFT =-8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1521
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1522 #if (TRACE_TYPE==1) || (TRACE_TYPE==4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1523 trace_info.toa_trace_var.toa_accumul_value = cumul_noTrans;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1524 trace_info.toa_trace_var.toa_accumul_counter = period_counter_noTrans;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1525 trace_info.toa_trace_var.toa_frames_counter = period_counter_noTrans;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1526 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1527
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1528 cumul_noTrans = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1529 period_counter_noTrans = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1530 l1s.toa_var.toa_update_flag = FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1531 #if (TOA_DEBUG_ENABLE == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1532 #if (TOA_MAKE_ZERO == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1533 if (toa_make_zero_f == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1534 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1535 TOA_SHIFT=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1536 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1537 #endif /*#if (TOA_DEBUG_ENABLE == 1)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1538 #endif /*#if (TOA_MAKE_ZERO == 1)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1539
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1540 } // end if update_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1541 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1542 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1543 // error a TOA is waiting to be updated in the TPU and will be erased
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1544 #if (TRACE_TYPE==1) || (TRACE_TYPE==4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1545 if (l1s.toa_var.toa_shift != ISH_INVALID)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1546 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1547 l1_trace_toa_not_updated (); // should not occur!!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1548 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1549 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1550
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1551 if (TOA_SHIFT != ISH_INVALID) // new TOA => set the mask frames
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1552 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1553 // Set mask counter to 2 (2 frames masked).
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1554 l1s.toa_var.toa_snr_mask = 2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1555 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1556
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1557 l1s.toa_var.toa_accumul_value = cumul;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1558 l1s.toa_var.toa_accumul_counter = cumul_counter;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1559
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1560 return(TOA_SHIFT);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1561
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1562 } // l1ctl_toa
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1563
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1564
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1565 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1566 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1567 /* l1ctl_toa_update() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1568 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1569 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1570 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1571 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1572 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1573 WORD16 l1ctl_toa_update(UWORD32 *TOASP, UWORD32 l1_mode)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1574 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1575 static UWORD16 Old_TOA_estimated=12; //unit is Qbit
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1576 UWORD32 TOAMAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1577 WORD16 IZW,ISH,i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1578 UWORD32 TOA_estimated=0; //unit is Qbit
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1579 UWORD16 Trans_active;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1580
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1581 if ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1582 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1583 || l1_mode==PACKET_TRANSFER_MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1584 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1585 )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1586 Trans_active=TRUE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1587 else Trans_active=FALSE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1588
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1589 /* TOA offset computation and clock adjustement */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1590 TOAMAX=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1591 for (i=1;i<TOA_HISTO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1592 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1593 if (TOASP[i]>TOAMAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1594 TOAMAX=TOASP[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1595 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1596 TOAMAX >>= C_RED;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1597 i=1;IZW=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1598 while (i<TOA_HISTO_LEN && IZW==0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1599 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1600 if (TOASP[i]>=TOAMAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1601 IZW=i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1602 i++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1603 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1604
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1605 /* Estimated TOA calculation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1606 if (TOASP[IZW-1]<(2*TOAMAX/3))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1607 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1608 TOA_estimated=IZW;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1609 TOA_estimated *= 4; // unit in QBit
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1610 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1611 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1612 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1613 UWORD32 TOA_divisor = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1614 TOA_estimated=(TOASP[IZW]*IZW)+(TOASP[IZW-1]*(IZW-1)>>C_GEW);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1615 TOA_estimated *= 8; //F13.3 in order to have qBit precision
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1616 TOA_divisor = TOASP[IZW]+(TOASP[IZW-1] >> C_GEW);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1617 if (TOA_divisor!=0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1618 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1619 TOA_estimated/= TOASP[IZW]+(TOASP[IZW-1] >> C_GEW);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1620 TOA_estimated /= 2; // unit in QBit ("/8" then "*4" = "/2")
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1621 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1622 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1623 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1624 TOA_estimated = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1625 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1626 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1627
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1628 if (Trans_active)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1629 TOA_estimated=(TOA_estimated+(Old_TOA_estimated+4)) / 2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1630
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1631 /* Offset calculation*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1632 if (TOA_estimated>=17 || TOA_estimated<=15)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1633 ISH=TOA_estimated - 16;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1634 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1635 ISH=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1636
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1637 if (Trans_active)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1638 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1639 if (ISH>1) ISH=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1640 if (ISH<-1) ISH=-1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1641 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1642 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1643 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1644 if (ISH>8) ISH=8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1645 if (ISH<-8) ISH=-8;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1646 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1647
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1648 Old_TOA_estimated = TOA_estimated - ISH - 4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1649
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1650
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1651 return (ISH);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1652 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1653
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1654 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1655 /* l1ctl_toa() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1656 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1657 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1658 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1659 /* Functionality : generate an histogram of TOA weighted */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1660 /* with SNR */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1661 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1662 WORD16 l1ctl_toa(UWORD8 phase, UWORD32 l1_mode, UWORD16 SNR_val, UWORD16 TOA_val, BOOL *toa_update, UWORD16 *toa_period_count
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1663 #if (FF_L1_FAST_DECODING == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1664 , UWORD8 skipped_values
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1665 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1666 )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1667 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1668 // xSignalHeaderRec *msg;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1669 UWORD16 i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1670 WORD16 TOA_period_len = TOA_PERIOD_LEN[l1_mode];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1671 static UWORD32 histo[TOA_HISTO_LEN];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1672 static WORD16 period_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1673 UWORD32 SNR_ZW;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1674 WORD16 ISH=ISH_INVALID;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1675
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1676 UWORD8 histo_center;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1677
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1678 #if 0
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1679 if ((l1_mode==CON_EST_MODE2)||(l1_mode==DEDIC_MODE))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1680 histo_center=4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1681 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1682 histo_center=5;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1683 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1684 histo_center=4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1685 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1686
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1687
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1688 if (phase==TOA_INIT)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1689 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1690 period_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1691
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1692 for (i=0;i<TOA_HISTO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1693 histo[i]=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1694 histo[histo_center]=128; //F6.10
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1695
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1696 return(ISH);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1697 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1698 #if (FF_L1_FAST_DECODING == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1699 /* Manage any missing bursts due to fast decoding */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1700 period_counter += skipped_values;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1701 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1702
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1703 period_counter++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1704 /* Filter update */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1705 if (SNR_val>=C_SNRGR)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1706 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1707 if (SNR_val>C_SNR_THR)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1708 SNR_ZW=C_SNR_THR;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1709 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1710 SNR_ZW=SNR_val;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1711 histo[TOA_val+1]+=SNR_ZW; /* if TOA=0 histo[1]++ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1712 /* if TOA=1 histo[2]++ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1713 /* ... */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1714 /* if TOA=9 histo[10]++ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1715 /* histo[0] is reserved for computation */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1716 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1717
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1718 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1719 if (l1_mode==PACKET_TRANSFER_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1720 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1721 if (*toa_update)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1722 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1723 // Get ISH.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1724 ISH = l1ctl_toa_update(histo, l1_mode);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1725
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1726 //reset TOA period length counter
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1727 period_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1728
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1729 //reset histogram
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1730 for (i=0;i<TOA_HISTO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1731 histo[i]=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1732 histo[histo_center]=128; //F6.10
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1733
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1734 *toa_update = FALSE; // reset TOA update flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1735 *toa_period_count = 0; // reset TOA period counter
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1736 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1737 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1738 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1739 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1740 if (period_counter>=TOA_period_len)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1741 // It is time to compute a new ISH and to reset the histogram.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1742 // Rem: ">=" is very important since a "l1 mode" change can give
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1743 // a "TOA_period_len" smaller than the previous one an
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1744 // therefore a "period_counter" may be already higher than
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1745 // the new "TOA_period_len".
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1746 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1747 // Get ISH.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1748 ISH = l1ctl_toa_update(histo, l1_mode);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1749
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1750 //reset TOA period length counter
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1751 period_counter=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1752
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1753 //reset histogram
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1754 for (i=0;i<TOA_HISTO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1755 histo[i]=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1756 histo[histo_center]=128; //F6.10
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1757 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1758
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1759 // error a TOA is waiting to be updated in the TPU and will be erased
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1760 #if (TRACE_TYPE==1) || (TRACE_TYPE==4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1761 if (l1s.toa_shift != ISH_INVALID)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1762 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1763 l1_trace_toa_not_updated(); // should not occur !!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1764 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1765 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1766
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1767 if (ISH != ISH_INVALID) // new TOA => set the mask frames
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1768 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1769 // Set mask counter to 2 (2 frames masked).
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1770 l1s.toa_snr_mask = 2;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1771 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1772
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1773 return(ISH);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1774 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1775 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1776
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1777 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1778 /* l1ctl_txpwr() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1779 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1780 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1781 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1782 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1783 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1784 UWORD8 l1ctl_txpwr(UWORD8 target_txpwr, UWORD8 current_txpwr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1785 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1786 if(target_txpwr > current_txpwr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1787 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1788 current_txpwr ++; // Increase TX power by 2 dB.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1789 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1790 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1791 if(target_txpwr < current_txpwr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1792 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1793 current_txpwr --; // Decrease TX power by 2 dB.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1794 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1795
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1796 return(current_txpwr);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1797 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1798
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1799
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1800 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1801 /* Automatic Gain Control */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1802 /************************************/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1803 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1804 /* l1ctl_encode_delta1() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1805 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1806 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1807 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1808 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1809 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1810 #if(L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1811 WORD8 l1ctl_encode_delta1(UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1812 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1813 switch(l1_config.std.id)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1814 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1815 case GSM:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1816 case GSM_E:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1817 case DCS1800:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1818 case PCS1900:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1819 case GSM850:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1820 return(l1_config.std.cal_freq1_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1821 case DUAL:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1822 case DUALEXT:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1823 case DUAL_US:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1824 if(radio_freq >= l1_config.std.first_radio_freq_band2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1825 return(l1_config.std.cal_freq1_band2);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1826 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1827 return(l1_config.std.cal_freq1_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1828 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1829 return 0;//omaps00090550
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1830
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1831 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1832 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1833 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1834 /* l1ctl_encode_lna() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1835 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1836 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1837 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1838 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1839 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1840 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1841 void l1ctl_encode_lna( UWORD8 input_level,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1842 UWORD8 *lna_state,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1843 UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1844 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1845
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1846 /*** LNA Hysteresis is implemented as following :
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1847
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1848 |
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1849 On|---<>----+-------+
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1850 | | |
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1851 LNA | | |
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1852 | ^ v
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1853 | | |
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1854 | | |
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1855 Off| +-------+----<>-----
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1856 +--------------------------------
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1857 50 40 30 20 input_level /-dBm
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1858 THR_HIGH THR_LOW ***/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1859
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1860
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1861
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1862
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1863
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1864 if(((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) ||(l1_config.std.id == DUAL_US)) &&
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1865 (radio_freq >= l1_config.std.first_radio_freq_band2))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1866 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1867 if ( input_level > l1_config.std.lna_switch_thr_high_band2 ) // < -40dBm ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1868 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1869 *lna_state = LNA_ON; // lna_off = FALSE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1870 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1871 else if ( input_level < l1_config.std.lna_switch_thr_low_band2 ) // > -30dBm ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1872 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1873 *lna_state = LNA_OFF; // lna off = TRUE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1874 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1875 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1876 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1877 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1878 if ( input_level > l1_config.std.lna_switch_thr_high_band1 ) // < -40dBm ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1879 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1880 *lna_state = LNA_ON; // lna_off = FALSE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1881 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1882 else if ( input_level < l1_config.std.lna_switch_thr_low_band1 ) // > -30dBm ?
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1883 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1884 *lna_state = LNA_OFF; // lna off = TRUE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1885 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1886 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1887
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1888 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1889
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1890 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1891
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1892 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1893 /* l1ctl_csgc() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1894 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1895 /* Description: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1896 /* ============ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1897 /* If we are running the first pass of a measurement */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1898 /* session, we use the HIGH_AGC default agc setting to */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1899 /* compute the input level from the measured power from */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1900 /* the DSP. If this input level is saturated we set a */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1901 /* saturation flag, otherwise we validate the measure and*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1902 /* store, for the considered carrier, the input level. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1903 /* When all the carriers have been scanned and some have */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1904 /* been flagged "saturated", we measure them with the */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1905 /* LOW_AGC agc setting, then store, for the considered */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1906 /* carrier, the input level. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1907 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1908 UWORD8 l1ctl_csgc(UWORD8 pm, UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1909 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1910 WORD16 current_IL, current_calibrated_IL =0; //omaps00090550
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1911 WORD8 delta1_freq, delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1912 WORD16 delta_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1913 UWORD32 index;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1914 UWORD16 g_magic;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1915 UWORD16 arfcn;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1916 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1917 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
1918 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1919 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
1920 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1921
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1922 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1923
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1924 // initialize index
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1925 index = radio_freq - l1_config.std.radio_freq_index_offset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1926
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1927 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1928
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1929 index =
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1930 l1_multiband_radio_freq_convert_into_operative_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1931
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1932 #endif /*if(L1_FF_MULTIBAND == 0)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1933
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1934 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1935 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1936
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1937 g_magic = l1ctl_get_g_magic(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1938 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1939 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1940 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1941
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1942 if (l1a_l1s_com.full_list.meas_1st_pass_read)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1943 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1944 // We validate or not power measure (pm) for the considered carrier
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1945 // with measurement achieved with HIGH_AGC setting. We are working
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1946 // with non calibrated IL to avoid saturation
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1947 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1948 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1949
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1950 #if (PWMEAS_IF_MODE_FORCE == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1951 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_INVALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1952 0,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1953 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1954 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1955 if_ctl = IF_120KHZ_DSP;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1956 dco_algo_ctl_pw_temp = DCO_IF_0KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1957 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1958
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1959 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1960 delta_drp_gain = drp_gain_correction(arfcn, LNA_ON, (l1_config.params.high_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1961 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1962 delta_drp_gain = drp_gain_correction(radio_freq, LNA_ON, (l1_config.params.high_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1963 #endif // MULTIBAND == 0 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1964
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1965 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1966 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1967 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1968 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1969 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1970 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1971
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1972 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1973 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1974 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1975 current_IL = (WORD16)(l1a_l1s_com.last_input_level[index].input_level);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1976 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1977 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1978 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1979 if (!l1_config.agc_enable)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1980 current_IL = (WORD16)(-(pm - ( (l1_config.tmode.rx_params.agc << 1) - delta_drp_gain ) - g_magic));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1981 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1982 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1983 current_IL = (WORD16)(-(pm - ( (l1_config.params.high_agc <<1) - delta_drp_gain) - g_magic));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1984 // for array index purpose, we work with positive IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1985
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1986 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1987
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1988 // NOTE: lna_value do not appear in this formula because lna is ALWAYS ON for
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1989 // ---- this algorithm, so lna_value=lna_off*l1_config.params.lna_att_gsm=0
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1990
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1991 if ((current_IL<l1_config.params.high_agc_sat_thr) // Warning : we are working with positive IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1992 // for IL_2_AGC_xx index purpose.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1993 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1994 && (l1_config.agc_enable)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1995 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1996 )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1997 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1998 // pm is saturated so measure is not valid
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
1999 l1a_l1s_com.full_list.nbr_sat_carrier_ctrl++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2000 l1a_l1s_com.full_list.nbr_sat_carrier_read++;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2001 l1a_l1s_com.full_list.sat_flag[l1a_l1s_com.full_list.next_to_read] = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2002 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2003 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2004 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2005 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2006
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2007 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2008 // When running with fixed AGC setting saturated carriers may occur:
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2009 // protect against negative IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2010 if ((!l1_config.agc_enable) && (current_calibrated_IL < 0))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2011 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2012 current_calibrated_IL=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2013 current_IL=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2014 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2015 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2016
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2017 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2018 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2019 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2020 if (current_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2021 current_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2022
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2023 // we validate the measure and save input_level and lna_off fields.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2024 l1ctl_encode_lna((UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2025 &(l1a_l1s_com.last_input_level[index].lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2026 radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2027
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2028 l1a_l1s_com.last_input_level[index].input_level = (UWORD8)current_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2029 l1a_l1s_com.full_list.sat_flag[l1a_l1s_com.full_list.next_to_read] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2030 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2031 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2032 else // 2nd pass if any.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2033 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2034 // we validate the measure and save input_level and lna_off(always 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2035 // fields.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2036 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2037 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2038 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_INVALID,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2039 0,radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2040 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2041 delta_drp_gain = drp_gain_correction(arfcn, LNA_ON, (l1_config.params.low_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2042 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2043 delta_drp_gain = drp_gain_correction(radio_freq, LNA_ON, (l1_config.params.low_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2044 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2045 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2046 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2047 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2048 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2049 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2050 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2051 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2052 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2053
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2054
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2055 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2056 current_IL = (WORD16)(l1a_l1s_com.last_input_level[index].input_level);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2057 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2058 current_IL = (WORD16)(-(pm - ( (l1_config.params.low_agc << 1) - delta_drp_gain ) - g_magic));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2059
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2060 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2061
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2062 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2063 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2064 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2065 if (current_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2066 current_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2067
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2068 l1ctl_encode_lna((UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2069 &(l1a_l1s_com.last_input_level[index].lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2070 radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2071
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2072 l1a_l1s_com.last_input_level[index].input_level = (UWORD8)current_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2073
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2074 l1a_l1s_com.full_list.sat_flag[l1a_l1s_com.full_list.next_to_read] = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2075 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2076
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2077 return((UWORD8)current_calibrated_IL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2078 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2079
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2080 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2081 /* l1ctl_pgc() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2082 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2083 /* Description : For a given radio_freq, last_known_agc is */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2084 /* ============ based on a prior knowledge (the last */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2085 /* stored input_level for the considered */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2086 /* carrier). From the power measurement on */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2087 /* this carrier (pm), we update the */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2088 /* input_level for this carrier, for the */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2089 /* next task to control. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2090 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2091 UWORD8 l1ctl_pgc(UWORD8 pm, UWORD8 last_known_il,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2092 UWORD8 lna_off, UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2093 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2094 WORD32 last_known_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2095 WORD32 current_IL, current_calibrated_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2096 WORD8 delta1_freq, delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2097 WORD16 delta_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2098 WORD32 index, lna_value;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2099 UWORD16 arfcn;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2100 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2101 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2102 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2103 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2104 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2105
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2106 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2107
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2108 // initialize index
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2109 index = radio_freq - l1_config.std.radio_freq_index_offset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2110
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2111 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2112
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2113 index = l1_multiband_radio_freq_convert_into_operative_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2114
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2115 #endif // #if (L1_FF_MULTIBAND == 0) else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2116
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2117 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2118 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2119
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2120 lna_value = lna_off * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2121
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2122 last_known_agc = (Cust_get_agc_from_IL(radio_freq, last_known_il >> 1, PWR_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2123 // F7.1 in order to be compatible with
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2124 // pm and IL formats [-20,+140 in F7.1]
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2125 // contain the input_level value we use
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2126 // in the associated CTL task to build
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2127 // the agc used in this CTL.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2128 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2129 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2130 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2131 arfcn=radio_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2132 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2133
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2134 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2135 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2136
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2137 #if (PWMEAS_IF_MODE_FORCE == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2138 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2139 last_known_il,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2140 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2141 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2142 if_ctl = IF_120KHZ_DSP;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2143 dco_algo_ctl_pw_temp = DCO_IF_0KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2144 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2145
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2146 delta_drp_gain = drp_gain_correction(arfcn, lna_off, last_known_agc); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2147 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2148 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2149 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2150 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2151 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2152 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2153
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2154 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2155 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2156
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2157 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2158 current_IL = l1a_l1s_com.last_input_level[index].input_level ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2159 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2160 current_IL = -(pm - (last_known_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2161
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2162 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2163
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2164 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2165 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2166 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2167 if (current_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2168 current_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2169
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2170 // we validate the measure and save input_level and lna_off fields
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2171 l1ctl_encode_lna((UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2172 &(l1a_l1s_com.last_input_level[index].lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2173 radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2174
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2175 l1a_l1s_com.last_input_level[index].input_level = (UWORD8)current_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2176
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2177 return((UWORD8)current_calibrated_IL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2178 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2179
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2180
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2181 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2182 /* l1ctl_pgc2() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2183 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2184 /* Description : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2185 /* ============= */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2186 /* from power measurement pm_high_agc, */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2187 /* achieve with an HIGH_AGC setting, and pm_low_agc */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2188 /* achieve with a LOW_AGC seeting, we deduce the new */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2189 /* AGC to apply in the next CTL task. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2190 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2191 void l1ctl_pgc2(UWORD8 pm_high_agc, UWORD8 pm_low_agc, UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2192 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2193 UWORD8 pm;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2194 WORD32 IL_high_agc, IL_low_agc, new_IL, current_calibrated_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2195 WORD8 delta1_freq, delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2196 WORD16 delta_high_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2197 WORD16 delta_low_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2198 WORD32 index;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2199 UWORD16 g_magic;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2200 UWORD16 arfcn;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2201 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2202 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2203 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2204 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2205 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2206
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2207 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2208
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2209 // initialize index
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2210 index = radio_freq - l1_config.std.radio_freq_index_offset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2211
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2212 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2213
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2214 index =
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2215 l1_multiband_radio_freq_convert_into_operative_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2216
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2217 #endif // #if (L1_FF_MULTIBAND == 0) else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2218
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2219 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2220 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2221
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2222 g_magic = l1ctl_get_g_magic(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2223
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2224 // lna_off was set to 0 during CTRL, so lna_value = 0 do not appear in the following
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2225 // formula.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2226
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2227 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2228 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2229 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2230 arfcn=radio_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2231 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2232
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2233 if ((0==pm_high_agc) || (0==pm_low_agc)) // Check and filter illegal pm value(s) by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2234 new_IL = l1a_l1s_com.last_input_level[index].input_level;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2235 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2236 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2237
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2238 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2239 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2240
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2241 #if (PWMEAS_IF_MODE_FORCE == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2242 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_INVALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2243 0,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2244 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2245 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2246 if_ctl = IF_120KHZ_DSP;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2247 dco_algo_ctl_pw_temp = DCO_IF_0KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2248 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2249
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2250
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2251 delta_high_drp_gain = drp_gain_correction(arfcn, LNA_ON, (l1_config.params.high_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2252 delta_low_drp_gain = drp_gain_correction(arfcn, LNA_ON, (l1_config.params.low_agc << 1)); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2253 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2254 delta_high_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2255 delta_low_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2256 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2257 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2258 delta_high_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2259 delta_low_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2260 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2261 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2262 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2263
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2264 IL_high_agc = -(pm_high_agc - ((l1_config.params.high_agc << 1) - delta_high_drp_gain) - g_magic);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2265 IL_low_agc = -(pm_low_agc - ((l1_config.params.low_agc << 1) - delta_low_drp_gain) - g_magic);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2266
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2267 // HIGH_AGC and LOW_AGC are formatted to F7.1 in order to be compatible with
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2268 // pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2269
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2270 if (IL_low_agc>=l1_config.params.low_agc_noise_thr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2271 // pm_low_agc was on the noise floor, so not valid
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2272 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2273 // whatever the value of pm_high_agc, we consider it
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2274 // as the right setting
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2275 new_IL = IL_high_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2276 pm = pm_high_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2277 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2278 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2279 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2280 // pm_low_agc is valid.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2281 if (IL_high_agc<=l1_config.params.high_agc_sat_thr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2282 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2283 // pm_high_agc is not valid, it's saturated.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2284 new_IL = IL_low_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2285 pm = pm_low_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2286 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2287 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2288 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2289 // both pm_low_agc and pm_high_agc are valid, so we test the one that
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2290 // gives the maximum input level and consider it as the right setting.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2291 if (IL_high_agc<=IL_low_agc)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2292 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2293 new_IL = IL_high_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2294 pm = pm_high_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2295 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2296 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2297 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2298 new_IL = IL_low_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2299 pm = pm_low_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2300 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2301 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2302 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2303 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2304
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2305 #if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2306 RTTL1_FILL_MON_MEAS(pm_high_agc, IL_high_agc - delta1_freq - delta2_freq, MS_AGC_ID, radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2307 RTTL1_FILL_MON_MEAS(pm_low_agc, IL_low_agc - delta1_freq - delta2_freq, MS_AGC_ID, radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2308 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2309
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2310 current_calibrated_IL = new_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2311
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2312 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2313 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2314 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2315 if (new_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2316 new_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2317
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2318 // Updating of input_level and lna_off fields in order to correctly
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2319 // setting the AGC for the next task.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2320 l1ctl_encode_lna((UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2321 &(l1a_l1s_com.last_input_level[index].lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2322 radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2323
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2324 l1a_l1s_com.last_input_level[index].input_level = (UWORD8)new_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2325 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2326
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2327
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2328 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2329 /* l1ctl_find_max() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2330 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2331 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2332 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2333 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2334 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2335 UWORD8 l1ctl_find_max(UWORD8 *buff, UWORD8 buffer_len)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2336 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2337
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2338 // WARNING: for array index purpose we work with POSITIVE input level
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2339 // so maximum search for negative numbers is equivalent to
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2340 // minimum search for positive numbers!!!!!!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2341 // (-30 > -120 but 30 < 120)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2342
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2343 UWORD8 maximum = 240;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2344 UWORD8 i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2345
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2346 for (i=0; i<buffer_len; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2347 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2348 if (buff[i]<maximum)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2349 maximum=buff[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2350 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2351
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2352 return(maximum);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2353 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2354
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2355 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2356 /* l1ctl_pagc() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2357 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2358 /* Description : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2359 /* =========== */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2360 /* We deduce the last_known_agc from the last stored */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2361 /* input_level for the considered carrier. We use this */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2362 /* agc value to "build" the input level linked to the pm */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2363 /* we have just read. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2364 /* This input level is used to feed a fifo of 4 elements */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2365 /* and then compute an input_level maximum. This value is*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2366 /* used to update the input_level for this carrier. This */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2367 /* input_level will be used for the next task to control.*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2368 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2369 UWORD8 l1ctl_pagc(UWORD8 pm, UWORD16 radio_freq, T_INPUT_LEVEL *IL_info_ptr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2370 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2371 WORD8 delta1_freq, delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2372 WORD16 delta_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2373 WORD32 last_known_agc;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2374 UWORD8 IL_max;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2375 WORD32 current_IL, current_calibrated_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2376 UWORD8 i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2377 WORD32 lna_value;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2378 UWORD16 arfcn;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2379 UWORD8 lna_off;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2380 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2381 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2382 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2383 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2384 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2385
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2386 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2387 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2388
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2389 // Update fifo
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2390 for (i=3;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2391 l1a_l1s_com.Scell_info.buff_beacon[i]=l1a_l1s_com.Scell_info.buff_beacon[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2392
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2393 // from the lna state (ON/OFF) we compute the attenuation
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2394 // that was applied to signal when performing the power
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2395 // measure.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2396 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2397
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2398 // Compute applied agc for this pm
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2399 last_known_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2400 // F7.1 in order to be compatible
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2401 // with pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2402 // contain the input_level value we use
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2403 // in the associated CTL task to build
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2404 // the agc used in this CTL.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2405
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2406 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2407 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2408 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2409 arfcn=radio_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2410 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2411
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2412 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2413 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2414
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2415 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2416 l1a_l1s_com.Scell_used_IL_dd.input_level,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2417 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2418 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2419 delta_drp_gain = drp_gain_correction(arfcn, lna_off, last_known_agc); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2420 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2421 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2422 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2423 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2424 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2425 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2426
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2427 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2428 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2429
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2430 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2431 current_IL = IL_info_ptr->input_level;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2432 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2433 current_IL = -(pm - (last_known_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2434
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2435 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2436
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2437 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2438 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2439 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2440 if (current_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2441 current_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2442
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2443 l1a_l1s_com.Scell_info.buff_beacon[0] = (UWORD8)current_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2444
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2445 IL_max = l1ctl_find_max(&(l1a_l1s_com.Scell_info.buff_beacon[0]),4);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2446
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2447 //input levels are always stored with lna_on
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2448 l1ctl_encode_lna( (UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2449 &(IL_info_ptr->lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2450 radio_freq );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2451
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2452 IL_info_ptr->input_level = IL_max;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2453
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2454 #if L2_L3_SIMUL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2455 #if (DEBUG_TRACE==BUFFER_TRACE_PAGC)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2456 buffer_trace(4,IL_info_ptr->input_level,last_known_agc,
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2457 l1a_l1s_com.Scell_used_IL_dd.input_level,Cust_get_agc_from_IL(radio_freq, IL_max >> 1, MAX_ID));
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2458 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2459 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2460
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2461 return((UWORD8)current_calibrated_IL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2462 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2463
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2464 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2465 /* l1ctl_dpagc() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2466 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2467 /* Description : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2468 /* =========== */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2469 /* Based on the same principle as the one used for PAGC */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2470 /* algorithm except that we feed 3 different fifo: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2471 /* 1) one is dedicated to BCCH carrier */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2472 /* 2) another one is dedicated to all the other type of */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2473 /* bursts */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2474 /* 3) the last one is dedicated to non DTX influenced */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2475 /* bursts */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2476 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2477 UWORD8 l1ctl_dpagc(BOOL dtx_on, BOOL beacon, UWORD8 pm, UWORD16 radio_freq, T_INPUT_LEVEL *IL_info_ptr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2478 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2479 UWORD8 av_G_all, av_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2480 UWORD8 max_G_all, max_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2481 WORD32 last_known_agc, new_IL, current_calibrated_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2482 WORD8 delta1_freq, delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2483 WORD16 delta_drp_gain=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2484 UWORD8 i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2485 UWORD8 *tab_ptr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2486 T_DEDIC_SET *aset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2487 WORD32 lna_value;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2488 UWORD16 arfcn;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2489 UWORD8 lna_off;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2490 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2491 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2492 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2493 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2494 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2495
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2496 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2497 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2498
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2499 aset = l1a_l1s_com.dedic_set.aset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2500
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2501 if (beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2502 tab_ptr = l1a_l1s_com.Scell_info.buff_beacon;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2503 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2504 tab_ptr = aset->G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2505
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2506 // Update fifo
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2507 for (i=DPAGC_FIFO_LEN-1;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2508 tab_ptr[i]=tab_ptr[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2509
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2510 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2511 if (!l1_config.agc_enable)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2512 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2513 // AGC gain can only be controlled in 2dB steps as the bottom bit (bit zero)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2514 // corresponds to the lna_off bit
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2515 last_known_agc = (l1_config.tmode.rx_params.agc) << 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2516 lna_value = (l1_config.tmode.rx_params.lna_off) * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2517 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2518 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2519 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2520 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2521 #if DPAGC_MAX_FLAG
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2522 last_known_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2523 // F7.1 in order to be compatible with pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2524 #else
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2525 last_known_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, AV_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2526 // F7.1 in order to be compatible with pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2527 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2528 // input_level_dd : contain the input_level value we use
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2529 // in the associated CTL task to build the agc used in this CTL.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2530
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2531 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2532 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2533
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2534 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2535 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2536 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2537 arfcn=radio_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2538 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2539
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2540 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2541 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2542
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2543 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2544 l1a_l1s_com.Scell_used_IL_dd.input_level,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2545 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2546 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2547 delta_drp_gain = drp_gain_correction(arfcn, lna_off, last_known_agc); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2548 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2549 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2550 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2551 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2552 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2553 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2554
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2555 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2556 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2557
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2558 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2559 new_IL = IL_info_ptr->input_level;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2560 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2561 new_IL = -(pm - (last_known_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2562
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2563 current_calibrated_IL = new_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2564
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2565 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2566 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2567 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2568
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2569 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2570 if (l1tm.tmode_state.dedicated_active) // Implies l1_config.TestMode = 1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2571 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2572 // Update l1tm.tmode_stats.rssi_fifo (delay line from index 3 to 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2573 for (i=(sizeof(l1tm.tmode_stats.rssi_fifo)/sizeof(l1tm.tmode_stats.rssi_fifo[0]))-1; i>0; i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2574 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2575 l1tm.tmode_stats.rssi_fifo[i] = l1tm.tmode_stats.rssi_fifo[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2576 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2577 l1tm.tmode_stats.rssi_fifo[0] = current_calibrated_IL; // rssi value is F7.1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2578 l1tm.tmode_stats.rssi_recent = current_calibrated_IL; // rssi value is F7.1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2579 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2580 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2581
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2582 if (new_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2583 new_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2584
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2585 tab_ptr[0] = (UWORD8)new_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2586
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2587 if (dtx_on && !beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2588 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2589 // Update DTX fifo
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2590 for (i=DPAGC_FIFO_LEN-1;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2591 aset->G_DTX[i]=aset->G_DTX[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2592
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2593 aset->G_DTX[0]=tab_ptr[0];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2594 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2595
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2596 /* Computation of MAX{G_all[i],G_DTX[j]} i,j=0..3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2597 #if DPAGC_MAX_FLAG
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2598 max_G_all = l1ctl_find_max(&(tab_ptr[0]),DPAGC_FIFO_LEN);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2599
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2600 if (!beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2601 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2602 max_G_DTX = l1ctl_find_max(&(aset->G_DTX[0]),DPAGC_FIFO_LEN);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2603
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2604 // WARNING: for array index purpose we work with POSITIVE input level
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2605 // so maximum search for negative numbers is equivalent to
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2606 // minimum search for positive numbers!!!!!!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2607 // (-30 > -120 but 30 < 120)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2608 if (max_G_all <= max_G_DTX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2609 new_IL = max_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2610 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2611 new_IL = max_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2612 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2613 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2614 new_IL = max_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2615 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2616 av_G_all=av_G_DTX=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2617
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2618 for (i=0;i<DPAGC_FIFO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2619 av_G_all += tab_ptr[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2620
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2621 av_G_all /= DPAGC_FIFO_LEN;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2622
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2623 if (!beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2624 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2625 for (i=0;i<DPAGC_FIFO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2626 av_G_DTX += aset->G_DTX[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2627
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2628 av_G_DTX /= DPAGC_FIFO_LEN;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2629
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2630 if (av_G_all >= av_G_DTX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2631 new_IL = av_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2632 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2633 new_IL = av_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2634 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2635 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2636 new_IL = av_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2637 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2638
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2639 // Updating of input_level and lna_off fields in order to correctly
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2640 // setting the AGC for the next task.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2641 // input_level is always store with lna_on
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2642 l1ctl_encode_lna( (UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2643 &(IL_info_ptr->lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2644 radio_freq );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2645
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2646 IL_info_ptr->input_level = (UWORD8)new_IL ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2647
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2648 #if L2_L3_SIMUL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2649 #if (DEBUG_TRACE==BUFFER_TRACE_DPAGC)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2650 buffer_trace(4,IL_info_ptr->input_level,last_known_agc,
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2651 l1a_l1s_com.Scell_used_IL_dd.input_level,Cust_get_agc_from_IL(radio_freq, new_IL >> 1, MAX_ID));
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2652 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2653 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2654
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2655 return((UWORD8)current_calibrated_IL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2656 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2657
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2658 #if (AMR == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2659 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2660 /* l1ctl_dpagc_amr() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2661 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2662 /* Description : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2663 /* =========== */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2664 /* Based on the same principle as the one used for DPAGC */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2665 /* algorithm except that the way to feed the G_dtx is */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2666 /* different */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2667 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2668 UWORD8 l1ctl_dpagc_amr(BOOL dtx_on, BOOL beacon, UWORD8 pm, UWORD16 radio_freq, T_INPUT_LEVEL *IL_info_ptr)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2669 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2670 UWORD8 av_G_all, av_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2671 UWORD8 max_G_all, max_G_DTX, max_il;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2672 WORD32 last_known_agc, new_IL, current_calibrated_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2673 WORD8 delta1_freq, delta2_freq;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2674 WORD16 delta_drp_gain=0;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2675 UWORD8 i;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2676 UWORD8 *tab_ptr, *tab_amr_ptr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2677 T_DEDIC_SET *aset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2678 WORD32 lna_value;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2679 UWORD16 arfcn;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2680 UWORD8 lna_off;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2681 UWORD16 dco_algo_ctl_pw_temp = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2682 UWORD8 if_ctl = 0;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2683 #if (RF_RAM == 61) && (CODE_VERSION != SIMULATION)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2684 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GSM;
81
6124f48fc1fa l1_ctl.c: fixes from the freecalypso-sw/gsm-fw version
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 80
diff changeset
2685 #endif
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2686
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2687 delta1_freq = l1ctl_encode_delta1(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2688 delta2_freq = l1ctl_encode_delta2(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2689
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2690 aset = l1a_l1s_com.dedic_set.aset;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2691
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2692 if (beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2693 tab_ptr = l1a_l1s_com.Scell_info.buff_beacon;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2694 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2695 tab_ptr = aset->G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2696
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2697 // Update fifo
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2698 for (i=DPAGC_FIFO_LEN-1;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2699 tab_ptr[i]=tab_ptr[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2700
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2701 tab_amr_ptr = aset->G_amr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2702 for (i=DPAGC_AMR_FIFO_LEN-1;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2703 tab_amr_ptr[i]=tab_amr_ptr[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2704
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2705 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2706 if (!l1_config.agc_enable)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2707 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2708 // AGC gain can only be controlled in 2dB steps as the bottom bit (bit zero)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2709 // corresponds to the lna_off bit
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2710 last_known_agc = (l1_config.tmode.rx_params.agc) << 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2711 lna_value = (l1_config.tmode.rx_params.lna_off) * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2712 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2713 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2714 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2715 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2716 #if DPAGC_MAX_FLAG
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2717 last_known_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2718 // F7.1 in order to be compatible with pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2719 #else
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2720 last_known_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, AV_ID)) << 1;
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2721 // F7.1 in order to be compatible with pm and IL formats
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2722 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2723 // input_level_dd : contain the input_level value we use
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2724 // in the associated CTL task to build the agc used in this CTL.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2725
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2726 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2727 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2728
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2729 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2730 arfcn = Convert_l1_radio_freq(radio_freq);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2731 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2732 arfcn=radio_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2733 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2734
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2735 #if(RF_FAM == 61)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2736 #if (CODE_VERSION != SIMULATION)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2737 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2738 l1a_l1s_com.Scell_used_IL_dd.input_level,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2739 radio_freq,if_threshold);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2740 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2741 delta_drp_gain = drp_gain_correction(arfcn, lna_off, last_known_agc); // F7.1 format
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2742 if(if_ctl == IF_100KHZ_DSP){
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2743 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2744 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2745 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2746 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2747 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2748 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2749 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2750
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2751 if (0==pm) // Check and filter illegal pm value by using last valid IL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2752 new_IL = IL_info_ptr->input_level;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2753 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2754 new_IL = -(pm - (last_known_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2755
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2756 current_calibrated_IL = new_IL - delta1_freq - delta2_freq;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2757
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2758 // Protect IL stores against overflow
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2759 if (current_calibrated_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2760 current_calibrated_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2761
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2762 #if TESTMODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2763 if (l1tm.tmode_state.dedicated_active) // Implies l1_config.TestMode = 1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2764 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2765 // Update l1tm.tmode_stats.rssi_fifo (delay line from index 3 to 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2766 for (i=(sizeof(l1tm.tmode_stats.rssi_fifo)/sizeof(l1tm.tmode_stats.rssi_fifo[0]))-1; i>0; i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2767 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2768 l1tm.tmode_stats.rssi_fifo[i] = l1tm.tmode_stats.rssi_fifo[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2769 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2770 l1tm.tmode_stats.rssi_fifo[0] = current_calibrated_IL; // rssi value is F7.1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2771 l1tm.tmode_stats.rssi_recent = current_calibrated_IL; // rssi value is F7.1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2772 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2773 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2774
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2775 if (new_IL>INDEX_MAX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2776 new_IL=INDEX_MAX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2777
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2778 tab_ptr[0] = (UWORD8)new_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2779 tab_amr_ptr[0] = (UWORD8)new_IL;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2780
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2781 if (dtx_on && !beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2782 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2783 // a new AMR block is received, feed the G_dtx with the max_il of the block
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2784 for (i=DPAGC_FIFO_LEN-1;i>0;i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2785 aset->G_DTX[i]=aset->G_DTX[i-1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2786
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2787 if (l1a_l1s_com.dedic_set.aset->achan_ptr->mode == TCH_AHS_MODE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2788 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2789 // Keep the max_il between the last 2 bursts
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2790 if (aset->G_amr[0] > aset->G_amr[1])
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2791 max_il = aset->G_amr[0];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2792 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2793 max_il = aset->G_amr[1];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2794 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2795 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2796 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2797 // Keep the max_il between the last 4 bursts
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2798 max_il = l1ctl_find_max(&aset->G_amr[0], DPAGC_AMR_FIFO_LEN);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2799 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2800
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2801 aset->G_DTX[0]= max_il;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2802 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2803
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2804 /* Computation of MAX{G_all[i],G_DTX[j]} i,j=0..3 */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2805 #if DPAGC_MAX_FLAG
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2806 max_G_all = l1ctl_find_max(&(tab_ptr[0]),DPAGC_FIFO_LEN);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2807
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2808 if (!beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2809 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2810 max_G_DTX = l1ctl_find_max(&(aset->G_DTX[0]),DPAGC_FIFO_LEN);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2811
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2812 // WARNING: for array index purpose we work with POSITIVE input level
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2813 // so maximum search for negative numbers is equivalent to
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2814 // minimum search for positive numbers!!!!!!
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2815 // (-30 > -120 but 30 < 120)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2816 if (max_G_all <= max_G_DTX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2817 new_IL = max_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2818 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2819 new_IL = max_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2820 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2821 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2822 new_IL = max_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2823 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2824 av_G_all=av_G_DTX=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2825
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2826 for (i=0;i<DPAGC_FIFO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2827 av_G_all += tab_ptr[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2828
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2829 av_G_all /= DPAGC_FIFO_LEN;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2830
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2831 if (!beacon)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2832 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2833 for (i=0;i<DPAGC_FIFO_LEN;i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2834 av_G_DTX += aset->G_DTX[i];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2835
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2836 av_G_DTX /= DPAGC_FIFO_LEN;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2837
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2838 if (av_G_all >= av_G_DTX)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2839 new_IL = av_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2840 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2841 new_IL = av_G_DTX;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2842 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2843 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2844 new_IL = av_G_all;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2845 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2846
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2847 // Updating of input_level and lna_off fields in order to correctly
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2848 // setting the AGC for the next task.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2849 // input_level is always store with lna_on
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2850
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2851 l1ctl_encode_lna( (UWORD8)(current_calibrated_IL>>1),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2852 &(IL_info_ptr->lna_off),
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2853 radio_freq );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2854 IL_info_ptr->input_level = (UWORD8)new_IL ;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2855
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2856 #if L2_L3_SIMUL
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2857 #if (DEBUG_TRACE==BUFFER_TRACE_DPAGC)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2858 buffer_trace(4,IL_info_ptr->input_level,last_known_agc,
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2859 l1a_l1s_com.Scell_used_IL_dd.input_level,Cust_get_agc_from_IL(radio_freq, new_IL >> 1, MAX_ID));
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2860 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2861 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2862
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2863 return((UWORD8)current_calibrated_IL);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2864 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2865 #endif // AMR == 1
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2866
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2867 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2868 /* l1ctl_get_g_magic() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2869 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2870 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2871 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2872 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2873 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2874 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2875 UWORD16 l1ctl_get_g_magic(UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2876 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2877
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2878
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2879 if ((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) || (l1_config.std.id == DUAL_US))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2880 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2881 if (radio_freq >= l1_config.std.first_radio_freq_band2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2882 return(l1_config.std.g_magic_band2);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2883 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2884 return(l1_config.std.g_magic_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2885 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2886 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2887 return(l1_config.std.g_magic_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2888
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2889
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2890 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2891 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2892
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2893 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2894 /* l1ctl_get_lna_att() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2895 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2896 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2897 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2898 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2899 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2900 #if (L1_FF_MULTIBAND == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2901 UWORD16 l1ctl_get_lna_att(UWORD16 radio_freq)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2902 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2903
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2904
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2905 if ((l1_config.std.id == DUAL) || (l1_config.std.id == DUALEXT) || (l1_config.std.id == DUAL_US))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2906 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2907 if (radio_freq >= l1_config.std.first_radio_freq_band2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2908 return(l1_config.std.lna_att_band2);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2909 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2910 return(l1_config.std.lna_att_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2911 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2912 else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2913 return(l1_config.std.lna_att_band1);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2914
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2915
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2916 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2917 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2918 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2919 /* l1ctl_update_TPU_with_toa() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2920 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2921 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2922 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2923 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2924 /*-------------------------------------------------------*/
82
ef6cf21cf9d6 l1_ctl.c: passes compilation, but doesn't match old object yet
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 81
diff changeset
2925 void l1ctl_update_TPU_with_toa(void)
80
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2926 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2927 #if (TOA_ALGO != 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2928 WORD16 toa_shift;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2929
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2930 #if (TOA_ALGO == 2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2931 toa_shift = l1s.toa_var.toa_shift;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2932 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2933 toa_shift = l1s.toa_shift;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2934 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2935
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2936 if (toa_shift != ISH_INVALID)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2937 // New ISH (TOA shift) has been stored in "l1s.toa_shift".
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2938 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2939 // NEW !!! For EOTD measurements in IDLE mode, cut AFC updates...
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2940 #if (L1_EOTD==1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2941 #if (L1_GPRS)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2942 if ( (l1a_l1s_com.nsync.eotd_meas_session == FALSE) ||
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2943 (l1a_l1s_com.mode == DEDIC_MODE)||
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2944 (l1a_l1s_com.l1s_en_task[PDTCH] == TASK_ENABLED))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2945 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2946 if ( (l1a_l1s_com.nsync.eotd_meas_session == FALSE) ||
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2947 (l1a_l1s_com.mode == DEDIC_MODE))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2948 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2949 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2950 // In dedicated or transfer modes we need to track an TOA
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2951 // updates to post correct th results, else E-OTD implementation
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2952 // has qb errors...
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2953
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2954 if( (l1a_l1s_com.nsync.eotd_meas_session == TRUE)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2955 && (l1a_l1s_com.nsync.eotd_toa_phase == 1) )
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2956 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2957 l1a_l1s_com.nsync.eotd_toa_tracking += toa_shift;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2958 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2959 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2960 // Update tpu offset.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2961 l1s.tpu_offset = (l1s.tpu_offset + TPU_CLOCK_RANGE + toa_shift) % TPU_CLOCK_RANGE;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2962
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2963 #if (TRACE_TYPE==1) || (TRACE_TYPE==4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2964 #if (GSM_IDLE_RAM == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2965 l1_trace_new_toa();
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2966 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2967 l1_trace_new_toa_intram();
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2968 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2969 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2970
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2971 #if (L1_EOTD==1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2972 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2973 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2974
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2975 #if (TRACE_TYPE == 5)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2976 #if (TOA_ALGO == 2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2977 trace_toa_sim_update (toa_shift,l1s.tpu_offset);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2978 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2979 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2980
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2981 // Reset ISH.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2982 #if (TOA_ALGO == 2)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2983 l1s.toa_var.toa_shift = ISH_INVALID; // Reset the ISH.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2984 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2985 l1s.toa_shift = ISH_INVALID; // Reset the ISH.
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2986 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2987 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2988 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2989 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2990
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2991
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2992 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2993 /* l1ctl_saic() */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2994 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2995 /* Parameters : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2996 /* Return : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2997 /* Functionality : */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2998 /*-------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
2999
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3000 #if (L1_SAIC != 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3001 #define SWH_CHANTAP_INIT 0xFFD068CE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3002 #if (NEW_SNR_THRESHOLD == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3003 UWORD8 l1ctl_saic (UWORD8 IL_for_rxlev, UWORD32 l1_mode, UWORD8 task, UWORD8 * saic_flag)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3004 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3005 UWORD8 l1ctl_saic (UWORD8 IL_for_rxlev, UWORD32 l1_mode)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3006 #endif /* NEW_SNR_THRESHOLD */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3007 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3008 UWORD16 SWH_flag = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3009 UWORD8 CSF_Filter_choice = L1_SAIC_HARDWARE_FILTER;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3010 #if (NEW_SNR_THRESHOLD == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3011 volatile UWORD16 *ptr;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3012 UWORD8 saic_flag;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3013 #endif /* NEW_SNR_THRESHOLD */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3014 #if (NEW_SNR_THRESHOLD == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3015 ptr = (volatile UWORD16 * ) (SWH_CHANTAP_INIT);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3016 *ptr = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3017 saic_flag=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3018 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3019 *saic_flag=0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3020 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3021
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3022 switch (l1_mode)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3023 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3024 case DEDIC_MODE: // GSM DEDICATED MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3025 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3026 #if (NEW_SNR_THRESHOLD == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3027 *saic_flag=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3028 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3029 if(IL_for_rxlev < L1_SAIC_GENIE_GSM_DEDIC_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3030 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3031 SWH_flag=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3032 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3033
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3034 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3035 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3036 #if L1_GPRS
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3037 case PACKET_TRANSFER_MODE: // PACKET TRANSFER MODE
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3038 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3039 #if (NEW_SNR_THRESHOLD == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3040 #if (L1_SAIC == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3041 if(IL_for_rxlev < L1_SAIC_GENIE_GPRS_PCKT_TRAN_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3042 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3043 *ptr = 4;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3044 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3045 #endif /*#if (L1_SAIC == 3)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3046 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3047
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3048 #if (L1_SAIC == 3)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3049 if(IL_for_rxlev < L1_SAIC_GENIE_GPRS_PCKT_TRAN_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3050 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3051 SWH_flag = 1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3052 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3053 #endif /*#if (L1_SAIC == 3)*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3054 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3055 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3056 #endif /*#if L1_GPRS*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3057 default: /* GSM OR GPRS IDLE MODES */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3058 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3059 #if ((L1_SAIC == 2)||(L1_SAIC == 3))
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3060 if(IL_for_rxlev < L1_SAIC_GENIE_GSM_GPRS_IDLE_THRESHOLD)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3061 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3062 SWH_flag=1;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3063 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3064 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3065 break;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3066 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3067 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3068
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3069 l1ddsp_load_swh_flag (SWH_flag ,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3070 #if (NEW_SNR_THRESHOLD == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3071 saic_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3072 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3073 *saic_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3074 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3075 );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3076
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3077 if(SWH_flag == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3078 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3079 CSF_Filter_choice = L1_SAIC_PROGRAMMABLE_FILTER;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3080 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3081
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3082
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3083 #if (TRACE_TYPE == 1) || (TRACE_TYPE == 4)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3084 l1_trace_saic(SWH_flag,
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3085 #if (NEW_SNR_THRESHOLD == 0)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3086 saic_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3087 #else
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3088 *saic_flag
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3089 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3090 );
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3091 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3092 #if (TRACE_TYPE == 5)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3093 trace_saic_sim(IL_for_rxlev, l1_mode, SWH_flag);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3094 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3095
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3096 return(CSF_Filter_choice);
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3097 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3098 #endif
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3099
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3100 #if (FF_L1_FAST_DECODING == 1)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3101 /*-----------------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3102 /* l1ctl_pagc_missing_bursts */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3103 /*-----------------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3104 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3105 /* Description: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3106 /* ------------ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3107 /* When fast decoding is active, fewer bursts are decoded. As a */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3108 /* result, fewer gain values are available. The PAGC algo must */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3109 /* be updated with the missed values. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3110 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3111 /* Input parameters: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3112 /* ----------------- */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3113 /* UWORD8 skipped_values: the number of skipped bursts due to fast */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3114 /* decoding. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3115 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3116 /* Input parameters from globals: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3117 /* ------------------------------ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3118 /* l1a_l1s_com.Scell_info.buff_beacon: Input Level (IL) FIFO */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3119 /* l1_config.params.il_min: minimum level */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3120 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3121 /* Output parameters: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3122 /* ------------------ */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3123 /* none */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3124 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3125 /* Modified parameters from globals: */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3126 /* --------------------------------- */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3127 /* l1a_l1s_com.Scell_info.buff_beacon: Input Level (IL) FIFO */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3128 /* */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3129 /*-----------------------------------------------------------------*/
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3130
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3131 void l1ctl_pagc_missing_bursts (UWORD8 skipped_values)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3132 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3133 UWORD8 i = 0;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3134
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3135 /* skipped_values cannot be greater than 3, otherwise this is an error
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3136 * and the PAGC algorithm mustn't be updated. */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3137 if (skipped_values > 3)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3138 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3139 return;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3140 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3141
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3142 /* Update fifo by removing skipped_values of samples */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3143 for (i = 3; i > (skipped_values - 1); i--)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3144 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3145 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-skipped_values];
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3146 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3147
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3148 /* Insert minimum IL level as many times a burst has been skipped */
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3149 for (i = 0; i < skipped_values; i++)
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3150 {
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3151 l1a_l1s_com.Scell_info.buff_beacon[i] = l1_config.params.il_min;
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3152 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3153 }
6c740cf30da3 l1_ctl.c: initial import of LoCosto source
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 15
diff changeset
3154 #endif /* #if (FF_L1_FAST_DECODING == 1) */
83
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3155
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3156 /*
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3157 * FreeCalypso TCS211 reconstruction: these functions used to be
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3158 * at the beginning of the module; we have moved them here in order
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3159 * to aid the diffing of compiled objects.
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3160 */
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3161
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3162 static WORD16 Add_Sat_sign_16b(WORD16 val1, WORD16 val2)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3163 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3164 WORD32 temp;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3165 WORD16 result;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3166
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3167 temp = (WORD32)((WORD32)val1 + (WORD32)val2);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3168 if(temp > L1_WORD16_POS_MAX)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3169 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3170 temp = L1_WORD16_POS_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3171 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3172 if(temp < L1_WORD16_NEG_MAX)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3173 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3174 temp = L1_WORD16_NEG_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3175 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3176 result = (WORD16)((temp)&(0x0000FFFF));
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3177 return(result);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3178 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3179
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3180 static WORD32 Add_Sat_sign_32b(WORD32 val1, WORD32 val2)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3181 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3182 WORD32 temp_high_high;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3183 UWORD32 temp_low_low;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3184 UWORD16 carry;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3185 WORD32 result;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3186 WORD16 high_val1, high_val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3187 UWORD16 low_val1, low_val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3188
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3189 high_val1 = (WORD16)(val1>>16);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3190 high_val2 = (WORD16)(val2>>16);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3191 low_val1 = (UWORD16)(val1&0x0000FFFF);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3192 low_val2 = (UWORD16)(val2&0x0000FFFF);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3193
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3194 temp_high_high = (WORD32)high_val1 + (WORD32)high_val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3195 temp_low_low = (UWORD32)low_val1 + (UWORD32)low_val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3196 carry = (UWORD16)(temp_low_low >> 16);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3197 temp_high_high = temp_high_high + (UWORD32)(carry);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3198
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3199
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3200 result = val1 + val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3201 if(temp_high_high > L1_WORD16_POS_MAX)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3202 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3203 result = L1_WORD32_POS_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3204 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3205 if(temp_high_high < L1_WORD16_NEG_MAX)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3206 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3207 result = L1_WORD32_NEG_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3208 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3209
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3210 return(result);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3211 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3212
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3213 static WORD32 Sat_Mult_20sign_16unsign(WORD32 val1, UWORD32 val2)
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3214 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3215 WORD32 result;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3216
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3217 result = val1 * val2;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3218 if(val1>0) /* val2 is > 0*/
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3219 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3220 if(result < 0) /* overflow */
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3221 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3222 result = L1_WORD32_POS_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3223 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3224 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3225 if(val1<0) /* val2 is > 0*/
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3226 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3227 if(result > 0) /* overflow */
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3228 {
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3229 result = L1_WORD32_NEG_MAX;
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3230 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3231 }
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3232 return(result);
43dd68d8d891 l1_ctl.c: new functions moved and made static to facilitate diffing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 82
diff changeset
3233 }