comparison src/aci2/aci/aci_bat_mm.c @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-F&D (8411)
4 | Modul : ACI_BAT
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 BAT wrapper modul is ...
18 |
19 +-----------------------------------------------------------------------------
20 */
21
22 #include "aci_all.h" /* includes prim.h, which includes p_bat.h */
23 #include "aci_cmh.h" /* prototypes of sAT_,qAT_,tAT_ */
24 #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */
25
26 #ifdef FF_ATI_BAT
27 #include "typedefs.h"
28 #include "gdd.h"
29 #include "bat.h"
30 #include "aci_bat.h"
31 #endif /* FF_ATI_BAT */
32
33 /*
34 +--------------------------------------------------------------------+
35 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
36 | STATE : code ROUTINE : sBAT_PlusCOPS |
37 +--------------------------------------------------------------------+
38
39 PURPOSE :
40 */
41 #undef min
42 #define min(a,b) ((a) < (b) ? (a) : (b)) /* from gpf\inc\vcms */
43
44 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
45 T_BAT_cmd_send *cmd)
46 {
47 T_ACI_BAT_RSLT ret;
48
49 U8 c_oper = cmd->params.ptr_set_plus_cops->c_oper;
50 CHAR op[MAX_ALPHA_OPER_LEN] = {0};
51
52 TRACE_FUNCTION ("sBAT_PlusCOPS()");
53
54 c_oper = min(c_oper, MAX_ALPHA_OPER_LEN);
55
56 if (cmd->params.ptr_set_plus_cops->v_oper EQ TRUE)
57 memcpy(op, cmd->params.ptr_set_plus_cops->oper, c_oper);
58
59 ret = sAT_PlusCOPS (src_infos_psi->srcId,
60 cmd->params.ptr_set_plus_cops->mode,
61 cmd->params.ptr_set_plus_cops->format, op);
62 return(ret);
63 }
64
65 /*
66 +--------------------------------------------------------------------+
67 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
68 | STATE : code ROUTINE : qBAT_PlusCOPS |
69 +--------------------------------------------------------------------+
70
71 PURPOSE :
72 */
73 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
74 T_BAT_cmd_send *cmd)
75 {
76 T_ACI_BAT_RSLT ret;
77
78 CHAR op[MAX_ALPHA_OPER_LEN] = {0};
79
80 T_ACI_COPS_MOD mode = COPS_MOD_NotPresent;
81 T_ACI_COPS_FRMT format = COPS_FRMT_NotPresent;
82 T_BAT_cmd_response resp;
83 T_BAT_res_que_plus_cops cops;
84
85 TRACE_FUNCTION ("qBAT_PlusCOPS()");
86
87 resp.ctrl_response = BAT_RES_QUE_PLUS_COPS;
88 resp.response.ptr_que_plus_cops = &cops;
89
90 ret = qAT_PlusCOPS(src_infos_psi->srcId, &mode, &format, op);
91
92 cops.mode = mode;
93 cops.format = format;
94 cops.c_oper = strlen(op);
95 cops.v_oper = cops.c_oper ? TRUE : FALSE;
96
97 if (cops.v_oper)
98 {
99 memcpy(cops.oper, op, cops.c_oper);
100 }
101 aci_bat_send(src_infos_psi, &resp);
102 return(ret);
103 }
104
105 /*
106 +--------------------------------------------------------------------+
107 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
108 | STATE : code ROUTINE : tBAT_PlusCOPS |
109 +--------------------------------------------------------------------+
110
111 PURPOSE :
112 */
113 GLOBAL T_ACI_BAT_RSLT tBAT_PlusCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
114 T_BAT_cmd_send *cmd)
115 {
116 T_ACI_BAT_RSLT ret;
117 T_ACI_COPS_LST operLst;
118 T_BAT_cmd_response resp = {0};
119 T_BAT_res_tst_plus_cops *pTPC = resp.response.ptr_tst_plus_cops;
120
121 SHORT startIdx = 0, lastIdx = 0;
122 BOOL END_OF_LIST = FALSE;
123
124 TRACE_FUNCTION ("tBAT_PlusCOPS()");
125
126 resp.ctrl_response = BAT_RES_TST_PERCENT_COPS;
127
128 do
129 {
130 int i;
131
132 startIdx += lastIdx;
133 ret = tAT_PlusCOPS(src_infos_psi->srcId, startIdx, &lastIdx, &operLst[0]);
134 if (ret NEQ ACI_BAT_CMPL)
135 return (ret);
136
137 for (i = 0; i < lastIdx; i++)
138 {
139 if ((operLst[i].status EQ COPS_STAT_NotPresent) AND (*operLst[i].numOper EQ 0))
140 {
141 END_OF_LIST = TRUE;
142 break;
143 }
144 /* Fill BAT resp structs */
145 pTPC->status = operLst[i].status;
146 pTPC->c_short_oper = strlen(operLst[i].shortOper);
147 pTPC->c_long_oper = strlen(operLst[i].longOper);
148 pTPC->c_num_oper = strlen(operLst[i].numOper);
149
150 /* Check if there is long operator name, set valid flag and store it. */
151 if(pTPC->c_long_oper)
152 {
153 pTPC->v_long_oper = TRUE;
154 strncpy((CHAR*)pTPC->long_oper, operLst[i].longOper, pTPC->c_long_oper);
155 }
156
157 /* Check if there is short operator name, set valid flag and store it. */
158 if(pTPC->c_short_oper)
159 {
160 pTPC->v_short_oper = TRUE;
161 strncpy((CHAR*)pTPC->short_oper, operLst[i].shortOper, pTPC->c_short_oper);
162 }
163
164 /* Check if there is num operator name, set valid flag and store it. */
165 if(pTPC->c_num_oper)
166 {
167 pTPC->v_num_oper = TRUE;
168 strncpy((CHAR*)pTPC->num_oper, operLst[i].numOper, pTPC->c_num_oper);
169 }
170
171 aci_bat_send(src_infos_psi, &resp);
172 }
173 return (ACI_BAT_CMPL);
174 } while(!END_OF_LIST);
175 }
176
177 /*
178 +--------------------------------------------------------------------+
179 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
180 | STATE : code ROUTINE : sBAT_PercentCOPS |
181 +--------------------------------------------------------------------+
182
183 PURPOSE :
184 */
185 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
186 T_BAT_cmd_send *cmd)
187 {
188 T_ACI_BAT_RSLT ret;
189
190 U8 c_oper = cmd->params.ptr_set_percent_cops->c_oper;
191 CHAR op[MAX_ALPHA_OPER_LEN] = {0};
192
193 TRACE_FUNCTION ("sBAT_PercentCOPS()");
194
195 c_oper = min(c_oper, MAX_ALPHA_OPER_LEN);
196
197 if (cmd->params.ptr_set_percent_cops->v_oper EQ TRUE)
198 memcpy(op, cmd->params.ptr_set_percent_cops->oper, c_oper);
199
200 ret = sAT_PercentCOPS (src_infos_psi->srcId,
201 cmd->params.ptr_set_percent_cops->mode,
202 cmd->params.ptr_set_percent_cops->format, op);
203 return(ret);
204 }
205
206 /*
207 +--------------------------------------------------------------------+
208 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
209 | STATE : code ROUTINE : tBAT_PercentCOPS |
210 +--------------------------------------------------------------------+
211
212 PURPOSE :
213 */
214 GLOBAL T_ACI_BAT_RSLT tBAT_PercentCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
215 T_BAT_cmd_send *cmd)
216 {
217 T_ACI_BAT_RSLT ret;
218 T_ACI_COPS_LST operLst;
219 T_BAT_cmd_response resp = {0};
220 T_BAT_res_tst_percent_cops *pTPC = resp.response.ptr_tst_percent_cops;
221
222 SHORT startIdx = 0, lastIdx = 0;
223 BOOL END_OF_LIST = FALSE;
224
225 TRACE_FUNCTION ("tBAT_PercentCOPS()");
226
227 resp.ctrl_response = BAT_RES_TST_PERCENT_COPS;
228
229 do
230 {
231 int i;
232
233 startIdx += lastIdx;
234 ret = tAT_PlusCOPS(src_infos_psi->srcId, startIdx, &lastIdx, &operLst[0]);
235 if (ret NEQ ACI_BAT_CMPL)
236 return (ret);
237
238 for (i = 0; i < lastIdx; i++)
239 {
240 if ((operLst[i].status EQ COPS_STAT_NotPresent) AND (*operLst[i].numOper EQ 0))
241 {
242 END_OF_LIST = TRUE;
243 break;
244 }
245 /* Fill BAT resp structs */
246 pTPC->status = operLst[i].status;
247 pTPC->c_short_oper = strlen(operLst[i].shortOper);
248 pTPC->c_long_oper = strlen(operLst[i].longOper);
249 pTPC->c_num_oper = strlen(operLst[i].numOper);
250
251 /* Check if there is long operator name, set valid flag and store it. */
252 if(pTPC->c_long_oper)
253 {
254 pTPC->v_long_oper = TRUE;
255 strncpy((CHAR*)pTPC->long_oper, operLst[i].longOper, pTPC->c_long_oper);
256 }
257
258 /* Check if there is short operator name, set valid flag and store it. */
259 if(pTPC->c_short_oper)
260 {
261 pTPC->v_short_oper = TRUE;
262 strncpy((CHAR*)pTPC->short_oper, operLst[i].shortOper, pTPC->c_short_oper);
263 }
264
265 /* Check if there is num operator name, set valid flag and store it. */
266 if(pTPC->c_num_oper)
267 {
268 pTPC->v_num_oper = TRUE;
269 strncpy((CHAR*)pTPC->num_oper, operLst[i].numOper, pTPC->c_num_oper);
270 }
271
272 aci_bat_send(src_infos_psi, &resp);
273 }
274 return (ACI_BAT_CMPL);
275 } while(!END_OF_LIST);
276 }
277
278 /*
279 +--------------------------------------------------------------------+
280 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
281 | STATE : code ROUTINE : qBAT_PercentCOPS |
282 +--------------------------------------------------------------------+
283
284 PURPOSE :
285 */
286 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCOPS(T_ACI_DTI_PRC_PSI *src_infos_psi,
287 T_BAT_cmd_send *cmd)
288 {
289 T_ACI_BAT_RSLT ret;
290
291 CHAR op[MAX_ALPHA_OPER_LEN] = {0};
292
293 T_ACI_COPS_MOD mode = COPS_MOD_NotPresent;
294 T_ACI_COPS_FRMT format = COPS_FRMT_NotPresent;
295 T_ACI_COPS_SVST svrStatus = COPS_SVST_NotPresent;
296 T_BAT_cmd_response resp;
297 T_BAT_res_que_percent_cops cops;
298
299 TRACE_FUNCTION ("qBAT_PercentCOPS()");
300
301 resp.ctrl_response = BAT_RES_QUE_PERCENT_COPS;
302 resp.response.ptr_que_percent_cops = &cops;
303
304 ret = qAT_PercentCOPS(src_infos_psi->srcId, &mode, &format, &svrStatus, op);
305
306 cops.mode = mode;
307 cops.format = format;
308 cops.service = svrStatus;
309 cops.c_oper = strlen(op);
310 cops.v_oper = cops.c_oper ? TRUE : FALSE;
311
312 if (cops.v_oper)
313 {
314 memcpy(cops.oper, op, cops.c_oper);
315 }
316 aci_bat_send(src_infos_psi, &resp);
317 return(ret);
318 }
319
320 /*
321 +--------------------------------------------------------------------+
322 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
323 | STATE : code ROUTINE : qBAT_PercentCREG |
324 +--------------------------------------------------------------------+
325
326 PURPOSE :
327 */
328 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCREG(T_ACI_DTI_PRC_PSI *src_infos_psi,
329 T_BAT_cmd_send *cmd)
330 {
331 T_ACI_BAT_RSLT ret;
332 T_BAT_cmd_response resp;
333 T_BAT_res_que_percent_creg creg;
334
335 TRACE_FUNCTION ("qBAT_PercentCREG()");
336
337 resp.ctrl_response = BAT_RES_QUE_PERCENT_CREG;
338 resp.response.ptr_que_percent_creg = &creg;
339
340 ret = qAT_PercentCREG(src_infos_psi->srcId,
341 (T_ACI_CREG_STAT*)&creg.stat,
342 (USHORT*)&creg.lac,
343 (USHORT*)&creg.ci,
344 (T_ACI_P_CREG_GPRS_IND*)&creg.gprs_ind);
345
346 aci_bat_send(src_infos_psi, &resp);
347 return(ret);
348 }
349
350 /*
351 +--------------------------------------------------------------------+
352 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
353 | STATE : code ROUTINE : sBAT_PlusWS46 |
354 +--------------------------------------------------------------------+
355
356 PURPOSE :
357 */
358 GLOBAL T_ACI_BAT_RSLT sBAT_PlusWS46(T_ACI_DTI_PRC_PSI *src_infos_psi,
359 T_BAT_cmd_send *cmd)
360 {
361 T_ACI_BAT_RSLT ret;
362 T_BAT_plus_ws46_n mode = cmd->params.ptr_set_plus_ws46->n;
363
364 TRACE_FUNCTION ("sBAT_PlusWS46()");
365
366 ret = sAT_PlusWS46(src_infos_psi->srcId, mode);
367 return(ret);
368 }
369
370 /*
371 +--------------------------------------------------------------------+
372 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
373 | STATE : code ROUTINE : qBAT_PlusWS46 |
374 +--------------------------------------------------------------------+
375
376 PURPOSE :
377 */
378 GLOBAL T_ACI_BAT_RSLT qBAT_PlusWS46(T_ACI_DTI_PRC_PSI *src_infos_psi,
379 T_BAT_cmd_send *cmd)
380 {
381 T_ACI_BAT_RSLT ret;
382 T_BAT_cmd_response resp;
383 T_BAT_res_que_plus_ws46 ws46;
384
385 TRACE_FUNCTION ("qBAT_PlusWS46()");
386
387 resp.ctrl_response = BAT_RES_QUE_PLUS_WS46;
388 resp.response.ptr_que_plus_ws46 = &ws46;
389
390 ret = qAT_PlusWS46(src_infos_psi->srcId, (T_ACI_WS46_MOD *)&ws46.n);
391
392 aci_bat_send(src_infos_psi, &resp);
393 return(ret);
394 }
395
396 /*
397 +--------------------------------------------------------------------+
398 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
399 | STATE : code ROUTINE : sBAT_PercentCHPL |
400 +--------------------------------------------------------------------+
401
402 PURPOSE :
403 */
404 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCHPL(T_ACI_DTI_PRC_PSI *src_infos_psi,
405 T_BAT_cmd_send *cmd)
406 {
407 T_ACI_BAT_RSLT ret;
408 T_ACI_OPER_NTRY oper;
409 UBYTE len;
410
411 TRACE_FUNCTION ("sBAT_PercentCHPL()");
412
413 /*
414 * Call the corresponding ACI function. T_ACI_BAT_RSLT is
415 * assumed to be equivalent to T_ACI_RESULT.
416 */
417 ret=(T_ACI_BAT_RSLT)sAT_PercentCHPL(src_infos_psi->srcId,&oper);
418
419 /*
420 * If the command completes, we must send a response.
421 */
422 if (ret==ACI_BAT_CMPL)
423 {
424 T_BAT_cmd_response resp;
425 T_BAT_res_set_percent_chpl chpl_data;
426
427 resp.ctrl_response=BAT_RES_SET_PERCENT_CHPL;
428 resp.response.ptr_set_percent_chpl=&chpl_data;
429
430 chpl_data.type=BAT_P_CHPL_TYPE_FROM_IMS;
431
432 switch (cmd->params.ptr_set_percent_chpl->oprfrmt)
433 {
434 case BAT_P_CHPL_OPRFRMT_LONG:
435 len=strlen(oper.longName);
436
437 if (len<=BAT_MAX_CHPL_OPER_LEN)
438 {
439 memcpy(chpl_data.oper,oper.longName,len);
440 chpl_data.c_oper=(U8)len;
441 }
442 else
443 {
444 return(ACI_BAT_FAIL);
445 }
446 break;
447
448 case BAT_P_CHPL_OPRFRMT_SHORT:
449 len=strlen(oper.shrtName);
450
451 if (len<=BAT_MAX_CHPL_OPER_LEN)
452 {
453 memcpy(chpl_data.oper,oper.shrtName,len);
454 chpl_data.c_oper=(U8)len;
455 }
456 else
457 {
458 return(ACI_BAT_FAIL);
459 }
460 break;
461
462 case BAT_P_CHPL_OPRFRMT_NUMERIC:
463 /*
464 * Representation of the numeric format as in the ATI.
465 */
466 if ((oper.mnc & 0x00F)==0xF)
467 sprintf((char *)chpl_data.oper, "%03x,%02x",oper.mcc, oper.mnc >> 4);
468 else
469 sprintf((char *)chpl_data.oper, "%03x,%03x",oper.mcc, oper.mnc);
470
471 chpl_data.c_oper=(U8)strlen((char *)chpl_data.oper);
472 break;
473
474 default:
475 return(ACI_BAT_FAIL);
476 break;
477 }
478
479 aci_bat_send(src_infos_psi,&resp);
480 }
481
482 return(ret);
483 }
484
485 /*
486 +--------------------------------------------------------------------+
487 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
488 | STATE : code ROUTINE : sBAT_PlusCTZU |
489 +--------------------------------------------------------------------+
490
491 PURPOSE :
492 */
493 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCTZU(T_ACI_DTI_PRC_PSI *src_infos_psi,
494 T_BAT_cmd_send *cmd)
495 {
496 T_ACI_BAT_RSLT ret;
497
498 TRACE_FUNCTION ("sBAT_PlusCTZU()");
499
500 ret = sAT_PlusCTZU (src_infos_psi->srcId, cmd->params.ptr_set_plus_ctzu->onoff);
501 return(ret);
502 }
503
504 /*
505 +--------------------------------------------------------------------+
506 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
507 | STATE : code ROUTINE : qBAT_PlusCTZU |
508 +--------------------------------------------------------------------+
509
510 PURPOSE :
511 */
512 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCTZU(T_ACI_DTI_PRC_PSI *src_infos_psi,
513 T_BAT_cmd_send *cmd)
514 {
515 T_ACI_BAT_RSLT ret;
516
517 T_BAT_cmd_response resp;
518 T_BAT_res_que_plus_ctzu ctzu;
519
520 TRACE_FUNCTION ("qBAT_PlusCTZU()");
521
522 resp.ctrl_response = BAT_RES_QUE_PLUS_CTZU;
523 resp.response.ptr_que_plus_ctzu = &ctzu;
524 ret = qAT_PlusCTZU(src_infos_psi->srcId, (T_ACI_CTZU_MODE*)&ctzu.onoff);
525
526 aci_bat_send(src_infos_psi, &resp);
527 return(ret);
528 }
529
530 /*
531 +--------------------------------------------------------------------+
532 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
533 | STATE : code ROUTINE : sBAT_PercentCWUP |
534 +--------------------------------------------------------------------+
535
536 PURPOSE :
537 */
538 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCWUP(T_ACI_DTI_PRC_PSI *src_infos_psi,
539 T_BAT_cmd_send *cmd)
540 {
541 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
542
543 TRACE_FUNCTION ("sBAT_PercentCWUP()");
544
545 ret = sAT_PercentCWUP (src_infos_psi->srcId, cmd->params.ptr_set_percent_cwup->type);
546 return(ret);
547 }
548
549 /*
550 +--------------------------------------------------------------------+
551 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
552 | STATE : code ROUTINE : sBAT_PercentCTZV |
553 +--------------------------------------------------------------------+
554
555 PURPOSE : %CTZV command mode (time and date report)
556 */
557 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCTZV (T_ACI_DTI_PRC_PSI *src_infos_psi,
558 T_BAT_cmd_send *cmd)
559 {
560 T_ACI_BAT_RSLT ret;
561
562 TRACE_FUNCTION ("sBAT_PercentCTZV()");
563
564 ret = sAT_PercentCTZV (src_infos_psi->srcId,
565 (T_ACI_PCTZV_MODE)cmd->params.ptr_set_percent_ctzv->mode);
566 return(ret);
567 }
568
569 /*
570 +--------------------------------------------------------------------+
571 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
572 | STATE : code ROUTINE : sBAT_PlusCIND |
573 +--------------------------------------------------------------------+
574
575 PURPOSE :
576 */
577 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCIND(T_ACI_DTI_PRC_PSI *src_infos_psi,
578 T_BAT_cmd_send *cmd)
579 {
580 T_ACI_BAT_RSLT ret;
581
582 TRACE_FUNCTION ("sBAT_PlusCIND()");
583
584 ret = sAT_PlusCIND( src_infos_psi->srcId,
585 cmd->params.ptr_set_plus_cind->signal_ctrl,
586 cmd->params.ptr_set_plus_cind->smsfull_ctrl);
587 return(ret);
588 }
589
590 /*
591 +--------------------------------------------------------------------+
592 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
593 | STATE : code ROUTINE : qBAT_PlusCIND |
594 +--------------------------------------------------------------------+
595
596 PURPOSE :
597 */
598 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCIND(T_ACI_DTI_PRC_PSI *src_infos_psi,
599 T_BAT_cmd_send *cmd)
600 {
601 T_ACI_BAT_RSLT ret;
602
603 T_BAT_cmd_response resp;
604 T_BAT_res_que_plus_cind cind;
605
606 TRACE_FUNCTION ("qBAT_PlusCIND()");
607
608 resp.ctrl_response = BAT_RES_QUE_PLUS_CIND;
609 resp.response.ptr_que_plus_cind = &cind;
610
611 ret = qAT_PlusCIND(src_infos_psi->srcId,
612 (T_ACI_CIND_SIGNAL_TYPE*)&cind.signal,
613 (T_ACI_CIND_SMSFULL_TYPE*)&cind.smsfull);
614
615 aci_bat_send(src_infos_psi, &resp);
616 return(ret);
617 }
618
619 /*
620 +--------------------------------------------------------------------+
621 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
622 | STATE : code ROUTINE : sBAT_PlusCMER |
623 +--------------------------------------------------------------------+
624
625 PURPOSE :
626 */
627 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMER(T_ACI_DTI_PRC_PSI *src_infos_psi,
628 T_BAT_cmd_send *cmd)
629 {
630 T_ACI_BAT_RSLT ret;
631
632 T_ACI_CMER_MODE_TYPE sCmerModeSettings = CMER_MODE_INVALID;
633 T_ACI_CMER_IND_TYPE sCmerIndicationSettings = CMER_INDICATOR_INVALID;
634 T_ACI_CMER_BFR_TYPE sCmerBfrSettings = CMER_BFR_INVALID;
635
636 TRACE_FUNCTION ("sBAT_PlusCMER()");
637
638 switch (cmd->params.ptr_set_plus_cmer->ind_option)
639 {
640 case BAT_CMER_IND_OPTION_LOWER:
641 ret = sAT_PlusCMER(src_infos_psi->srcId,
642 sCmerModeSettings,
643 sCmerIndicationSettings,
644 sCmerBfrSettings);
645 break;
646
647 case BAT_CMER_IND_OPTION_GREATER_EQUAL:
648 ret = sAT_PlusCMER(src_infos_psi->srcId,
649 sCmerModeSettings,
650 sCmerIndicationSettings,
651 sCmerBfrSettings);
652 break;
653
654 case BAT_CMER_IND_OPTION_NOT_PRESENT:
655 default:
656 return ACI_BAT_FAIL;
657 break;
658 }
659 return(ret);
660 }
661
662 /*
663 +--------------------------------------------------------------------+
664 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
665 | STATE : code ROUTINE : qBAT_PlusCMER |
666 +--------------------------------------------------------------------+
667
668 PURPOSE :
669 */
670 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCMER(T_ACI_DTI_PRC_PSI *src_infos_psi,
671 T_BAT_cmd_send *cmd)
672 {
673 T_ACI_BAT_RSLT ret;
674 T_BAT_cmd_response resp;
675 T_BAT_res_que_plus_cmer cmer;
676
677 T_ACI_CMER_MODE_TYPE sCmerModeSettings;
678 T_ACI_CMER_IND_TYPE sCmerIndicationSettings;
679 T_ACI_CMER_BFR_TYPE sCmerBfrSettings;
680
681 TRACE_FUNCTION ("qBAT_PlusCMER()");
682
683 resp.ctrl_response = BAT_RES_QUE_PLUS_CMER;
684 resp.response.ptr_que_plus_cmer = &cmer;
685
686 ret = qAT_PlusCMER(src_infos_psi->srcId,
687 &sCmerModeSettings,
688 &sCmerIndicationSettings,
689 &sCmerBfrSettings);
690
691 switch (cmd->params.ptr_que_plus_cmer->bat_dummy)
692 {
693 default:
694 break;
695 }
696 aci_bat_send(src_infos_psi, &resp);
697 return(ret);
698 }
699