comparison g23m-gsm/alr/alr_tim.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:75a11d740a02
1 /*
2 +-----------------------------------------------------------------------------
3 | Project :
4 | Modul : J:\g23m-gsm\alr\alr_tim.c
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose :
18 +-----------------------------------------------------------------------------
19 */
20 #ifndef ALR_TIM_C
21 #define ALR_TIM_C
22
23 #include "config.h"
24 #include "fixedconf.h"
25 #include "condat-features.h"
26
27 #define ENTITY_PL
28
29 /*==== INCLUDES ===================================================*/
30 #include <string.h>
31 #include <stdlib.h>
32 #include <ctype.h>
33 #include "typedefs.h"
34 #include "pconst.cdg"
35 #include "mconst.cdg"
36 #include "message.h"
37 #include "ccdapi.h"
38 #include "vsi.h"
39 #include "custom.h"
40 #include "gsm.h"
41 #include "prim.h"
42 #include "cnf_alr.h"
43 #include "mon_alr.h"
44 #include "pei.h"
45 #include "tok.h"
46 #include "pcm.h"
47
48 #ifdef GPRS
49 #include "alr_gprs.h"
50 #endif
51
52 #include "alr.h"
53
54 /*==== PRIVAT =====================================================*/
55 #if defined(TIMER_TRACE)
56 #define TRACE_TIMER(FMT) TRACE_EVENT((FMT))
57 #define TRACE_TIMER_P1(FMT,P1) TRACE_EVENT_P1((FMT),(P1))
58 #define TRACE_TIMER_P2(FMT,P1,P2) TRACE_EVENT_P2((FMT),(P1),(P2))
59 #define TRACE_TIMER_P3(FMT,P1,P2,P3) TRACE_EVENT_P3((FMT),(P1),(P2),(P3))
60 #else
61 #define TRACE_TIMER(FMT)
62 #define TRACE_TIMER_P1(FMT,P1)
63 #define TRACE_TIMER_P2(FMT,P1,P2)
64 #define TRACE_TIMER_P3(FMT,P1,P2,P2)
65 #endif
66
67 /* Implements Measure#32: Row 247, 248, 249, 251, 252, 259 and 260 */
68 static T_S2I_STRING const tim_names[] =
69 {
70 S2I_STRING("TIM_POWERMEAS"),
71 S2I_STRING("TIM_NW_SYNC_GUARD"),
72 #if defined(FF_HOMEZONE)
73 S2I_STRING("TIM_HOMEZONE"),
74 #endif /* FF_HOMEZONE */
75 S2I_STRING("???")
76 };
77
78 /*==== EXPORT =====================================================*/
79
80
81 /*==== FUCTIONS ===================================================*/
82 #if defined(TIMER_TRACE)
83 void trace_timer (USHORT index, long value)
84 {
85 GET_INSTANCE_DATA;
86 switch(value)
87 {
88 /* Implements Measure#32: Row 247, 248, 249, 251 and 252 */
89 default:/* >0: start */
90 TRACE_TIMER_P2 ("T-Start:%s=%lu", S2I_STRING(tim_names[index]), value);
91 break;
92 case 0:/* ==0: stop */
93 TRACE_TIMER_P1 ("T-Stop:%s", S2I_STRING(tim_names[index]));
94 break;
95 case -1:/* -1: expire */
96 TRACE_TIMER_P1 ("T-Expired:%s ", S2I_STRING(tim_names[index]));
97 break;
98 case -2:/* -2: check */
99 if(alr_data->tim_data.running[index])
100 {
101 TRACE_TIMER_P1 ("T-Check:%s active", S2I_STRING(tim_names[index]));
102 }
103 else
104 {
105 TRACE_TIMER_P1 ("T-Check:%s inactive", S2I_STRING(tim_names[index]));
106 }
107 break;
108 case -3:/* -2: set expire function */
109 TRACE_TIMER_P1 ("T-Set:%s expire function", S2I_STRING(tim_names[index]));
110 break;
111 }
112 }
113 #else
114 #define trace_timer(index,value)
115 #endif /* TIMER_TRACE */
116
117 /*
118 +--------------------------------------------------------------------+
119 | PROJECT : GSM-PS (6147) MODULE : RR_TIM |
120 | STATE : code ROUTINE : tim_exec_timeout |
121 +--------------------------------------------------------------------+
122
123 PURPOSE : reset timeout functions and values.
124
125 */
126
127 GLOBAL void tim_init (void)
128 {
129 GET_INSTANCE_DATA;
130 TRACE_FUNCTION ("tim_init()");
131
132 memset (&alr_data->tim_data, 0, sizeof (alr_data->tim_data));
133 alr_data->tim_data.expire[TIM_POWERMEAS] = ma_cs_rxlev_req;
134 alr_data->tim_data.expire[TIM_NW_SYNC_GUARD] = tim_stop_sync_to_nw;
135 #if defined(FF_HOMEZONE)
136 alr_data->tim_data.expire[TIM_HOMEZONE] = cb_tim_homezone;
137 #endif /* FF_HOMEZONE */
138 }
139
140 /*
141 +--------------------------------------------------------------------+
142 | PROJECT : GSM-PS (6147) MODULE : RR_TIM |
143 | STATE : code ROUTINE : tim_exec_timeout |
144 +--------------------------------------------------------------------+
145
146 PURPOSE : execute timeout for the new frame variant.
147
148 */
149
150 GLOBAL void tim_exec_timeout (USHORT index)
151 {
152 GET_INSTANCE_DATA;
153 #if !defined(TIMER_TRACE)
154 TRACE_FUNCTION ("tim_exec_timeout()");
155 #endif /* !TIMER_TRACE */
156
157 if (index < NUM_OF_ALR_TIMERS)
158 {
159 trace_timer (index, -1);
160 alr_data->tim_data.running[index] = 0;
161
162 if (alr_data->tim_data.expire[index])
163 alr_data->tim_data.expire[index] ();
164 }
165 else
166 {
167 SYST_TRACE_P ((SYST, "tim_exec_timeout: index=%u (>=%u)", index, NUM_OF_ALR_TIMERS));
168 TRACE_ASSERT (index < NUM_OF_ALR_TIMERS);
169 }
170 }
171
172 /*
173 +--------------------------------------------------------------------+
174 | PROJECT : GSM-PS (6147) MODULE : RR_TIM |
175 | STATE : code ROUTINE : tim_stop_timer |
176 +--------------------------------------------------------------------+
177
178 PURPOSE : stop timer in the new frame variant.
179
180 */
181
182 GLOBAL void tim_stop_timer (USHORT index)
183 {
184 GET_INSTANCE_DATA;
185 #if !defined(TIMER_TRACE)
186 TRACE_FUNCTION ("tim_stop_timer()");
187 #endif /* !TIMER_TRACE */
188
189 if (index < NUM_OF_ALR_TIMERS)
190 {
191 trace_timer (index, 0);
192 alr_data->tim_data.running[index] = 0;
193
194 /*
195 * stop physical timer.
196 */
197 TIMER_STOP(pl_handle, index);
198 }
199 else
200 {
201 SYST_TRACE_P ((SYST,"tim_stop_timer: index=%u (>=%u)", index, NUM_OF_ALR_TIMERS));
202 TRACE_ASSERT (index < NUM_OF_ALR_TIMERS);
203 }
204 }
205
206 /*
207 +--------------------------------------------------------------------+
208 | PROJECT : GSM-PS (6147) MODULE : RR_TIM |
209 | STATE : code ROUTINE : tim_start_timer |
210 +--------------------------------------------------------------------+
211
212 PURPOSE : start timer in the new frame variant.
213
214 */
215
216 GLOBAL void tim_start_timer (USHORT index, T_TIME value)
217 {
218 GET_INSTANCE_DATA;
219 #if !defined(TIMER_TRACE)
220 TRACE_FUNCTION ("tim_start_timer()");
221 #endif /* !TIMER_TRACE */
222
223 if (index < NUM_OF_ALR_TIMERS)
224 {
225 trace_timer (index, value);
226 alr_data->tim_data.running[index] = 1;
227
228 /*
229 * start physical timer.
230 */
231 TIMER_START(pl_handle, index, value);
232 }
233 else
234 {
235 SYST_TRACE_P ((SYST,"tim_start_timer: index=%u (>=%u)", index, NUM_OF_ALR_TIMERS));
236 TRACE_ASSERT (index < NUM_OF_ALR_TIMERS);
237 }
238 }
239
240 /*
241 +--------------------------------------------------------------------+
242 | PROJECT : GSM-PS (6147) MODULE : RR_TIM |
243 | STATE : code ROUTINE : tim_check_timer |
244 +--------------------------------------------------------------------+
245
246 PURPOSE : check timer in the new frame variant.
247
248 */
249 GLOBAL BOOL tim_check_timer(USHORT index)
250 {
251 GET_INSTANCE_DATA;
252 T_TIME value = 0;
253
254 #if !defined(TIMER_TRACE)
255 TRACE_FUNCTION ("tim_check_timer()");
256 #endif /* !TIMER_TRACE */
257
258 if (index < NUM_OF_ALR_TIMERS)
259 {
260 #if defined(TIMER_TRACE)
261 if (alr_data->tim_data.running[index])
262 {
263 SHORT vsi_ret;
264 vsi_ret = TIMER_STATUS(pl_handle, index, &value);
265 if ((vsi_ret EQ VSI_OK) AND (value NEQ 0))
266 {
267 /* Implements Measure#32: Row 259 */
268 TRACE_TIMER_P2 ("T-Check:%s active (%u left)", S2I_STRING(tim_names[index]), value);
269 }
270 else
271 {
272 /* Implements Measure#32: Row 260 */
273 TRACE_TIMER_P1 ("T-Check:%s inactive", S2I_STRING(tim_names[index]));
274 }
275 }
276 else
277 {
278 /* Implements Measure#32: Row 260 */
279 TRACE_TIMER_P1 ("T-Check:%s inactive", S2I_STRING(tim_names[index]));
280 }
281 #endif /* TIMER_TRACE */
282
283 return alr_data->tim_data.running[index];
284 }
285 else
286 {
287 SYST_TRACE_P ((SYST,"tim_check_timer: index=%u (>=%u)", index, NUM_OF_ALR_TIMERS));
288 TRACE_ASSERT (index < NUM_OF_ALR_TIMERS);
289 return FALSE;
290 }
291 }
292
293 #endif /* ALR_TIM_C */