annotate chipsetsw/layer1/p_cfile/l1p_ctl.c @ 310:cd2507a8ec57

l1p_ctl.c: passes compilation
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 02 Oct 2017 20:17:05 +0000
parents 871cf4253768
children 5f8ab159aa76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1 /************* Revision Controle System Header *************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
2 * GSM Layer 1 software
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
3 * L1P_CTL.C
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
4 *
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
5 * Filename l1p_ctl.c
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
6 * Copyright 2003 (C) Texas Instruments
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
7 *
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
8 ************* Revision Controle System Header *************/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
9
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
10 #include "l1_macro.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
11 #include "l1_confg.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
12
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
13 #if L1_GPRS
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
14 #if (CODE_VERSION == SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
15 #include <string.h>
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
16 #include "l1_types.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
17 #include "sys_types.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
18 #include "l1_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
19 #include "l1_time.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
20 #include "l1_signa.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
21 #if TESTMODE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
22 #include "l1tm_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
23 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
24 #if (AUDIO_TASK == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
25 #include "l1audio_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
26 #include "l1audio_cust.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
27 #include "l1audio_signa.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
28 #include "l1audio_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
29 #include "l1audio_msgty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
30 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
31 #if (L1_GTT == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
32 #include "l1gtt_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
33 #include "l1gtt_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
34 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
35 #if (L1_MP3 == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
36 #include "l1mp3_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
37 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
38 #if (L1_MIDI == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
39 #include "l1midi_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
40 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
41 #include "l1_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
42 #include "cust_os.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
43 #include "l1_msgty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
44 #include "l1_varex.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
45 #include "l1_proto.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
46 #include "l1_mftab.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
47 #include "l1_tabs.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
48 #include "l1_ver.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
49
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
50 #include "l1_ctl.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
51
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
52 #include "l1p_cons.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
53 #include "l1p_msgt.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
54 #include "l1p_deft.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
55 #include "l1p_vare.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
56 #include "l1p_sign.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
57 #if (OP_L1_STANDALONE == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
58 #ifdef _INLINE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
59 #define INLINE static inline // Inline functions when -v option is set
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
60 #else // when the compiler is ivoked.
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
61 #define INLINE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
62 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
63 #endif //0maps00090550
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
64 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
65 #include <string.h>
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
66 #include "l1_types.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
67 #include "sys_types.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
68 #include "l1_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
69 #include "l1_time.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
70 #include "l1_signa.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
71
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
72 #if (RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
73 #include "tpudrv61.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
74 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
75
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
76 #if TESTMODE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
77 #include "l1tm_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
78 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
79 #if (AUDIO_TASK == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
80 #include "l1audio_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
81 #include "l1audio_cust.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
82 #include "l1audio_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
83 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
84 #if (L1_GTT == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
85 #include "l1gtt_const.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
86 #include "l1gtt_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
87 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
88 #if (L1_MP3 == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
89 #include "l1mp3_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
90 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
91 #if (L1_MIDI == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
92 #include "l1midi_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
93 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
94 #include "l1_defty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
95 #include "cust_os.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
96 #include "l1_msgty.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
97 #include "l1_varex.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
98 #include "l1_proto.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
99
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
100 #include "l1_ctl.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
101
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
102 #include "l1p_cons.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
103 #include "l1p_msgt.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
104 #include "l1p_deft.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
105 #include "l1p_vare.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
106 #include "l1p_sign.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
107 #if (OP_L1_STANDALONE == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
108 #ifdef _INLINE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
109 #define INLINE static inline // Inline functions when -v option is set
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
110 #else // when the compiler is ivoked.
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
111 #define INLINE
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
112 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
113 #endif //omaps00090550
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
114 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
115
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
116 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
117 #include "l1_rf61.h"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
118 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
119
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
120
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
121 // Macro definition
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
122 //-----------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
123 #define min(value1,value2) \
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
124 value1 < value2 ? value1 : value2
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
125
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
126 // External prototypes
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
127 //--------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
128
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
129 WORD8 l1ctl_encode_delta1(UWORD16 radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
130
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
131 /*********************************************************/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
132 /* GPRS AGC Algorithms */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
133 /*********************************************************/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
134
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
135 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
136 /* l1pctl_pagc_ctrl() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
137 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
138 /* Description: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
139 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
140 /* Based on the same principle as the one used for PAGC */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
141 /* algorithm except that we also feed the beacon FIFO */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
142 /* with IL measured on other carriers (Pb parameter is */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
143 /* applied) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
144 /* This function is used in the control phase of PCCCH, */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
145 /* serving PBCCH and PTCCH reading tasks to determine */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
146 /* which AGC and lna_off must apply */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
147 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
148 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
149 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
150 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
151 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
152 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
153 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
154 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
155 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
156 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
157 void l1pctl_pagc_ctrl(WORD8 *agc, UWORD8 *lna_off, UWORD16 radio_freq, UWORD8 serving_cell)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
158 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
159 UWORD8 pb;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
160 WORD16 input_level, new_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
161 WORD32 freq_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
162 UWORD16 beacon_frequency;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
163 UWORD8 *lna_off_ptr;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
164 UWORD8 curve_id;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
165
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
166 // We memorize the LNA state used for other serving frequencies that can be used
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
167 // in Packet idle mode
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
168 static UWORD8 lna_off_others = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
169
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
170 if (serving_cell == TRUE)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
171 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
172 beacon_frequency = l1a_l1s_com.Scell_info.radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
173 pb = l1a_l1s_com.Scell_info.pb;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
174 lna_off_ptr = &lna_off_others;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
175 curve_id = MAX_ID;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
176 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
177 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
178 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
179 beacon_frequency = l1pa_l1ps_com.pbcchn.bcch_carrier;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
180 pb = l1pa_l1ps_com.pbcchn.pb;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
181 lna_off_ptr = lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
182 curve_id = AV_ID;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
183 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
184
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
185 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
186 freq_index = beacon_frequency - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
187 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
188 freq_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(beacon_frequency);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
189 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
190
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
191
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
192 // If the downlink channel is decoded on the beacon frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
193 if (radio_freq == beacon_frequency)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
194 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
195 // Downlink task on the serving beacon: process AGC according to the "beacon IL"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
196 input_level = l1a_l1s_com.last_input_level[freq_index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
197
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
198 // lna_off already processed in the read phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
199 *lna_off = l1a_l1s_com.last_input_level[freq_index].lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
200 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
201
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
202 // If the downlink channel is decoded on a frequency other than the beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
203 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
204 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
205
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
206 // Process AGC according to "beacon IL + Pb"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
207 input_level = (WORD16) (l1a_l1s_com.last_input_level[freq_index].input_level + pb);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
208
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
209 // IL_2_AGC_xx array size
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
210 if (input_level>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
211 input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
212
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
213 // lna_off must be processed in the control phase because input_level
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
214 // depends on last_input_level and Pb, and last_input_level or pb can have changed
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
215 // at any time
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
216
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
217 // New calibrated IL to reach on radio freq other than beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
218 new_calibrated_IL = (WORD16) (input_level - l1ctl_encode_delta1(radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
219 - l1ctl_encode_delta2(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
220
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
221 // IL_2_AGC_xx array size
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
222 if (new_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
223 new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
224
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
225 // lna_off computing...
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
226 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
227 lna_off_ptr,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
228 radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
229
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
230 *lna_off = *lna_off_ptr;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
231 } // End if "radio_freq != beacon_frequency"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
232
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
233 // Process AGC to apply
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
234 *agc = Cust_get_agc_from_IL(radio_freq,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
235 input_level >> 1,
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
236 curve_id);
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
237
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
238 // Store lna_off and input_level field used for current CTRL in order to be able
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
239 // to build IL from pm in READ phase.
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
240 l1a_l1s_com.Scell_used_IL.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
241 l1a_l1s_com.Scell_used_IL.lna_off = *lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
242
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
243 } // End of "l1pctl_pagc_ctrl"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
244
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
245 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
246 /* l1pctl_pagc_read() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
247 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
248 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
249 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
250 /* Based on the same principle as the one used for PAGC */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
251 /* algorithm except that we also feed the beacon FIFO */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
252 /* with IL measured on other carriers (Pb parameter is */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
253 /* applied) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
254 /* This function is used in the read phase of PCCCH and */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
255 /* serving PBCCH reading tasks to determine the IL value */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
256 /* store it in the FIFO and find the next IL to use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
257 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
258 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
259 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
260 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
261 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
262 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
263 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
264 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
265 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
266 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
267 UWORD8 l1pctl_pagc_read(UWORD8 pm, UWORD16 radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
268 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
269 UWORD8 i, new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
270 WORD8 delta1_freq, delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
271 WORD16 delta_drp_gain=0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
272 UWORD16 lna_value;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
273 WORD16 used_agc, current_IL, new_calibrated_IL, current_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
274 WORD32 serving_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
275 UWORD16 arfcn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
276 UWORD8 lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
277 UWORD16 dco_algo_ctl_pw_temp = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
278 UWORD8 if_ctl = 0;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
279 #if (RF_FAM == 61) && (CODE_VERSION != SIMULATION)
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
280 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GPRS;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
281 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
282
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
283 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
284 serving_index = l1a_l1s_com.Scell_info.radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
285
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
286 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
287 serving_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
288 #endif /*if (L1_FF_MULTIBAND == 0)*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
289
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
290
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
291 // Calibration factors
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
292 delta1_freq = l1ctl_encode_delta1(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
293 delta2_freq = l1ctl_encode_delta2(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
294
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
295 // AGC used in the control phase (format F7.1)
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
296 used_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
297
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
298 // LNA attenuation
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
299 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
300
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
301 // DRP correction
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
302 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
303 arfcn = Convert_l1_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
304 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
305 arfcn=radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
306 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
307
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
308 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
309 #if (CODE_VERSION != SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
310
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
311 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
312 l1a_l1s_com.Scell_used_IL_dd.input_level,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
313 radio_freq,if_threshold);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
314 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
315 delta_drp_gain = drp_gain_correction(arfcn, lna_off, used_agc); // F7.1 format
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
316 if(if_ctl == IF_100KHZ_DSP){
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
317 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
318 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
319 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
320 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
321 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
322
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
323 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
324 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
325
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
326 // current_IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
327
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
328 if (0==pm) // Check and filter illegal pm value by using last valid IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
329 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
330 current_IL = l1a_l1s_com.last_input_level[serving_index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
331 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
332 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
333 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
334 current_IL = -(pm - (used_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
335
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
336 // IL normalization to beacon (ILnorm = IL - Pb)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
337 if (radio_freq != l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
338 current_IL -= l1a_l1s_com.Scell_info.pb;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
339 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
340
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
341 // Calibrated IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
342 // NOTE: calibrated_IL is normalized to beacon. This is needed for the
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
343 // pccch_lev processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
344 current_calibrated_IL = (WORD16) (current_IL - delta1_freq - delta2_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
345
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
346 // Protect IL stores against overflow
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
347 if (current_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
348 current_calibrated_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
349 if (current_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
350 current_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
351
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
352 // FIFO management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
353 for (i=3;i>0;i--)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
354 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-1];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
355 l1a_l1s_com.Scell_info.buff_beacon[0] = (UWORD8)current_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
356
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
357 // Find min IL in FIFO
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
358 new_IL = l1ctl_find_max(l1a_l1s_com.Scell_info.buff_beacon, 4);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
359
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
360 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
361 new_calibrated_IL = (WORD16) (new_IL - delta1_freq - delta2_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
362
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
363 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
364
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
365 l1ctl_encode_lna( (UWORD8)(new_calibrated_IL>>1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
366 &(l1a_l1s_com.last_input_level[serving_index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
367 radio_freq );
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
368
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
369 l1a_l1s_com.last_input_level[serving_index].input_level = new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
370 return((UWORD8)current_calibrated_IL);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
371 } // End of "l1pctl_pagc_read"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
372
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
373 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
374 /* l1pctl_transfer_agc_init() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
375 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
376 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
377 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
378 /* Packet transfer AGC algorithm initialization */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
379 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
380 void l1pctl_transfer_agc_init()
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
381 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
382 WORD16 calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
383 UWORD16 radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
384 WORD32 serving_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
385 WORD16 input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
386
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
387 #if (L1_FF_MULTIBAND ==0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
388 serving_index = l1a_l1s_com.Scell_info.radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
389
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
390 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
391 serving_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
392 #endif /*if L1_FF_MULTIBAND*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
393
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
394
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
395 // Daughter frequencies input level initialization
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
396 //------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
397 if (l1pa_l1ps_com.transfer.aset->dl_pwr_ctl.p0 == 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
398 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
399 // No power control mode AGC algorithm
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
400 input_level = (WORD16) (l1a_l1s_com.last_input_level[serving_index].input_level + l1a_l1s_com.Scell_info.pb);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
401
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
402 // Set fn_select to current_fn
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
403 l1ps.fn_select = l1s.actual_time.fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
404 // Initialize algorithm in "SEARCH" phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
405 l1ps.phase = SEARCH;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
406 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
407 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
408 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
409 // Downlink power control AGC algorithms
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
410 if (l1pa_l1ps_com.transfer.aset->dl_pwr_ctl.bts_pwr_ctl_mode == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
411 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
412 // BTS Power control mode A
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
413 input_level = (WORD16) (l1a_l1s_com.last_input_level[serving_index].input_level +
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
414 l1pa_l1ps_com.transfer.aset->dl_pwr_ctl.p0 + 10);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
415
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
416 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
417 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
418 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
419 // BTS power control mode B
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
420 input_level = (WORD16) (l1a_l1s_com.last_input_level[serving_index].input_level +
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
421 l1pa_l1ps_com.transfer.aset->dl_pwr_ctl.p0);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
422
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
423 // Initialization: PR = P0
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
424 l1ps.last_PR_good = l1pa_l1ps_com.transfer.aset->dl_pwr_ctl.p0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
425 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
426 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
427
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
428 if (input_level>INDEX_MAX) input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
429 l1a_l1s_com.Scell_info.transfer_meas.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
430
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
431
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
432 // Daughter frequencies lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
433 //----------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
434
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
435 // We need to know on which frequency band we work
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
436 if (!l1pa_l1ps_com.transfer.aset->freq_param.chan_sel.h)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
437 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
438 // Single frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
439 radio_freq = l1pa_l1ps_com.transfer.aset->freq_param.chan_sel.rf_channel.single_rf.radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
440 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
441 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
442 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
443 // Frequency hopping: all frequencies of the frequency list are on the same band
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
444 // We take the first frequency of the list
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
445 radio_freq = l1pa_l1ps_com.transfer.aset->freq_param.freq_list.rf_chan_no.A[0];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
446 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
447
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
448 calibrated_IL = (WORD16) (l1a_l1s_com.Scell_info.transfer_meas.input_level
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
449 - l1ctl_encode_delta1(radio_freq) - l1ctl_encode_delta2(radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
450 - l1a_l1s_com.last_input_level[serving_index].lna_off * l1ctl_get_lna_att(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
451
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
452 if (calibrated_IL>INDEX_MAX) calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
453
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
454 l1ctl_encode_lna((UWORD8)(calibrated_IL>>1), &(l1a_l1s_com.Scell_info.transfer_meas.lna_off), radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
455
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
456 } // End of "l1pctl_transfer_agc_init"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
457
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
458 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
459 /* l1pctl_transfer_agc_ctrl() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
460 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
461 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
462 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
463 /* This function is used in the control phase of PDTCH/D */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
464 /* to determine which AGC and lna_off must apply */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
465 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
466 void l1pctl_transfer_agc_ctrl(WORD8 *agc, UWORD8 *lna_off, UWORD16 radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
467 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
468 T_INPUT_LEVEL *selected_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
469 #if(L1_FF_MULTIBAND == 1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
470 UWORD16 operative_radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
471 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
472
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
473
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
474 // input_level selection
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
475 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
476 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
477 // Beacon frequency input_level used for AGC processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
478 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
479 selected_IL = &l1a_l1s_com.last_input_level[l1a_l1s_com.Scell_info.radio_freq
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
480 - l1_config.std.radio_freq_index_offset];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
481
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
482 #else // L1_FF_MULTIBAND = 1 below
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
483
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
484 operative_radio_freq =
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
485 l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
486 selected_IL = &(l1a_l1s_com.last_input_level[operative_radio_freq]);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
487
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
488
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
489 #endif // #if(L1_FF_MULTIBAND == 0) else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
490
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
491 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
492 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
493 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
494 // Daughter frequency input_level used for AGC processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
495 selected_IL = &l1a_l1s_com.Scell_info.transfer_meas;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
496 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
497 *lna_off = selected_IL->lna_off;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
498 *agc = Cust_get_agc_from_IL(radio_freq,selected_IL->input_level >> 1, MAX_ID);
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
499
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
500 // Store lna_off and input_level field used for current CTRL in order to be able
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
501 // to build IL from pm in READ phase.
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
502 l1a_l1s_com.Scell_used_IL.input_level = selected_IL->input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
503 l1a_l1s_com.Scell_used_IL.lna_off = *lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
504
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
505 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
506
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
507 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
508 /* l1pctl_npc_agc_read() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
509 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
510 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
511 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
512 /* AGC algorithm in packet transfer used when */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
513 /* NO POWER CONTROL is done by the BTS. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
514 /* This function is used during the read phase of PDTCH: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
515 /* 1- to determine the IL value for each timeslot in each*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
516 /* TDMA */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
517 /* 2- to find the IL value to use for the next PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
518 /* block */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
519 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
520 /* Algorithm */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
521 /* --------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
522 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
523 /* IL(i) = fct(used AGC, pm) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
524 /* if (beacon) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
525 /* ILmax_beacon = max(ILmax_beacon, IL(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
526 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
527 /* ILmax_others(i) = max(IL(i), ILmax_others(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
528 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
529 /* If (burst_nb == 3) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
530 /* If (ILmax_beacon was found during the block) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
531 /* FIFO[beacon] updated with ILmax_beacon */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
532 /* transfer_meas = max(FIFO[beacon]) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
533 /* Reset ILmax_beacon */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
534 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
535 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
536 /* if (CRC good) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
537 /* ILmax_correct = max(ILmax_correct, */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
538 /* ILmax_others(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
539 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
540 /* ILmax_not_correct = max(ILmax_not_correct, */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
541 /* ILmax_others(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
542 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
543 /* If (no ILmax_correct was found) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
544 /* ILselected = ILmax_correct */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
545 /* FNselected = current FN */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
546 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
547 /* DeltaFN = (current FN - FNselected) % MAX_FN */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
548 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
549 /* if (DeltaFN < 78) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
550 /* ILweighted = ILselected * (1 - DeltaFN/78) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
551 /* - 120 * DeltaFN /78 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
552 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
553 /* if (ILweighted < -120) ILweighted = -120 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
554 /* if (ILmax_not_correct > ILweighted) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
555 /* ILselected = ILmax_not_correct */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
556 /* FNselected = current FN */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
557 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
558 /* ILselected = -120 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
559 /* FNselected = current FN */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
560 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
561 /* Reset ILmax_others[8] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
562 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
563 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
564 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
565 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
566 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
567 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
568 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
569 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
570 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
571 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
572 /* Parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
573 /* ---------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
574 /* "calibrated_IL[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
575 /* contains the IL found on timeslots */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
576 /* used for PDCH/D. These ILs can be used to process */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
577 /* RXLEV values. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
578 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
579 /* "*pdsp_db_r_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
580 /* Pointer on the DSP DB Read page, used to extract */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
581 /* pm values, burst number and timeslot allocated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
582 /* for downlink PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
583 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
584 /* "*pdsp_ndb_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
585 /* Pointer on the DSP NDB page, used to extract the */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
586 /* CRC value for each decoded burst */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
587 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
588 /* Global parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
589 /* ----------------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
590 /* "l1a_l1s_com.Scell_info.transfer_meas.input_level" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
591 /* "l1a_l1s_com.Scell_info.transfer_meas.lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
592 /* Used to store the ILselected and the associated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
593 /* lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
594 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
595 /* "l1a_l1s_com.Scell_info.fn_select" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
596 /* Used to store the FNselected value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
597 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
598 /* "l1a_l1s_com.last_input_level[freq index] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
599 /* .input_level */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
600 /* .lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
601 /* Used to store the beacon input level and */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
602 /* the associated lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
603 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
604 /* "l1ps.transfer_beacon_buf[4]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
605 /* FIFO[beacon] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
606 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
607 /* "l1ps.ILmin_beacon" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
608 /* "l1ps.ILmin_others[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
609 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
610 void l1pctl_npc_agc_read(UWORD8 calibrated_IL[8], T_DB_DSP_TO_MCU_GPRS *pdsp_db_r_ptr,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
611 T_NDB_MCU_DSP_GPRS *pdsp_ndb_ptr)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
612 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
613 UWORD8 ts;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
614 UWORD8 rx_no = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
615 UWORD8 bit_mask = 0x80;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
616 UWORD8 ILmin_correct = 255;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
617 UWORD8 ILmin_not_correct = 255;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
618 WORD8 delta1_freq, delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
619 WORD16 delta_drp_gain=0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
620 UWORD16 radio_freq, lna_value;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
621 WORD16 used_agc;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
622 WORD32 serving_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
623 UWORD16 arfcn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
624 UWORD8 lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
625 UWORD16 dco_algo_ctl_pw_temp = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
626 UWORD8 if_ctl = 0;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
627 #if (RF_FAM == 61) && (CODE_VERSION != SIMULATION)
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
628 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GPRS;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
629 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
630
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
631 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
632 serving_index = l1a_l1s_com.Scell_info.radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
633
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
634 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
635 serving_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
636 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
637
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
638
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
639 // Control phase parameters: same AGC, radio_freq, lna_off used for all PDTCH
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
640 // ***************************************************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
641
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
642 // Get radio_freq on which the downlink block was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
643 radio_freq = l1a_l1s_com.dedic_set.radio_freq_dd;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
644
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
645 // Compute calibration factors
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
646 delta1_freq = l1ctl_encode_delta1(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
647 delta2_freq = l1ctl_encode_delta2(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
648
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
649 // AGC used in the control phase (format F7.1)
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
650 used_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
651
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
652 // LNA attenuation
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
653 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
654
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
655 // Burst 0: Reset ILmin_beacon and ILmin_others
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
656 if(pdsp_db_r_ptr->d_burst_nb_gprs == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
657 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
658 l1ps.ILmin_beacon = 255; // Not valid
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
659
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
660 for (ts = 0; ts < 8; ts++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
661 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
662 l1ps.ILmin_others[ts] = (UWORD8) l1_config.params.il_min;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
663 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
664 } // End if "burst 0"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
665
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
666 // IL processing for each received burst
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
667 // **************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
668
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
669 // For each timeslot on which a burst was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
670 for(ts = 0; ts < 8; ts ++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
671 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
672 if(pdsp_db_r_ptr->d_task_d_gprs & bit_mask)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
673 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
674 WORD16 current_IL, current_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
675 UWORD8 pm;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
676
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
677 // IL = fct(pm, last_known_agc, lna_value, g_magic)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
678 //-------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
679
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
680 pm = (UWORD8) ((pdsp_db_r_ptr->a_burst_pm_gprs[ts] & 0xffff) >> 5);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
681
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
682 // current_IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
683 if (0==pm) // Check and filter illegal pm value by using last valid IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
684 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
685 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
686 current_IL = l1a_l1s_com.last_input_level[serving_index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
687 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
688 current_IL = l1a_l1s_com.Scell_info.transfer_meas.input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
689 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
690 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
691
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
692 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
693 // DRP correction
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
694 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
695 arfcn = Convert_l1_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
696 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
697 arfcn=radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
698 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
699
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
700 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
701 #if (CODE_VERSION != SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
702
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
703 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
704 l1a_l1s_com.Scell_used_IL_dd.input_level,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
705 radio_freq,if_threshold);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
706 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
707 delta_drp_gain = drp_gain_correction(arfcn, lna_off, used_agc); // F7.1 format
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
708 if(if_ctl == IF_100KHZ_DSP){
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
709 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
710 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
711 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
712 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
713 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
714
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
715 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
716 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
717
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
718 current_IL = -(pm - (used_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
719 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
720
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
721 // Calibrated IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
722 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
723
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
724 // Protect IL stores against overflow
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
725 if(current_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
726 current_calibrated_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
727 if (current_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
728 current_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
729
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
730 calibrated_IL[ts] = (UWORD8)(current_calibrated_IL);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
731
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
732 // Keep ILmax
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
733 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
734 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
735 // Beacon frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
736 l1ps.ILmin_beacon = min((UWORD8) current_IL, l1ps.ILmin_beacon);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
737 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
738 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
739 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
740 // Daughter frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
741 l1ps.ILmin_others[ts] = min((UWORD8) current_IL,l1ps.ILmin_others[ts]);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
742 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
743
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
744 // Input Level selection among ILmax found on each timeslot during the block (when burst = 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
745 // *******************************************************************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
746
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
747 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
748 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
749 // If CRC good
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
750 if (!(pdsp_ndb_ptr->a_dd_gprs[rx_no][0] & 0x0100))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
751 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
752 // Find the min found IL for blocks that were correctly received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
753 ILmin_correct = min(l1ps.ILmin_others[ts],ILmin_correct);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
754 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
755 // If CRC bad
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
756 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
757 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
758 // Find the min found IL for blocks that were not correctly received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
759 ILmin_not_correct = min(l1ps.ILmin_others[ts],ILmin_not_correct);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
760 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
761 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
762
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
763 // Next downlink block
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
764 rx_no ++;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
765
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
766 } // End if "timeslot used for downlink PDCH"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
767
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
768 // Next timeslot
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
769 bit_mask >>= 1;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
770 } // End for "each timeslot...."
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
771
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
772
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
773 // IL selection for the next block if burst = 3
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
774 // **********************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
775
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
776 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
777 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
778 WORD16 new_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
779
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
780 // Beacon frequency input level updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
781 //--------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
782
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
783 // If a PDCH has been received on the beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
784 if (l1ps.ILmin_beacon != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
785 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
786 UWORD8 i, new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
787
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
788 // FIFO management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
789 for (i=3;i>0;i--)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
790 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-1];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
791 l1a_l1s_com.Scell_info.buff_beacon[0] = l1ps.ILmin_beacon;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
792
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
793 // Find min IL in FIFO
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
794 new_IL = l1ctl_find_max(l1a_l1s_com.Scell_info.buff_beacon, 4);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
795
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
796 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
797
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
798 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
799 new_calibrated_IL = (WORD16) (new_IL - l1ctl_encode_delta1(l1a_l1s_com.Scell_info.radio_freq) - l1ctl_encode_delta2(l1a_l1s_com.Scell_info.radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
800
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
801 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
802
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
803 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
804 &(l1a_l1s_com.last_input_level[serving_index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
805 l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
806
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
807 l1a_l1s_com.last_input_level[serving_index].input_level = new_IL ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
808
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
809 } // End of "beacon frequency input level updating"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
810
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
811 // Daughter frequencies input level updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
812 //------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
813
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
814 // If at least one block was correctly received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
815 // (Note: ILs truncated to 240 so 255 isn't valid)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
816 if (ILmin_correct != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
817 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
818 // Select the min input level found on correctly received blocks
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
819 l1a_l1s_com.Scell_info.transfer_meas.input_level = ILmin_correct;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
820 l1ps.fn_select = l1s.actual_time.fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
821
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
822 // Algorithm switch to "TRACK" phase if it was in "SEARCH" phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
823 l1ps.phase = TRACK;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
824 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
825
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
826 // No block was correctly received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
827 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
828 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
829 UWORD8 input_level_ref = l1a_l1s_com.Scell_info.transfer_meas.input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
830 // SEARCH phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
831 if (l1ps.phase == SEARCH)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
832 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
833 // If measured level superior to currently tracket level, switch to TRACK mode
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
834 if (input_level_ref > ILmin_not_correct)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
835 l1ps.phase = TRACK;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
836
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
837 // Select the min input level found on badly received blocks
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
838 l1a_l1s_com.Scell_info.transfer_meas.input_level = ILmin_not_correct;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
839 l1ps.fn_select = l1s.actual_time.fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
840 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
841
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
842 // TRACK phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
843 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
844 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
845 // If the IL found on incorrect block is lower than current wanted IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
846 if (ILmin_not_correct < input_level_ref)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
847 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
848 // Select the new IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
849 l1a_l1s_com.Scell_info.transfer_meas.input_level = ILmin_not_correct;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
850 l1ps.fn_select = l1s.actual_time.fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
851 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
852
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
853 // If the IL found on incorrect block is higher than current wanted IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
854 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
855 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
856 UWORD32 delta_fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
857
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
858 // delta_fn processing for IL selection forgetting factor
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
859 delta_fn = l1s.actual_time.fn - l1ps.fn_select;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
860
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
861 // MAX_FN modulo management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
862 if (l1s.actual_time.fn < l1ps.fn_select)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
863 delta_fn += MAX_FN;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
864
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
865 // If the last selected IL is more recent than 72 frames
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
866 //
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
867 // |....|R...............................C|....|
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
868 // ^ ^
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
869 // fn_selected IL reset to -120
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
870 // <-------------------------------------->
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
871 // 312
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
872 // 306 = 312 - 4 (block_size) - 1 (Read phase fn delay) - 1 (Control phase fn advance)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
873 if (delta_fn > 306)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
874 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
875 WORD16 input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
876
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
877 // IL initialized to "beacon level - Pb"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
878 input_level = (WORD16) (l1a_l1s_com.last_input_level[serving_index].input_level + l1a_l1s_com.Scell_info.pb);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
879
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
880
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
881 if (input_level>INDEX_MAX) input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
882 l1a_l1s_com.Scell_info.transfer_meas.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
883
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
884 l1ps.fn_select = l1s.actual_time.fn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
885 // Returns to "SEARCH" phase
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
886 l1ps.phase = SEARCH;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
887 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
888 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
889 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
890 WORD16 input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
891
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
892 input_level = l1a_l1s_com.Scell_info.transfer_meas.input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
893
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
894 if (input_level>INDEX_MAX) input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
895
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
896 l1a_l1s_com.Scell_info.transfer_meas.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
897 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
898 } // End if the IL found on incorrect block is higher than current wanted IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
899 } // End of "track phase"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
900 } // End if no block correctly received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
901
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
902 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
903 new_calibrated_IL = (WORD16) (l1a_l1s_com.Scell_info.transfer_meas.input_level - l1ctl_encode_delta1(l1ps.read_param.radio_freq_for_lna));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
904 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
905
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
906 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1), &(l1a_l1s_com.Scell_info.transfer_meas.lna_off), l1ps.read_param.radio_freq_for_lna);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
907 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
908
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
909 } // End of "l1pctl_npc_agc_read"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
910
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
911 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
912 /* l1pctl_dpcma_agc_read() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
913 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
914 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
915 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
916 /* AGC algorithm in packet transfer used when the BTS */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
917 /* use DOWNLINK POWER CONTROL mode A. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
918 /* This function is used during the read phase of PDTCH: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
919 /* 1- to determine the IL value for each timeslot in each*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
920 /* TDMA */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
921 /* 2- to find the IL value to use for the next PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
922 /* block */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
923 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
924 /* Algorithm */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
925 /* --------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
926 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
927 /* IL(i) = fct(used AGC, pm) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
928 /* if (beacon) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
929 /* ILmax_beacon = max(ILmax_beacon, IL(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
930 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
931 /* ILmax_others(i) = max(IL(i), ILmax_others(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
932 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
933 /* If (burst_nb == 3) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
934 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
935 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
936 /* if (CRC good) and */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
937 /* ((PR_MODE A) or (PR_MODE B and TFI good)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
938 /* ILmax = max(ILmax, ILmax_others(i) + P0 + PR(i))*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
939 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
940 /* ILmax=max(ILmax, ILmax_beacon) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
941 /* FIFO[beacon] updated with ILmax */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
942 /* last_input_level[serving beacon] = max(FIFO[beacon])*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
943 /* transfer_meas = max(FIFO[beacon]) - P0 - 5 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
944 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
945 /* Reset ILmax_others[8] and ILmax_beacon */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
946 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
947 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
948 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
949 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
950 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
951 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
952 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
953 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
954 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
955 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
956 /* Parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
957 /* ---------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
958 /* "calibrated_IL[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
959 /* contains the IL found on timeslots */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
960 /* used for PDCH/D. These ILs can be used to process */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
961 /* RXLEV values. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
962 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
963 /* "*pdsp_db_r_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
964 /* Pointer on the DSP DB Read page, used to extract */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
965 /* pm values, burst number and timeslot allocated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
966 /* for downlink PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
967 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
968 /* "*pdsp_ndb_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
969 /* Pointer on the DSP NDB page, used to extract the */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
970 /* CRC value for each decoded burst */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
971 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
972 /* Global parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
973 /* ----------------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
974 /* "l1a_l1s_com.Scell_info.transfer_meas.input_level" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
975 /* "l1a_l1s_com.Scell_info.transfer_meas.lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
976 /* Used to store the ILselected and the associated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
977 /* lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
978 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
979 /* "l1a_l1s_com.last_input_level[freq. index] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
980 /* .input_level */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
981 /* .lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
982 /* Used to store the beacon input level and */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
983 /* the associated lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
984 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
985 /* "l1ps.transfer_beacon_buf[4]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
986 /* FIFO[beacon] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
987 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
988 /* "l1ps.ILmin_beacon" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
989 /* "l1ps.ILmin_others[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
990 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
991 void l1pctl_dpcma_agc_read(UWORD8 calibrated_IL[8], T_DB_DSP_TO_MCU_GPRS *pdsp_db_r_ptr,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
992 T_NDB_MCU_DSP_GPRS *pdsp_ndb_ptr, UWORD8 pr_table[8])
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
993 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
994 UWORD8 ts = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
995 UWORD8 rx_no = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
996 UWORD8 bit_mask = 0x80;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
997 UWORD8 IL_norm_min = 255;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
998 WORD8 delta1_freq, delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
999 WORD16 delta_drp_gain=0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1000 UWORD16 radio_freq, lna_value;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1001 WORD16 used_agc;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1002 WORD32 serving_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1003 UWORD16 arfcn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1004 UWORD8 lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1005 UWORD16 dco_algo_ctl_pw_temp = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1006 UWORD8 if_ctl = 0;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1007 #if (RF_FAM == 61) && (CODE_VERSION != SIMULATION)
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1008 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GPRS;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1009 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1010
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1011 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1012 serving_index = l1a_l1s_com.Scell_info.radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1013
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1014 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1015 serving_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1016 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1017
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1018
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1019 // Control phase parameters: same AGC, radio_freq, lna_off used for all PDTCH
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1020 // ***************************************************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1021
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1022 // Get radio_freq on which the downlink block was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1023 radio_freq = l1a_l1s_com.dedic_set.radio_freq_dd;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1024
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1025 // Compute calibration factors
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1026 delta1_freq = l1ctl_encode_delta1(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1027 delta2_freq = l1ctl_encode_delta2(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1028
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1029 // Last known AGC (format F7.1)
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1030 used_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1031
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1032 // LNA attenuation
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1033 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1034
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1035 // Burst 0: Reset ILmin_beacon and ILmin_others
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1036 if(pdsp_db_r_ptr->d_burst_nb_gprs == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1037 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1038 l1ps.ILmin_beacon = 255; // Not valid
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1039
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1040 for (ts = 0; ts < 8; ts++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1041 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1042 l1ps.ILmin_others[ts] = 255; // Not valid
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1043 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1044 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1045
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1046 // IL processing for each received burst
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1047 // **************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1048
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1049 // DRP correction
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1050 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1051 arfcn = Convert_l1_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1052 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1053 arfcn=radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1054 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1055
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1056 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1057 #if (CODE_VERSION != SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1058
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1059 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1060 l1a_l1s_com.Scell_used_IL_dd.input_level,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1061 radio_freq, if_threshold);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1062 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1063 delta_drp_gain = drp_gain_correction(arfcn, lna_off, used_agc); // F7.1 format
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1064
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1065 if(if_ctl == IF_100KHZ_DSP){
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1066 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1067 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1068 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1069 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1070 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1071
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1072 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1073 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1074
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1075 // For each timeslot on which a burst was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1076 for(ts = 0; ts < 8; ts ++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1077 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1078 if(pdsp_db_r_ptr->d_task_d_gprs & bit_mask)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1079 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1080 WORD16 current_IL, current_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1081 UWORD8 pm;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1082
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1083 // IL = fct(pm, last_known_agc, lna_value, g_magic)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1084 //-------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1085
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1086 pm = (UWORD8) ((pdsp_db_r_ptr->a_burst_pm_gprs[ts] & 0xffff) >> 5);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1087
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1088 // current_IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1089 if (0==pm) // Check and filter illegal pm value by using last valid IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1090 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1091 current_IL = l1a_l1s_com.last_input_level[serving_index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1092
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1093 if (radio_freq != l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1094 current_IL += (l1ps.read_param.dl_pwr_ctl.p0 + 10);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1095 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1096 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1097 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1098 current_IL = -(pm - (used_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1099 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1100
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1101 // Calibrated IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1102 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1103
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1104 // Protect IL stores against overflow
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1105 if(current_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1106 current_calibrated_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1107 if (current_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1108 current_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1109
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1110 calibrated_IL[ts] = (UWORD8)(current_calibrated_IL);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1111
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1112 // Keep the minimum IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1113 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1114 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1115 // Beacon frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1116 l1ps.ILmin_beacon = min((UWORD8) current_IL,l1ps.ILmin_beacon);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1117 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1118 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1119 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1120 // Daughter frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1121 l1ps.ILmin_others[ts] = min((UWORD8) current_IL, l1ps.ILmin_others[ts]);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1122 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1123
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1124 // Input Level selection among ILmax found on each timeslot during the block (when burst = 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1125 //-------------------------------------------------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1126
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1127 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1128 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1129 // If CRC good
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1130 if (!(pdsp_ndb_ptr->a_dd_gprs[rx_no][0] & 0x0100))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1131 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1132 // If ((PR_MODE A and TFI good) or (PR_MODE B)) AND PR != 0 [Not usable])
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1133 if (((l1ps.read_param.dl_pwr_ctl.pr_mode != 0) || (!(pr_table[ts] & 0x80)))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1134 && ((pr_table[ts] & 0x1f) != 0))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1135 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1136 if (l1ps.ILmin_others[ts] != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1137 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1138 UWORD8 IL_norm;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1139
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1140 // IL normalization to beacon (ILnorm = ILmax_others(ts) - P0 - PR)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1141 IL_norm = l1ps.ILmin_others[ts] - l1ps.read_param.dl_pwr_ctl.p0 - ((pr_table[ts] & 0x1f) << 1);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1142
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1143 // Update IL_min with the minimum found IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1144 IL_norm_min = min(IL_norm, IL_norm_min);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1145 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1146 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1147 } // End if "CRC good"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1148
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1149 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1150
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1151 // Next downlink block
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1152 rx_no ++;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1153
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1154 } // End if "timeslot used for downlink PDCH"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1155
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1156 // Next timeslot
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1157 bit_mask >>= 1;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1158
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1159 } // End for "each timeslot...."
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1160
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1161
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1162 // IL selection for the next block if burst = 3
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1163 // **********************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1164
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1165 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1166 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1167 UWORD8 i, new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1168 UWORD16 input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1169 WORD16 new_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1170
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1171 // Select the minimum IL between minimum IL found on daughter frequencies (normalized to beacon)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1172 // and minimum IL found on the beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1173 IL_norm_min = min(IL_norm_min, l1ps.ILmin_beacon);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1174
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1175 // If a valid IL has been found
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1176 if (IL_norm_min != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1177 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1178 // FIFO management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1179 for (i=3;i>0;i--)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1180 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-1];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1181
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1182 l1a_l1s_com.Scell_info.buff_beacon[0] = IL_norm_min;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1183
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1184 // last_input_level[serving beacon] updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1185 //------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1186
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1187 // Find min IL in FIFO
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1188 new_IL = l1ctl_find_max(l1a_l1s_com.Scell_info.buff_beacon,4);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1189
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1190 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1191
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1192 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1193 new_calibrated_IL = (WORD16) (new_IL - l1ctl_encode_delta1(l1a_l1s_com.Scell_info.radio_freq) - l1ctl_encode_delta2(l1a_l1s_com.Scell_info.radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1194 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1195
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1196 l1ctl_encode_lna((UWORD8)(new_calibrated_IL >> 1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1197 &(l1a_l1s_com.last_input_level[serving_index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1198 l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1199
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1200 l1a_l1s_com.last_input_level[serving_index].input_level = new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1201 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1202
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1203 // transfer_meas updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1204 //-----------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1205
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1206 // IL = (min IL in FIFO) + P0 + 10 (PR = 5 format 7.1)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1207 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1208 input_level = l1a_l1s_com.last_input_level[serving_index].input_level + l1ps.read_param.dl_pwr_ctl.p0 + 10;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1209
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1210 // IL_2_AGC_xx array size
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1211 if (input_level>INDEX_MAX) input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1212
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1213 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1214 new_calibrated_IL = (WORD16) (input_level - l1ctl_encode_delta1(l1ps.read_param.radio_freq_for_lna));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1215
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1216 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1217
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1218 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1), &(l1a_l1s_com.Scell_info.transfer_meas.lna_off), l1ps.read_param.radio_freq_for_lna);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1219
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1220 l1a_l1s_com.Scell_info.transfer_meas.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1221 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1222
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1223 } // End of "l1pctl_dpcma_agc_read"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1224
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1225 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1226 /* l1pctl_dpcmb_agc_read() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1227 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1228 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1229 /* =========== */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1230 /* AGC algorithm in packet transfer used when the BTS */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1231 /* use DOWNLINK POWER CONTROL mode B. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1232 /* This function is used during the read phase of PDTCH: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1233 /* 1- to determine the IL value for each timeslot in each*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1234 /* TDMA */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1235 /* 2- to find the IL value to use for the next PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1236 /* block */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1237 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1238 /* Algorithm */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1239 /* --------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1240 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1241 /* IL(i) = fct(used AGC, pm) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1242 /* if (beacon) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1243 /* ILmax_beacon = max(ILmax_beacon, IL(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1244 /* else */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1245 /* ILmax_others(i) = max(IL(i), ILmax_others(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1246 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1247 /* If (burst_nb == 3) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1248 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1249 /* For each timeslot i used for PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1250 /* if (CRC good) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1251 /* if (TFI good) last_PR_good = PR(i) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1252 /* if ((PR_MODE A) or (PR_MODE B and TFI good)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1253 /* ILmax = max(ILmax, ILmax_others(i) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1254 /* + P0 + PR(i)) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1255 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1256 /* ILmax=max(ILmax, ILmax_beacon) */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1257 /* FIFO[beacon] updated with ILmax */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1258 /* last_input_level[serving beacon] = max(FIFO[beacon])*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1259 /* transfer_meas = max(FIFO[beacon]) - last_PR_good */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1260 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1261 /* Reset ILmax_others[8] and ILmax_beacon */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1262 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1263 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1264 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1265 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1266 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1267 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1268 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1269 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1270 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1271 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1272 /* Parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1273 /* ---------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1274 /* "calibrated_IL[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1275 /* contains the IL found on timeslots */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1276 /* used for PDCH/D. These ILs can be used to process */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1277 /* RXLEV values. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1278 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1279 /* "*pdsp_db_r_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1280 /* Pointer on the DSP DB Read page, used to extract */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1281 /* pm values, burst number and timeslot allocated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1282 /* for downlink PDCH */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1283 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1284 /* "*pdsp_ndb_ptr" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1285 /* Pointer on the DSP NDB page, used to extract the */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1286 /* CRC value for each decoded burst */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1287 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1288 /* Global parameters */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1289 /* ----------------- */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1290 /* "l1a_l1s_com.Scell_info.transfer_meas.input_level" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1291 /* "l1a_l1s_com.Scell_info.transfer_meas.lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1292 /* Used to store the ILselected and the associated */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1293 /* lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1294 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1295 /* "l1a_l1s_com.last_input_level[freq. index] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1296 /* .input_level */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1297 /* .lna_off" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1298 /* Used to store the beacon input level and */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1299 /* the associated lna_off value. */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1300 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1301 /* "l1ps.transfer_beacon_buf[4]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1302 /* FIFO[beacon] */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1303 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1304 /* "l1ps.ILmin_beacon" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1305 /* "l1ps.ILmin_others[8]" */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1306 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1307 void l1pctl_dpcmb_agc_read(UWORD8 calibrated_IL[8], T_DB_DSP_TO_MCU_GPRS *pdsp_db_r_ptr,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1308 T_NDB_MCU_DSP_GPRS *pdsp_ndb_ptr, UWORD8 pr_table[8])
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1309 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1310 UWORD8 ts = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1311 UWORD8 rx_no = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1312 UWORD8 bit_mask = 0x80;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1313 UWORD8 IL_norm_min = 255;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1314 WORD8 delta1_freq, delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1315 WORD16 delta_drp_gain=0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1316 UWORD16 radio_freq, lna_value;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1317 WORD16 used_agc;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1318 WORD32 serving_index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1319 UWORD16 arfcn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1320 UWORD8 lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1321 UWORD16 dco_algo_ctl_pw_temp = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1322 UWORD8 if_ctl = 0;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1323 #if (RF_FAM == 61) && (CODE_VERSION != SIMULATION)
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1324 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GPRS;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1325 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1326
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1327 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1328 serving_index = l1a_l1s_com.Scell_info.radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1329 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1330 serving_index = l1_multiband_radio_freq_convert_into_operative_radio_freq(l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1331 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1332
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1333
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1334 // Control phase parameters: same AGC, radio_freq, lna_off used for all PDTCH
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1335 // ***************************************************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1336
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1337 // Get radio_freq on which the downlink block was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1338 radio_freq = l1a_l1s_com.dedic_set.radio_freq_dd;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1339
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1340 // Compute calibration factors
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1341 delta1_freq = l1ctl_encode_delta1(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1342 delta2_freq = l1ctl_encode_delta2(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1343
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1344 // Last known AGC (format F7.1)
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1345 used_agc = (Cust_get_agc_from_IL(radio_freq, l1a_l1s_com.Scell_used_IL_dd.input_level >> 1, MAX_ID)) << 1;
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1346
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1347 // LNA attenuation
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1348 lna_value = l1a_l1s_com.Scell_used_IL_dd.lna_off * l1ctl_get_lna_att(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1349
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1350 // Burst 0: Reset ILmin_beacon and ILmin_others
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1351 if(pdsp_db_r_ptr->d_burst_nb_gprs == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1352 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1353 l1ps.ILmin_beacon = 255; // Not valid
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1354
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1355 for (ts = 0; ts < 8; ts++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1356 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1357 l1ps.ILmin_others[ts] = 255; // Not valid
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1358 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1359 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1360
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1361 // IL processing for each received burst
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1362 // **************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1363
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1364 // For each timeslot on which a burst was received
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1365 for(ts = 0; ts < 8; ts ++)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1366 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1367 if(pdsp_db_r_ptr->d_task_d_gprs & bit_mask)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1368 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1369 WORD16 current_IL, current_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1370 UWORD8 pm;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1371
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1372 // IL = fct(pm, last_known_agc, lna_value, g_magic)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1373 //-------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1374
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1375 pm = (UWORD8) ((pdsp_db_r_ptr->a_burst_pm_gprs[ts] & 0xffff) >> 5);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1376
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1377 // current_IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1378 if (0==pm) // Check and filter illegal pm value by using last valid IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1379 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1380 current_IL = l1a_l1s_com.last_input_level[serving_index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1381
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1382 if (radio_freq != l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1383 current_IL += (l1ps.last_PR_good);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1384 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1385 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1386 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1387 // DRP correction
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1388 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1389 arfcn = Convert_l1_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1390 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1391 arfcn=radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1392 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1393
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1394 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1395 #if (CODE_VERSION != SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1396
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1397
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1398 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1399 l1a_l1s_com.Scell_used_IL_dd.input_level,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1400 radio_freq, if_threshold);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1401 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1402 delta_drp_gain = drp_gain_correction(arfcn, lna_off, used_agc); // F7.1 format
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1403
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1404 if(if_ctl == IF_100KHZ_DSP){
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1405 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1406 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1407 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1408 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1409 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1410
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1411
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1412 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1413 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1414
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1415 current_IL = -(pm - ( used_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1416 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1417
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1418 // Calibrated IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1419 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1420
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1421 // Protect IL stores against overflow
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1422 if(current_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1423 current_calibrated_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1424 if (current_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1425 current_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1426
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1427 calibrated_IL[ts] = (UWORD8)(current_calibrated_IL);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1428
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1429 // Keep the minimum IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1430 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1431 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1432 // Beacon frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1433 l1ps.ILmin_beacon = min((UWORD8) current_IL,l1ps.ILmin_beacon);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1434 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1435 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1436 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1437 // Daughter frequency
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1438 l1ps.ILmin_others[ts] = min((UWORD8) current_IL, l1ps.ILmin_others[ts]);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1439 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1440
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1441 // Input Level selection among ILmax found on each timeslot during the block (when burst = 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1442 //-------------------------------------------------------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1443
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1444 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1445 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1446 // If CRC good
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1447 if (!(pdsp_ndb_ptr->a_dd_gprs[rx_no][0] & 0x0100))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1448 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1449 // If ((PR_MODE A and TFI good) or (PR_MODE B))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1450 if ((l1ps.read_param.dl_pwr_ctl.pr_mode != 0) || (!(pr_table[ts] & 0x80)))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1451 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1452
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1453 // If TFI good
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1454 if (!(pr_table[ts] & 0x80))
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1455 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1456 // Memorize decoded PR
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1457 l1ps.last_PR_good = ((pr_table[ts] & 0x1f) << 1);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1458 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1459
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1460 if (l1ps.ILmin_others[ts] != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1461 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1462 UWORD8 IL_norm;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1463
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1464 // IL normalization to beacon (ILnorm = ILmax_others(ts) - PR)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1465 IL_norm = l1ps.ILmin_others[ts] - ((pr_table[ts] & 0x1f) << 1);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1466
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1467 // Update IL_min with the minimum found IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1468 IL_norm_min = min(IL_norm, IL_norm_min);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1469 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1470 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1471 } // End if "CRC good"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1472
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1473 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1474
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1475 // Next downlink block
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1476 rx_no ++;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1477
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1478 } // End if "timeslot used for downlink PDCH"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1479
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1480 // Next timeslot
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1481 bit_mask >>= 1;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1482
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1483 } // End for "each timeslot...."
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1484
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1485
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1486 // IL selection for the next block if burst = 3
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1487 // **********************************************
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1488
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1489 if(pdsp_db_r_ptr->d_burst_nb_gprs == 3)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1490 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1491 UWORD8 i, new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1492 UWORD16 input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1493 WORD16 new_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1494
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1495 // Select the minimum IL between minimum IL found on daughter frequencies (normalized to beacon)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1496 // and minimum IL found on the beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1497 IL_norm_min = min(IL_norm_min, l1ps.ILmin_beacon);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1498
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1499 // If a valid IL has been found
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1500 if (IL_norm_min != 255)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1501 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1502 // FIFO management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1503 for (i=3;i>0;i--)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1504 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-1];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1505
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1506 l1a_l1s_com.Scell_info.buff_beacon[0] = IL_norm_min;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1507
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1508 // last_input_level[serving beacon] updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1509 //------------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1510
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1511 // Find min IL in FIFO
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1512 new_IL = l1ctl_find_max(l1a_l1s_com.Scell_info.buff_beacon,4);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1513
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1514 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1515
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1516 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1517 new_calibrated_IL = (WORD16) (new_IL - l1ctl_encode_delta1(l1a_l1s_com.Scell_info.radio_freq) - l1ctl_encode_delta2(l1a_l1s_com.Scell_info.radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1518
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1519 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1520
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1521 l1ctl_encode_lna((UWORD8)(new_calibrated_IL >> 1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1522 &(l1a_l1s_com.last_input_level[serving_index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1523 l1a_l1s_com.Scell_info.radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1524
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1525 l1a_l1s_com.last_input_level[serving_index].input_level = new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1526 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1527
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1528 // transfer_meas updating
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1529 //-----------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1530
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1531 // IL = (min IL in FIFO) + PR (Middle of the range specified by the last decoded PR with CRC and TFI good)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1532 // Input levels are always stored with lna_on
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1533 input_level = l1a_l1s_com.last_input_level[serving_index].input_level + l1ps.last_PR_good;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1534
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1535 // IL_2_AGC_xx array size
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1536 if (input_level>INDEX_MAX) input_level = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1537
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1538 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1539 new_calibrated_IL = (WORD16) (input_level - l1ctl_encode_delta1(l1ps.read_param.radio_freq_for_lna));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1540
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1541 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1542
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1543 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1), &(l1a_l1s_com.Scell_info.transfer_meas.lna_off), l1ps.read_param.radio_freq_for_lna);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1544
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1545 l1a_l1s_com.Scell_info.transfer_meas.input_level = (UWORD8)input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1546
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1547 } // End if "burst = 3"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1548
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1549 } // End of "l1pctl_dpcmb_agc_read"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1550
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1551 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1552 /* l1pctl_pgc() */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1553 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1554 /* Description : */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1555 /* ============= */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1556 /* This function is used in packet transfer mode for the*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1557 /* Read phase of power measurements. It permits to: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1558 /* - Process the IL value in function of the Pm and AGC */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1559 /* used */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1560 /* - Update the FIFO[beacon] used in packet transfer AGC*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1561 /* algorithms */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1562 /* - Update last_input_level */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1563 /* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1564 /* WARNING: in the layer 1 code, input levels IL(l1) use */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1565 /* format 7.1: */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1566 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1567 /* * IL(l1) = - 2 x IL * */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1568 /* ********************* */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1569 /* -> Reversed sign, reversed test conditions */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1570 /* -> max replaced by min */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1571 /* ex: if IL -120 dBm, IL(l1) = 240 */
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1572 /*-------------------------------------------------------*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1573 UWORD8 l1pctl_pgc(UWORD8 pm, UWORD8 last_known_il, UWORD8 lna_off, UWORD16 radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1574 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1575 UWORD8 i, new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1576 WORD8 delta1_freq, delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1577 WORD16 delta_drp_gain=0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1578 UWORD16 lna_value;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1579 WORD16 used_agc, current_IL, current_calibrated_IL, new_calibrated_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1580 WORD32 index;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1581 UWORD16 arfcn;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1582 UWORD16 dco_algo_ctl_pw_temp = 0;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1583 UWORD8 if_ctl = 0;
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1584 #if (RF_FAM == 61) && (CODE_VERSION != SIMULATION)
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1585 UWORD8 if_threshold = C_IF_ZERO_LOW_THRESHOLD_GPRS;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1586 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1587
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1588 // Calibration factors
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1589 delta1_freq = l1ctl_encode_delta1(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1590 delta2_freq = l1ctl_encode_delta2(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1591
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1592 // initialize index
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1593 #if(L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1594 index = radio_freq - l1_config.std.radio_freq_index_offset;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1595
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1596 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1597 index = l1_multiband_radio_freq_convert_into_operative_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1598 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1599
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1600
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1601 // LNA attenuation
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1602 lna_value = lna_off * l1ctl_get_lna_att(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1603
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1604 // Used AGC in the control phase (format F7.1)
310
cd2507a8ec57 l1p_ctl.c: passes compilation
Mychaela Falconia <falcon@freecalypso.org>
parents: 309
diff changeset
1605 used_agc = (Cust_get_agc_from_IL(radio_freq, last_known_il >> 1, PWR_ID)) << 1;
309
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1606
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1607
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1608 // DRP correction
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1609 #if (L1_FF_MULTIBAND == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1610 arfcn = Convert_l1_radio_freq(radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1611 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1612 arfcn=radio_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1613 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1614
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1615 #if(RF_FAM == 61)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1616 #if (CODE_VERSION != SIMULATION)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1617
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1618
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1619 #if (PWMEAS_IF_MODE_FORCE == 0)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1620 cust_get_if_dco_ctl_algo(&dco_algo_ctl_pw_temp, &if_ctl, (UWORD8) L1_IL_VALID ,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1621 last_known_il,
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1622 radio_freq, if_threshold);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1623 #else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1624 if_ctl = IF_120KHZ_DSP;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1625 dco_algo_ctl_pw_temp = DCO_IF_0KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1626 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1627
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1628 lna_off = l1a_l1s_com.Scell_used_IL_dd.lna_off;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1629 delta_drp_gain = drp_gain_correction(arfcn, lna_off, used_agc); // F7.1 format
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1630
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1631 if(if_ctl == IF_100KHZ_DSP){
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1632 delta_drp_gain += SCF_ATTENUATION_LIF_100KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1633 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1634 else{ /* i.e. if_ctl = IF_120KHZ_DSP*/
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1635 delta_drp_gain += SCF_ATTENUATION_LIF_120KHZ;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1636 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1637
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1638
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1639 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1640 #endif
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1641
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1642 if (0==pm) // Check and filter illegal pm value by using last valid IL
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1643 current_IL = l1a_l1s_com.last_input_level[index].input_level;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1644 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1645 current_IL = -(pm - (used_agc - delta_drp_gain) + lna_value - l1ctl_get_g_magic(radio_freq));
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1646
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1647 // Calibrated IL processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1648 current_calibrated_IL = current_IL - delta1_freq - delta2_freq;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1649
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1650 // Protect IL stores against overflow
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1651 if (current_calibrated_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1652 current_calibrated_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1653 if (current_IL>INDEX_MAX)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1654 current_IL=INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1655
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1656 // if radio freq is the serving beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1657 //------------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1658 if (radio_freq == l1a_l1s_com.Scell_info.radio_freq)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1659 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1660 // FIFO management
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1661 for (i=3;i>0;i--)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1662 l1a_l1s_com.Scell_info.buff_beacon[i] = l1a_l1s_com.Scell_info.buff_beacon[i-1];
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1663 l1a_l1s_com.Scell_info.buff_beacon[0] = (UWORD8) current_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1664
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1665 // Find min IL in FIFO
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1666 new_IL = l1ctl_find_max(l1a_l1s_com.Scell_info.buff_beacon,4);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1667
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1668 // lna_off processing
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1669 new_calibrated_IL = (WORD16) (new_IL - delta1_freq - delta2_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1670 if (new_calibrated_IL>INDEX_MAX) new_calibrated_IL = INDEX_MAX;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1671
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1672 l1ctl_encode_lna((UWORD8)(new_calibrated_IL>>1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1673 &(l1a_l1s_com.last_input_level[index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1674 radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1675
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1676 l1a_l1s_com.last_input_level[index].input_level = new_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1677 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1678
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1679 // if radio freq is a neighbor beacon
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1680 //-----------------------------------
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1681 else
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1682 {
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1683 // Update last_input_level (IL with LNA ON)
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1684 l1ctl_encode_lna((UWORD8)(current_calibrated_IL>>1),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1685 &(l1a_l1s_com.last_input_level[index].lna_off),
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1686 radio_freq);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1687
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1688 l1a_l1s_com.last_input_level[index].input_level = (UWORD8)current_IL;
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1689 }
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1690
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1691 return((UWORD8)current_calibrated_IL);
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1692
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1693 } // End of "l1pctl_pgc"
871cf4253768 l1p_ctl.c: initial import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents: 15
diff changeset
1694 #endif