FreeCalypso > hg > fc-selenite
comparison src/g23m-fad/fad/fad_kerp.c @ 1:d393cd9bb723
src/g23m-*: initial import from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 15 Jul 2018 04:40:46 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:b6a5e36de839 | 1:d393cd9bb723 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-F&D (8411) | |
4 | Modul : FAD_KERP | |
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 : This Modul defines the functions for processing | |
18 | of incomming primitives for the component | |
19 | Fax Adaptation 3.45 of the mobile station | |
20 +----------------------------------------------------------------------------- | |
21 */ | |
22 | |
23 #ifndef FAD_KERP_C | |
24 #define FAD_KERP_C | |
25 #endif | |
26 | |
27 #define ENTITY_FAD | |
28 | |
29 /*==== INCLUDES ===================================================*/ | |
30 | |
31 #include <string.h> | |
32 #include "typedefs.h" | |
33 #include "pconst.cdg" | |
34 #include "vsi.h" | |
35 #include "macdef.h" | |
36 #include "pconst.cdg" | |
37 #include "custom.h" | |
38 #include "gsm.h" | |
39 #include "cnf_fad.h" | |
40 #include "mon_fad.h" | |
41 #include "prim.h" | |
42 #include "pei.h" | |
43 #include "tok.h" | |
44 #include "ccdapi.h" | |
45 #include "fad.h" | |
46 | |
47 #ifdef _TARGET_ | |
48 #include "ra_l1int.h" | |
49 #endif | |
50 | |
51 /*==== CONST =======================================================*/ | |
52 | |
53 /*==== TYPES =======================================================*/ | |
54 | |
55 /*==== VAR EXPORT ==================================================*/ | |
56 | |
57 /*==== VAR LOCAL ===================================================*/ | |
58 | |
59 /*==== FUNCTIONS ===================================================*/ | |
60 | |
61 /* | |
62 +--------------------------------------------------------------------+ | |
63 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
64 | STATE : code ROUTINE : ker_fad_activate_req | | |
65 +--------------------------------------------------------------------+ | |
66 | |
67 PURPOSE : Process primitive FAD_ACTIVATE_REQ received from T30. | |
68 | |
69 */ | |
70 | |
71 GLOBAL void ker_fad_activate_req (T_FAD_ACTIVATE_REQ *fad_activate_req) | |
72 { | |
73 TRACE_EVENT ("ker_fad_activate_req()"); | |
74 PACCESS (fad_activate_req); | |
75 | |
76 /*******************************/ | |
77 /* | |
78 * Initialize Shared Fax/Data memory | |
79 */ | |
80 | |
81 fad_data = &fad_data_base[0]; | |
82 ker_init (); | |
83 snd_init (); | |
84 rcv_init (); | |
85 | |
86 /* | |
87 * reset RBM | |
88 */ | |
89 rbm_reset (); | |
90 | |
91 fad_data_magic_num = FAD_DATA_MAGIC_NUM; /* memory is initialized */ | |
92 | |
93 /*******************************/ | |
94 | |
95 if (GET_STATE (KER) EQ KER_NULL) | |
96 { | |
97 sig_ker_snd_activate_req (fad_activate_req); | |
98 sbm_init (FRAME_SIZE); | |
99 rbm_init (fad_activate_req->frames_per_prim); | |
100 sig_ker_snd_sync_req (FALSE); | |
101 { | |
102 PALLOC (fad_activate_cnf, FAD_ACTIVATE_CNF); | |
103 /* | |
104 * calculate the RX and TX buffersizes and notify it | |
105 * to T30 | |
106 */ | |
107 fad_activate_cnf->buf_size_rx | |
108 = fad_activate_req->frames_per_prim * FRAME_SIZE * RBM_PQ_MAX_PRIM; | |
109 fad_activate_cnf->buf_size_tx | |
110 = fad_activate_req->frames_per_prim * FRAME_SIZE * SBM_MAX_PRIMS; | |
111 PSENDX (T30, fad_activate_cnf); | |
112 } | |
113 SET_STATE (KER, IDLE); | |
114 | |
115 #ifdef _TARGET_ | |
116 { | |
117 T_RA_DATATRANS_REQ RA_datatrans_req; | |
118 l1i_ra_datatrans_req(&RA_datatrans_req); | |
119 } | |
120 #endif | |
121 | |
122 } | |
123 | |
124 PFREE (fad_activate_req); | |
125 } | |
126 | |
127 | |
128 /* | |
129 +----------------------------------------------------------------------+ | |
130 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
131 | STATE : code ROUTINE : ker_fad_deactivate_req | | |
132 +----------------------------------------------------------------------+ | |
133 | |
134 PURPOSE : Process primitive FAD_DEACTIVATE_REQ received from T30. | |
135 | |
136 */ | |
137 | |
138 GLOBAL void ker_fad_deactivate_req (T_FAD_DEACTIVATE_REQ *fad_deactivate_req) | |
139 { | |
140 TRACE_EVENT ("ker_fad_deactivate_req()"); | |
141 | |
142 PACCESS (fad_deactivate_req); | |
143 | |
144 sig_ker_snd_sync_req (FALSE); | |
145 rbm_deinit(TRUE); | |
146 SET_STATE (KER, KER_NULL); | |
147 | |
148 { | |
149 PALLOC (fad_deactivate_cnf, FAD_DEACTIVATE_CNF); | |
150 PSENDX (T30, fad_deactivate_cnf); | |
151 } | |
152 | |
153 PFREE (fad_deactivate_req); | |
154 } | |
155 | |
156 /* | |
157 +--------------------------------------------------------------------+ | |
158 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
159 | STATE : code ROUTINE : ker_fad_modify_req | | |
160 +--------------------------------------------------------------------+ | |
161 | |
162 PURPOSE : Process primitive FAD_MODIFY_REQ received from T30. | |
163 | |
164 */ | |
165 | |
166 GLOBAL void ker_fad_modify_req (T_FAD_MODIFY_REQ *fad_modify_req) | |
167 { | |
168 TRACE_EVENT ("ker_fad_modify_req()"); | |
169 PACCESS (fad_modify_req); | |
170 | |
171 if (GET_STATE (KER) NEQ KER_NULL) | |
172 { | |
173 fad_data->snd.trans_rate = fad_modify_req->trans_rate; | |
174 fad_data->rcv.FlagFound = 0; | |
175 TRACE_EVENT_P1("MODIFY %d bps", fad_data->snd.trans_rate); | |
176 } | |
177 | |
178 PFREE (fad_modify_req); | |
179 } | |
180 | |
181 /* | |
182 +--------------------------------------------------------------------+ | |
183 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
184 | STATE : code ROUTINE : ker_fad_data_req | | |
185 +--------------------------------------------------------------------+ | |
186 | |
187 PURPOSE : Process primitive FAD_DATA_REQ received from T30. | |
188 | |
189 */ | |
190 | |
191 GLOBAL void ker_fad_data_req (T_FAD_DATA_REQ *fad_data_req) | |
192 { | |
193 T_SBM *sbm = &fad_data->sbm; | |
194 USHORT err_cause = 0; | |
195 | |
196 #ifdef _SIMULATION_ | |
197 TRACE_FUNCTION ("ker_fad_data_req()"); | |
198 #endif | |
199 | |
200 PACCESS (fad_data_req); | |
201 | |
202 switch (GET_STATE (KER)) | |
203 { | |
204 case KER_NULL: | |
205 err_cause = ERR_LOCAL_DATA_NULL; | |
206 break; | |
207 | |
208 case IDLE: | |
209 if (fad_data_req->trans_rate EQ R_BCS) | |
210 { | |
211 SET_STATE (KER, BCS_REC); | |
212 sig_ker_snd_preamble_req (fad_data_req); | |
213 } | |
214 else | |
215 { | |
216 if (fad_data_req->trans_rate EQ R_7200) | |
217 { | |
218 sbm->syncCycle = SYNC_CYCLE_7200; | |
219 sbm->framesUntilSync = (SYNC_CYCLE_7200-1); | |
220 } | |
221 else if (fad_data_req->trans_rate EQ R_12000) | |
222 { | |
223 sbm->syncCycle = SYNC_CYCLE_12000; | |
224 sbm->framesUntilSync = (SYNC_CYCLE_12000-1); | |
225 } | |
226 | |
227 SET_STATE (KER, MSG_REC); | |
228 sig_ker_snd_train_req (fad_data_req, TRUE); | |
229 } | |
230 break; | |
231 | |
232 case BCS_REC: | |
233 if (fad_data_req->trans_rate EQ R_BCS) | |
234 sig_ker_snd_bcs_req (fad_data_req); | |
235 else | |
236 err_cause = ERR_LOCAL_MSG_RATE; | |
237 break; | |
238 | |
239 case MSG_REC_TCF: | |
240 err_cause = ERR_LOCAL_DATA_TCF_SND; | |
241 break; | |
242 | |
243 case MSG_REC: | |
244 if (fad_data_req->trans_rate NEQ R_BCS) | |
245 sig_ker_snd_msg_req (fad_data_req); | |
246 else | |
247 err_cause = ERR_LOCAL_BCS_RATE; | |
248 break; | |
249 | |
250 case BCS_TRA: | |
251 if (fad_data_req->trans_rate EQ R_BCS) | |
252 fad_data->snd.fad_data_req = fad_data_req; /* store data, send later */ | |
253 break; | |
254 | |
255 case MSG_TRA_TCF: | |
256 err_cause = ERR_LOCAL_DATA_TCF_RCV; | |
257 break; | |
258 | |
259 case MSG_TRA: | |
260 err_cause = ERR_LOCAL_DATA_MSG; | |
261 break; | |
262 | |
263 default: | |
264 err_cause = ERR_LOCAL_DATA_UNDEF; | |
265 break; | |
266 } | |
267 | |
268 if (err_cause) | |
269 { | |
270 ker_SetError (err_cause); | |
271 sig_ker_snd_sync_req (FALSE); | |
272 SET_STATE (KER, IDLE); | |
273 PFREE (fad_data_req); | |
274 } | |
275 | |
276 } | |
277 | |
278 /* | |
279 +--------------------------------------------------------------------+ | |
280 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
281 | STATE : code ROUTINE : ker_fad_snd_tcf_req | | |
282 +--------------------------------------------------------------------+ | |
283 | |
284 PURPOSE : Process primitive FAD_SND_TCF_REQ received from T30. | |
285 | |
286 */ | |
287 | |
288 GLOBAL void ker_fad_snd_tcf_req (T_FAD_SND_TCF_REQ *fad_snd_tcf_req) | |
289 { | |
290 T_SBM *sbm = &fad_data->sbm; | |
291 | |
292 TRACE_FUNCTION ("ker_fad_snd_tcf_req()"); | |
293 PACCESS (fad_snd_tcf_req); | |
294 | |
295 if (GET_STATE (KER) EQ IDLE) | |
296 { | |
297 SET_STATE (KER, MSG_REC_TCF); | |
298 | |
299 if (fad_snd_tcf_req->trans_rate EQ R_7200) | |
300 { | |
301 sbm->syncCycle = SYNC_CYCLE_7200; | |
302 sbm->framesUntilSync = (SYNC_CYCLE_7200-1); | |
303 } | |
304 else if (fad_snd_tcf_req->trans_rate EQ R_12000) | |
305 { | |
306 sbm->syncCycle = SYNC_CYCLE_12000; | |
307 sbm->framesUntilSync = (SYNC_CYCLE_12000-1); | |
308 } | |
309 | |
310 sig_ker_snd_tcf_req (); | |
311 } | |
312 | |
313 PFREE (fad_snd_tcf_req); | |
314 } | |
315 | |
316 | |
317 /* | |
318 +--------------------------------------------------------------------+ | |
319 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
320 | STATE : code ROUTINE : ker_fad_rcv_tcf_req | | |
321 +--------------------------------------------------------------------+ | |
322 | |
323 PURPOSE : Process primitive FAD_RCV_TCF_REQ received from T30. | |
324 | |
325 */ | |
326 | |
327 GLOBAL void ker_fad_rcv_tcf_req (T_FAD_RCV_TCF_REQ *fad_rcv_tcf_req) | |
328 { | |
329 T_SBM *sbm = &fad_data->sbm; | |
330 | |
331 TRACE_FUNCTION ("ker_fad_rcv_tcf_req()"); | |
332 | |
333 PACCESS (fad_rcv_tcf_req); | |
334 | |
335 if (GET_STATE (KER) EQ IDLE) | |
336 { | |
337 if (fad_rcv_tcf_req->trans_rate EQ R_7200) | |
338 { | |
339 sbm->syncCycle = SYNC_CYCLE_7200; | |
340 sbm->framesUntilSync = (SYNC_CYCLE_7200-1); | |
341 } | |
342 else if (fad_rcv_tcf_req->trans_rate EQ R_12000) | |
343 { | |
344 sbm->syncCycle = SYNC_CYCLE_12000; | |
345 sbm->framesUntilSync = (SYNC_CYCLE_12000-1); | |
346 } | |
347 | |
348 SET_STATE (KER, MSG_TRA_TCF); | |
349 sig_ker_rcv_await_tcf_req (); | |
350 } | |
351 | |
352 PFREE (fad_rcv_tcf_req); | |
353 } | |
354 | |
355 /* | |
356 +--------------------------------------------------------------------+ | |
357 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
358 | STATE : code ROUTINE : ker_fad_ready_req | | |
359 +--------------------------------------------------------------------+ | |
360 | |
361 PURPOSE : Process primitive FAD_READY_REQ received from T30. | |
362 | |
363 */ | |
364 | |
365 GLOBAL void ker_fad_ready_req (T_FAD_READY_REQ *fad_ready_req) | |
366 { | |
367 | |
368 TRACE_FUNCTION ("ker_fad_ready_req()"); | |
369 PACCESS (fad_ready_req); | |
370 | |
371 /* PZ 25.5.99 | |
372 if (GET_STATE (KER) EQ MSG_TRA) | |
373 sig_ker_rcv_ready_req (); | |
374 */ | |
375 sig_ker_rcv_ready_req (); | |
376 | |
377 PFREE (fad_ready_req); | |
378 } | |
379 | |
380 | |
381 /* | |
382 +--------------------------------------------------------------------+ | |
383 | PROJECT : GSM-F&D (8411) MODULE : FAD_KERP | | |
384 | STATE : code ROUTINE : ker_fad_ignore_req | | |
385 +--------------------------------------------------------------------+ | |
386 | |
387 PURPOSE : Process primitive FAD_IGNORE_REQ received from T30. | |
388 | |
389 */ | |
390 | |
391 GLOBAL void ker_fad_ignore_req (T_FAD_IGNORE_REQ *fad_ignore_req) | |
392 { | |
393 TRACE_FUNCTION ("ker_fad_ignore_req()"); | |
394 PACCESS (fad_ignore_req); | |
395 | |
396 if (GET_STATE (KER) EQ MSG_TRA) | |
397 fad_data->ker.forward_data = FALSE; | |
398 | |
399 PFREE (fad_ignore_req); | |
400 } | |
401 | |
402 | |
403 |