comparison gsm-fw/g23m-aci/aci/aci_bat_sms.c @ 775:eedbf248bac0

gsm-fw/g23m-aci subtree: initial import from LoCosto source
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 12 Oct 2014 01:45:14 +0000
parents
children
comparison
equal deleted inserted replaced
774:40a721fd9854 775:eedbf248bac0
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 "ati_cmd.h"
25 #include "aci_cmd.h"
26 #include "aci_bat_cmh.h" /* prototypes of sBAT_,qBAT_,tBAT_ */
27 #include "aci_bat.h"
28 #include "psa.h"
29 #include "psa_sms.h"
30 #include "cmh.h"
31
32 EXTERN T_SMS_SHRD_PRM smsShrdPrm;
33
34 EXTERN SHORT cmhSMS_getPrfRge ( void );
35
36 EXTERN T_ATI_RSLT txt_rdmode_to_smsrdmode(char *txt_rdmode);
37
38
39
40 /*
41 +--------------------------------------------------------------------+
42 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
43 | STATE : code ROUTINE : sBAT_PlusCSMS |
44 +--------------------------------------------------------------------+
45
46 PURPOSE :
47 */
48 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSMS (T_ACI_DTI_PRC_PSI *src_infos_psi,
49 T_BAT_cmd_send *cmd)
50 {
51 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
52
53 TRACE_FUNCTION ("sBAT_PlusCSMS()");
54
55 ret = (T_ACI_BAT_RSLT)sAT_PlusCSMS((T_ACI_CMD_SRC)src_infos_psi->srcId,(T_ACI_CSMS_SERV)cmd->params.ptr_set_plus_csms->service);
56
57 return ret;
58 }
59
60 /*
61 +--------------------------------------------------------------------+
62 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
63 | STATE : code ROUTINE : qBAT_PlusCSMS |
64 +--------------------------------------------------------------------+
65
66 PURPOSE :
67 */
68 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCSMS (T_ACI_DTI_PRC_PSI *src_infos_psi,
69 T_BAT_cmd_send *cmd)
70 {
71 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
72 T_ACI_CSMS_SERV service;
73 T_ACI_CSMS_SUPP mt;
74 T_ACI_CSMS_SUPP mo;
75 T_ACI_CSMS_SUPP bm;
76 T_BAT_cmd_response resp;
77 T_BAT_res_que_plus_csms que_csms_buffer;
78
79 TRACE_FUNCTION ("qBAT_PlusCSMS()");
80
81 resp.ctrl_response = BAT_RES_QUE_PLUS_CSMS;
82 resp.response.ptr_que_plus_csms = &que_csms_buffer;
83 ret = (T_ACI_BAT_RSLT)qAT_PlusCSMS((T_ACI_CMD_SRC)src_infos_psi->srcId,&service,&mt,&mo,&bm);
84 switch(ret)
85 {
86 case ACI_BAT_CMPL :
87 resp.response.ptr_que_plus_csms->service = (T_BAT_plus_csms_service)service;
88 resp.response.ptr_que_plus_csms->mt = (T_BAT_plus_csms_mt)mt;
89 resp.response.ptr_que_plus_csms->mo = (T_BAT_plus_csms_mo)mo;
90 resp.response.ptr_que_plus_csms->bm = (T_BAT_plus_csms_bm)bm;
91 aci_bat_send(src_infos_psi,&resp);
92 /*lint -fallthrough*/
93 default :
94 return (ret);
95 }
96 }
97
98 /*
99 +--------------------------------------------------------------------+
100 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
101 | STATE : code ROUTINE : sBAT_PlusCPMS |
102 +--------------------------------------------------------------------+
103
104 PURPOSE :
105 */
106 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCPMS (T_ACI_DTI_PRC_PSI *src_infos_psi,
107 T_BAT_cmd_send *cmd)
108 {
109 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
110 T_BAT_plus_cpms_mem1 mem1;
111 T_BAT_plus_cpms_mem2 mem2 = BAT_CPMS_MEM2_NOT_PRESENT;
112 T_BAT_plus_cpms_mem3 mem3 = BAT_CPMS_MEM3_NOT_PRESENT;
113
114 TRACE_FUNCTION ("sBAT_PlusCPMS()");
115
116 mem1 = cmd->params.ptr_set_plus_cpms->mem1;
117 mem2 = cmd->params.ptr_set_plus_cpms->mem2;
118 mem3 = cmd->params.ptr_set_plus_cpms->mem3;
119 ret = (T_ACI_BAT_RSLT)sAT_PlusCPMS ( (T_ACI_CMD_SRC)src_infos_psi->srcId,(T_ACI_SMS_STOR)mem1, (T_ACI_SMS_STOR)mem2, (T_ACI_SMS_STOR)mem3);
120
121 return (ret);
122 }
123
124 /*
125 +--------------------------------------------------------------------+
126 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
127 | STATE : code ROUTINE : qBAT_PlusCPMS |
128 +--------------------------------------------------------------------+
129
130 PURPOSE :
131 */
132 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCPMS (T_ACI_DTI_PRC_PSI *src_infos_psi,
133 T_BAT_cmd_send *cmd)
134 {
135 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
136
137 TRACE_FUNCTION ("qBAT_PlusCPMS()");
138 ret = (T_ACI_BAT_RSLT)qAT_PlusCPMS ( (T_ACI_CMD_SRC)src_infos_psi->srcId );
139 /* ..............RECEHECK............. */
140 /* Needs to be looked into. The cmd params are not filled thru this function call
141 see implementation of qAT_plusCPMS, Needs to be rewritten */
142
143 return (ret);
144 }
145
146 /*
147 +--------------------------------------------------------------------+
148 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
149 | STATE : code ROUTINE : sBAT_PlusCSCA |
150 +--------------------------------------------------------------------+
151
152 PURPOSE :
153 */
154 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSCA (T_ACI_DTI_PRC_PSI *src_infos_psi,
155 T_BAT_cmd_send *cmd)
156 {
157 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
158 T_ACI_TOA tosca;
159 T_ACI_TOA *p_tosca;
160 CHAR sca[MAX_SMS_NUM_LEN];
161
162 TRACE_FUNCTION ("sBAT_PlusCSCA()");
163
164 memset (sca, 0, sizeof(sca));
165 p_tosca=&tosca;
166
167 if(cmd->params.ptr_set_plus_csca->tosca EQ (S16)BAT_PARAMETER_NOT_PRESENT)
168 {
169 p_tosca = NULL;
170 }
171 else
172 {
173 tosca=toa_demerge(cmd->params.ptr_set_plus_csca->tosca);
174 if (tosca.ton < 0 OR tosca.npi < 0)
175 {
176 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
177 return (ACI_BAT_FAIL);
178 }
179 }
180 memcpy(sca,cmd->params.ptr_set_plus_csca->sca,cmd->params.ptr_set_plus_csca->c_sca);
181 ret = (T_ACI_BAT_RSLT)sAT_PlusCSCA((T_ACI_CMD_SRC)src_infos_psi->srcId,sca,p_tosca);
182
183 return ret;
184 }
185
186 /*
187 +--------------------------------------------------------------------+
188 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
189 | STATE : code ROUTINE : qBAT_PlusCSCA |
190 +--------------------------------------------------------------------+
191
192 PURPOSE :
193 */
194 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCSCA (T_ACI_DTI_PRC_PSI *src_infos_psi,
195 T_BAT_cmd_send *cmd)
196 {
197 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
198 T_ACI_TOA tosca;
199 SHORT octet=0;
200 CHAR sca[MAX_SMS_NUM_LEN];
201 T_BAT_cmd_response resp;
202 T_BAT_res_que_plus_csca que_csca_buffer;
203
204 TRACE_FUNCTION ("qBAT_PlusCSCA()");
205 ret = (T_ACI_BAT_RSLT)qAT_PlusCSCA ((T_ACI_CMD_SRC)src_infos_psi->srcId,sca,&tosca);
206 resp.ctrl_response = BAT_RES_QUE_PLUS_CSCA;
207 resp.response.ptr_que_plus_csca = &que_csca_buffer;
208 switch(ret)
209 {
210 case ACI_BAT_CMPL :
211 octet=toa_merge(tosca);
212 resp.response.ptr_que_plus_csca->tosca = (U8)octet;
213 resp.response.ptr_que_plus_csca->c_sca = strlen(sca);
214 /* Are we sure the length is strlen(sca)? */
215 memcpy(resp.response.ptr_que_plus_csca->sca,sca,strlen(sca));
216 aci_bat_send(src_infos_psi,&resp);
217 /*lint -fallthrough*/
218 default :
219 return (ret);
220 }
221 }
222
223 /*
224 +--------------------------------------------------------------------+
225 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
226 | STATE : code ROUTINE : sBAT_PlusCSCB |
227 +--------------------------------------------------------------------+
228
229 PURPOSE :
230 */
231 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSCB (T_ACI_DTI_PRC_PSI *src_infos_psi,
232 T_BAT_cmd_send *cmd)
233 {
234 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
235 USHORT *p_mids;
236 UBYTE *p_dcss;
237
238 TRACE_FUNCTION ("sBAT_PlusCSCB()");
239
240 if(cmd->params.ptr_set_plus_cscb->v_mids)
241 {
242 p_mids = cmd->params.ptr_set_plus_cscb->mids;
243 }
244 else
245 {
246 p_mids = NULL;
247 }
248 if(cmd->params.ptr_set_plus_cscb->v_dcss)
249 {
250 p_dcss = cmd->params.ptr_set_plus_cscb->dcss;
251 }
252 else
253 {
254 p_dcss = NULL;
255 }
256 ret=(T_ACI_BAT_RSLT)sAT_PlusCSCB((T_ACI_CMD_SRC)src_infos_psi->srcId, (T_ACI_CSCB_MOD)cmd->params.ptr_set_plus_cscb->mode, p_mids, p_dcss);
257
258 return ret;
259 }
260
261 /*
262 +--------------------------------------------------------------------+
263 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
264 | STATE : code ROUTINE : qBAT_PlusCSCB |
265 +--------------------------------------------------------------------+
266
267 PURPOSE : to query the cell broadcast channels, we pass to qAT_PlusCSCB()
268 two arrays (mids and dcss), which are filled in the following way:
269 - two consecutive array entries form one logical information
270 - when both entries have the same value, then it is a single channel
271 - when both entries have different values, then it is a range of channels.
272 mids is more or less a copy of EF CBMIR of the SIM. refer to 11.11
273 A string based response +CSCB: 0,"2,3,4-6,7,922-1003","0-3,5"
274 is on binary level as follow:
275 mode = BAT_CSCB_MODE_ACCEPT; <=== 0 = accepted
276 mids[0] = 0x0002;
277 mids[1] = 0x0002;
278 mids[2] = 0x0003;
279 mids[3] = 0x0003;
280 mids[4] = 0x0004; <=== range lower bound
281 mids[5] = 0x0006; <=== range upper bound
282 mids[6] = 0x0007;
283 mids[7] = 0x0007;
284 mids[8] = 0x039A; <=== range lower bound
285 mids[9] = 0x03EB; <=== range upper bound
286 dcss[0] = 0x00;
287 dcss[1] = 0x03;
288 dcss[2] = 0x05;
289 dcss[3] = 0x05;
290
291 */
292 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCSCB (T_ACI_DTI_PRC_PSI *src_infos_psi,
293 T_BAT_cmd_send *cmd)
294 {
295 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
296 T_BAT_cmd_response resp;
297 T_BAT_res_que_plus_cscb cscb;
298 int i;
299
300 TRACE_FUNCTION ("qBAT_PlusCSCB()");
301
302 resp.ctrl_response = BAT_RES_QUE_PLUS_CSCB;
303 resp.response.ptr_que_plus_cscb = &cscb;
304
305 cscb.c_mids = 0;
306 cscb.v_mids = FALSE;
307 cscb.c_dcss = 0;
308 cscb.v_dcss = FALSE;
309
310 memset(cscb.mids, 0xFF, BAT_MAX_IDENTS);
311 memset(cscb.dcss, 0xFF, BAT_MAX_IDENTS);
312
313 ret = (T_ACI_BAT_RSLT)qAT_PlusCSCB((T_ACI_CMD_SRC)src_infos_psi->srcId,
314 (T_ACI_CSCB_MOD*)&cscb.mode,
315 cscb.mids,
316 cscb.dcss);
317
318 switch(ret)
319 {
320 case ACI_BAT_CMPL :
321 i = 0;
322
323 if ((cscb.mids[0] NEQ 0xFFFF)
324 AND (cscb.mids[1] NEQ 0xFFFF))
325 {
326 cscb.v_mids = TRUE;
327 }
328
329 while ((i < BAT_MAX_IDENTS-1)
330 AND (cscb.mids[i] NEQ 0xFFFF)
331 AND (cscb.mids[i+1] NEQ 0xFFFF))
332 {
333 i += 2;
334 cscb.c_mids += 2;
335 }
336
337 i = 0;
338
339 if ((cscb.dcss[0] NEQ 0xFF)
340 AND (cscb.dcss[1] NEQ 0xFF))
341 {
342 cscb.v_dcss = TRUE;
343 }
344
345 while ((i < BAT_MAX_IDENTS-1)
346 AND (cscb.dcss[i] NEQ 0xFF)
347 AND (cscb.dcss[i+1] NEQ 0xFF))
348 {
349 i += 2;
350 cscb.c_dcss += 2;
351 }
352
353 aci_bat_send(src_infos_psi,&resp);
354 /*lint -fallthrough*/
355 default :
356 return (ret);
357 }
358 }
359
360 #ifdef _SIMULATION_
361 #pragma message( __TODO__"FF_HOMEZONE is currently a problem for linking" )
362 #endif
363 /* #ifdef FF_HOMEZONE */
364 /*
365 +--------------------------------------------------------------------+
366 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
367 | STATE : code ROUTINE : sBAT_PercentCBHZ |
368 +--------------------------------------------------------------------+
369
370 PURPOSE :
371 */
372 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCBHZ (T_ACI_DTI_PRC_PSI *src_infos_psi,
373 T_BAT_cmd_send *cmd)
374 {
375 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
376
377 TRACE_FUNCTION ("sBAT_PercentCBHZ()");
378
379 /* CBHZ_xxx depends on FF_HOMEZONE
380 ret = sAT_PercentCBHZ(src_infos_psi->srcId,cmd->params.ptr_set_percent_cbhz->mode
381 ,cmd->params.ptr_set_percent_cbhz->dcs,
382 cmd->params.ptr_set_percent_cbhz->timeout);
383 if (ret EQ AT_FAIL)
384 {
385 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_Unknown);
386 return (ACI_BAT_FAIL);
387 }
388 return (ACI_BAT_CMPL);
389 */
390 return(ret);
391 }
392
393 /*
394 +--------------------------------------------------------------------+
395 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
396 | STATE : code ROUTINE : tBAT_PercentCBHZ |
397 +--------------------------------------------------------------------+
398
399 PURPOSE :
400 */
401 GLOBAL T_ACI_BAT_RSLT tBAT_PercentCBHZ (T_ACI_DTI_PRC_PSI *src_infos_psi,
402 T_BAT_cmd_send *cmd)
403 {
404 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
405 /* CBHZ_xxx depends on FF_HOMEZONE
406 T_BAT_cmd_response resp;
407 T_BAT_res_tst_percent_cbhz tst_cbhz_buffer;
408 T_BAT_percent_cbhz_mode mode;
409 T_ACI_CS dcs;
410 T_BAT_percent_cbhz_timeout timeout = BAT_P_CBHZ_TIMOUT_NOT_PRESENT;
411
412 TRACE_FUNCTION ("tBAT_PercentCBHZ()");
413 resp.ctrl_response = BAT_RES_QUE_PERCENT_CBHZ;
414 resp.response.ptr_tst_percent_cbhz = &tst_cbhz_buffer;
415
416
417 resp.response.ptr_tst_percent_cbhz->mode = CBHZ_MOD_Active;
418 resp.response.ptr_tst_percent_cbhz->dcs = CS_Ascii;
419 resp.response.ptr_tst_percent_cbhz->timeout = CBHZ_MAX_TIMEOUT;
420
421 dont know how to fill the lower values ???
422 CBHZ_xxx depends on FF_HOMEZONE
423 aci_bat_send(src_infos_psi,&resp);
424 return(ACI_BAT_CMPL);
425 */
426 return(ret);
427 }
428
429 /*
430 +--------------------------------------------------------------------+
431 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
432 | STATE : code ROUTINE : qBAT_PercentCBHZ |
433 +--------------------------------------------------------------------+
434
435 PURPOSE :
436 */
437 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCBHZ (T_ACI_DTI_PRC_PSI *src_infos_psi,
438 T_BAT_cmd_send *cmd)
439 {
440 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
441 /* qAT_PercentCBHZ depends on FF_HOMEZONE
442 T_BAT_percent_cbhz_mode mode;
443 T_ACI_CS dcs;
444 T_BAT_percent_cbhz_timeout timeout = BAT_P_CBHZ_TIMOUT_NOT_PRESENT;
445 T_BAT_cmd_response resp;
446 T_BAT_res_que_percent_cbhz que_cbhz_buffer;
447
448 TRACE_FUNCTION ("qBAT_PercentCBHZ()");
449
450 resp.ctrl_response = BAT_RES_QUE_PERCENT_CBHZ;
451 resp.response.ptr_que_percent_cbhz = &que_cbhz_buffer;
452 ret = qAT_PercentCBHZ(src_infos_psi->srcId, &mode, &dcs, &timeout);
453 if (ret EQ AT_FAIL)
454 {
455 ACI_ERR_DESC(ACI_ERR_CLASS_Cme,CME_ERR_NotPresent);
456 return (ATI_FAIL);
457 }
458 resp.response.ptr_que_percent_cbhz->mode = mode;
459 resp.response.ptr_que_percent_cbhz->timeout = timeout;
460 resp.response.ptr_que_percent_cbhz->dcs = dcs;
461 */
462 return(ret);
463 }
464
465 /* #endif *//* FF_HOMEZONE */
466 /*
467 +--------------------------------------------------------------------+
468 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
469 | STATE : code ROUTINE : sBAT_PlusCSAS |
470 +--------------------------------------------------------------------+
471
472 PURPOSE :
473 */
474 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCSAS (T_ACI_DTI_PRC_PSI *src_infos_psi,
475 T_BAT_cmd_send *cmd)
476 {
477 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
478
479 TRACE_FUNCTION ("sBAT_PlusCSAS()");
480
481 ret = (T_ACI_BAT_RSLT)sAT_PlusCSAS ((T_ACI_CMD_SRC)src_infos_psi->srcId,cmd->params.ptr_set_plus_csas->profile);
482
483 return ret;
484 }
485
486
487 /*
488 +--------------------------------------------------------------------+
489 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
490 | STATE : code ROUTINE : tBAT_PlusCSAS |
491 +--------------------------------------------------------------------+
492
493 PURPOSE :
494 */
495 GLOBAL T_ACI_BAT_RSLT tBAT_PlusCSAS (T_ACI_DTI_PRC_PSI *src_infos_psi,
496 T_BAT_cmd_send *cmd)
497 {
498 SHORT profile = -1;
499 T_BAT_cmd_response resp;
500 T_BAT_res_tst_plus_csas tst_csas_buffer;
501
502
503 TRACE_FUNCTION ("tBAT_PlusCSAS()");
504
505 if ((profile = cmhSMS_getPrfRge ()) < 1)
506 {
507 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_MemFail );
508 return (ACI_BAT_FAIL);
509 }
510 else
511 {
512 resp.ctrl_response = BAT_RES_TST_PLUS_CSAS;
513 resp.response.ptr_tst_plus_csas = &tst_csas_buffer;
514 resp.response.ptr_tst_plus_csas->max = (profile - 1) ;
515 aci_bat_send(src_infos_psi,&resp);
516 return (ACI_BAT_CMPL);
517 }
518 }
519
520 /*
521 +--------------------------------------------------------------------+
522 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
523 | STATE : code ROUTINE : sBAT_PlusCRES |
524 +--------------------------------------------------------------------+
525
526 PURPOSE :
527 */
528 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCRES (T_ACI_DTI_PRC_PSI *src_infos_psi,
529 T_BAT_cmd_send *cmd)
530 {
531 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
532
533 TRACE_FUNCTION ("sBAT_PlusCRES()");
534
535 ret = (T_ACI_BAT_RSLT)sAT_PlusCRES ((T_ACI_CMD_SRC)src_infos_psi->srcId,cmd->params.ptr_set_plus_cres->profile);
536
537 return ret;
538 }
539
540 /*
541 +--------------------------------------------------------------------+
542 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
543 | STATE : code ROUTINE : tBAT_PlusCRES |
544 +--------------------------------------------------------------------+
545
546 PURPOSE :
547 */
548 GLOBAL T_ACI_BAT_RSLT tBAT_PlusCRES (T_ACI_DTI_PRC_PSI *src_infos_psi,
549 T_BAT_cmd_send *cmd)
550 {
551 T_ACI_CRES profile ;
552 T_BAT_cmd_response resp;
553 T_BAT_res_tst_plus_cres tst_cres_buffer;
554 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
555
556 TRACE_FUNCTION ("tBAT_PlusCRES()");
557
558 ret = (T_ACI_BAT_RSLT)tAT_PlusCRES ((T_ACI_CMD_SRC)src_infos_psi->srcId, &profile);
559 switch (ret)
560 {
561 case ACI_BAT_CMPL:
562 {
563 break;
564 }
565 case ACI_BAT_FAIL:
566 default:
567 {
568 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_MemFail );
569 return (ACI_BAT_FAIL);
570 }
571 }
572 resp.ctrl_response = BAT_RES_TST_PLUS_CRES;
573 resp.response.ptr_tst_plus_cres = &tst_cres_buffer;
574 resp.response.ptr_tst_plus_cres->max = profile.max ;
575 /* there is no min field to fill in */
576 //resp.response.ptr_tst_plus_cres->min = profile.min ;
577 aci_bat_send(src_infos_psi,&resp);
578 return (ACI_BAT_CMPL);
579 }
580
581
582 /*
583 +--------------------------------------------------------------------+
584 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
585 | STATE : code ROUTINE : sBAT_PlusCMGR |
586 +--------------------------------------------------------------------+
587
588 PURPOSE :
589 */
590 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGR (T_ACI_DTI_PRC_PSI *src_infos_psi,
591 T_BAT_cmd_send *cmd)
592 {
593 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
594 SHORT idx=-1;
595
596 TRACE_FUNCTION ("sBAT_PlusCMGR()");
597
598 idx = cmd->params.ptr_set_plus_cmgr->sms_index;
599 if ( idx > 255 OR idx < 0)
600 {
601 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
602 return (ACI_BAT_FAIL);
603 }
604 ret = (T_ACI_BAT_RSLT)sAT_PlusCMGR_Gl((T_ACI_CMD_SRC)src_infos_psi->srcId, (UBYTE)idx, SMS_READ_Normal, NULL);
605 /*
606 TO DO
607 ret = sAT_PlusCMGR_Gl(src_infos_psi->srcId, (UBYTE)idx, cmglRead, NULL);
608
609 */
610 return (ret);
611 }
612
613 /*
614 +--------------------------------------------------------------------+
615 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
616 | STATE : code ROUTINE : sBAT_PercentCMGR |
617 +--------------------------------------------------------------------+
618
619 PURPOSE :
620 */
621 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCMGR (T_ACI_DTI_PRC_PSI *src_infos_psi,
622 T_BAT_cmd_send *cmd)
623 {
624 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
625 SHORT idx=-1;
626 #ifdef SMS_PDU_SUPPORT
627 T_ACI_CMGF_MOD mode;
628 #endif
629 CHAR *txtRdMode = NULL;
630
631
632 TRACE_FUNCTION ("sBAT_PercentCMGR()");
633
634 smsReadMode = SMS_READ_Normal;
635
636 #ifdef SMS_PDU_SUPPORT
637 /*
638 * request current mode
639 */
640 qAT_PlusCMGF((T_ACI_CMD_SRC)src_infos_psi->srcId, &mode);
641 if (mode EQ 0)
642 {
643 /*
644 * %CMGR=[index],[preview]
645 */
646 idx = cmd->params.ptr_set_percent_cmgr->sms_index;
647 smsReadMode = (T_ACI_SMS_READ)cmd->params.ptr_set_percent_cmgr->rdmode;
648 if ( idx > 255 OR idx < 0 OR smsReadMode > SMS_READ_StatusChange)
649 {
650 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
651 return (ACI_BAT_FAIL);
652 }
653 }
654 else
655 #endif
656 {
657 idx = cmd->params.ptr_set_percent_cmgr->sms_index;
658 if ( idx > 255 OR idx < 0)
659 {
660 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
661 return (ACI_BAT_FAIL);
662 }
663 txtRdMode = (CHAR *)&cmd->params.ptr_set_percent_cmgr->rdmode;
664 if (txt_rdmode_to_smsrdmode(txtRdMode) EQ ATI_FAIL)
665 {
666 return (ACI_BAT_FAIL);
667 }
668 }
669 ret = (T_ACI_BAT_RSLT)sAT_PercentCMGR_Gl((T_ACI_CMD_SRC)src_infos_psi->srcId, (UBYTE)idx, smsReadMode , NULL);
670
671 return (ret);
672 }
673 /*
674 +--------------------------------------------------------------------+
675 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
676 | STATE : code ROUTINE : sBAT_PlusCMGS |
677 +--------------------------------------------------------------------+
678
679 PURPOSE :
680 */
681 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGS (T_ACI_DTI_PRC_PSI *src_infos_psi,
682 T_BAT_cmd_send *cmd)
683 {
684 T_ACI_BAT_RSLT ret;
685 T_ACI_SM_DATA pdu;
686
687 TRACE_FUNCTION ("sBAT_PlusCMGS()");
688
689 /*
690 * Check that 'data' in the T_ACI_SM_DATA structure is large enough
691 * to store the data in the BAT command. If it isn't then we may
692 * as well give up.
693 */
694 if (cmd->params.ptr_set_plus_cmgs->c_pdu>MAX_SM_LEN)
695 {
696 ACI_ERR_DESC(ACI_ERR_CLASS_Ext,EXT_ERR_Parameter);
697 return(ACI_BAT_FAIL);
698 }
699
700 /*
701 * Copy the data, secure in the knowledge that we have enough room.
702 */
703 memcpy(
704 pdu.data,
705 cmd->params.ptr_set_plus_cmgs->pdu,
706 MAX_SM_LEN);
707
708 pdu.len=cmd->params.ptr_set_plus_cmgs->c_pdu;
709
710 /*
711 * Call the corresponding sAT function. T_ACI_BAT_RSLT is
712 * assumed to be equivalent to T_ACI_RESULT.
713 */
714 ret=(T_ACI_BAT_RSLT)sAT_PlusCMGSPdu((T_ACI_CMD_SRC)src_infos_psi->srcId,&pdu);
715
716 return(ret);
717 }
718
719 /*
720 +--------------------------------------------------------------------+
721 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
722 | STATE : code ROUTINE : sBAT_PlusCMSS |
723 +--------------------------------------------------------------------+
724
725 PURPOSE :
726 */
727 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMSS (T_ACI_DTI_PRC_PSI *src_infos_psi,
728 T_BAT_cmd_send *cmd)
729 {
730 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
731 T_ACI_TOA toda;
732 T_ACI_TOA *p_toda;
733 SHORT index=-1,
734 toda_val=0;
735 CHAR da[MAX_SMS_NUM_LEN] , *p_da;
736
737 TRACE_FUNCTION ("sBAT_PlusCMSS()");
738
739 p_toda=&toda;
740 p_da=da;
741
742 index = cmd->params.ptr_set_plus_cmss->index;
743 if(cmd->params.ptr_set_plus_cmss->v_da)
744 {
745 memcpy(da,cmd->params.ptr_set_plus_cmss->da,cmd->params.ptr_set_plus_cmss->c_da);
746 }
747 else
748 {
749 p_da = NULL;
750 }
751 toda_val=cmd->params.ptr_set_plus_cmss->toda;
752 if(toda_val EQ (SHORT)BAT_PARAMETER_NOT_PRESENT)
753 {
754 p_toda=NULL;
755 }
756 else
757 {
758 toda=toa_demerge(toda_val);
759 if (toda.ton < 0 OR toda.npi < 0)
760 {
761 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_NotPresent);
762 return (ACI_BAT_FAIL);
763 }
764 }
765 ret = (T_ACI_BAT_RSLT)sAT_PlusCMSS_Gl((T_ACI_CMD_SRC)src_infos_psi->srcId, (UBYTE)index, p_da, p_toda, NULL, NULL);
766
767 return (ret);
768 }
769
770 /*
771 +--------------------------------------------------------------------+
772 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
773 | STATE : code ROUTINE : sBAT_PlusCMGW |
774 +--------------------------------------------------------------------+
775
776 PURPOSE :
777 */
778 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGW (T_ACI_DTI_PRC_PSI *src_infos_psi,
779 T_BAT_cmd_send *cmd)
780 {
781 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
782 T_ACI_SMS_STAT stat;
783 T_ACI_SM_DATA pdu;
784 UBYTE sca_len;
785 UBYTE pdu_message_octets_length = 0;
786
787 TRACE_FUNCTION ("sBAT_PlusCMGW()");
788
789 stat = (T_ACI_SMS_STAT)cmd->params.ptr_set_plus_cmgw->sms_stat;
790 sca_len = cmd->params.ptr_set_plus_cmgw->pdu[0];
791 /* The first octet in pdu is length of sca */
792
793 if (sca_len > ((MAX_SMS_ADDR_DIG+1)/2) + 1)
794 {
795 TRACE_ERROR("SCA too long !!!");
796 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
797 return (ACI_BAT_FAIL);
798 }
799
800 pdu_message_octets_length = (cmd->params.ptr_set_plus_cmgw->length-2-sca_len*2)/2;
801 if(pdu_message_octets_length NEQ cmd->params.ptr_set_plus_cmgw->length)
802 {
803 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
804 TRACE_EVENT("ERROR: input pdu message length do not match the real length!");
805 return (ACI_BAT_FAIL);
806 }
807 memcpy(pdu.data,cmd->params.ptr_set_plus_cmgw->pdu,cmd->params.ptr_set_plus_cmgw->c_pdu);
808 ret = (T_ACI_BAT_RSLT)sAT_PlusCMGWPdu ((T_ACI_CMD_SRC)src_infos_psi->srcId, (UBYTE)stat, &pdu);
809
810 return (ret);
811 }
812
813 /*
814 |+--------------------------------------------------------------------+
815 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
816 | STATE : code ROUTINE : sBAT_PlusCNMA |
817 +---------------------------------------------------------------------+
818
819 PURPOSE :
820 */
821 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCNMA (T_ACI_DTI_PRC_PSI *src_infos_psi,
822 T_BAT_cmd_send *cmd)
823 {
824 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
825 T_ACI_SM_DATA pdu = {0}, *p_pdu;
826
827 TRACE_FUNCTION ("sBAT_PlusCNMA()");
828 p_pdu = &pdu;
829 if(cmd->params.ptr_set_plus_cnma->v_pdu)
830 {
831 memcpy(pdu.data,cmd->params.ptr_set_plus_cnma->pdu,cmd->params.ptr_set_plus_cnma->c_pdu);
832 pdu.len = cmd->params.ptr_set_plus_cnma->c_pdu ;
833 }
834 else
835 {
836 p_pdu = NULL;
837 }
838 ret = (T_ACI_BAT_RSLT)sAT_PlusCNMAPdu ((T_ACI_CMD_SRC)src_infos_psi->srcId, (SHORT)cmd->params.ptr_set_plus_cnma->n, p_pdu);
839
840 return(ret);
841 }
842
843 /*
844 +--------------------------------------------------------------------+
845 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
846 | STATE : code ROUTINE : sBAT_PlusCMGD |
847 +--------------------------------------------------------------------+
848
849 PURPOSE :
850 */
851 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGD (T_ACI_DTI_PRC_PSI *src_infos_psi,
852 T_BAT_cmd_send *cmd)
853 {
854 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
855 SHORT index=-1;
856 SHORT status = BAT_CMGD_DEL_INDEX;
857
858
859 TRACE_FUNCTION ("sBAT_PlusCMGD()");
860
861 index = cmd->params.ptr_set_plus_cmgd->index;
862 status = cmd->params.ptr_set_plus_cmgd->status;
863
864 if((index > 255 OR index < 0) OR ((status < BAT_CMGD_DEL_INDEX) OR (status > BAT_CMGD_DEL_ALL)))
865 {
866 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
867 return (ACI_BAT_CMPL);
868 }
869
870 if (status > BAT_CMGD_DEL_INDEX)
871 {
872 index = 0;
873 }
874 ret = (T_ACI_BAT_RSLT)sAT_PlusCMGD_Gl((T_ACI_CMD_SRC)src_infos_psi->srcId,(UBYTE)index,status,NULL,NULL);
875
876 return (ret);
877 }
878
879 /*
880 +--------------------------------------------------------------------+
881 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
882 | STATE : code ROUTINE : sBAT_PlusCMGC |
883 +--------------------------------------------------------------------+
884
885 PURPOSE :
886 */
887 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGC (T_ACI_DTI_PRC_PSI *src_infos_psi,
888 T_BAT_cmd_send *cmd)
889 {
890 T_ACI_SM_DATA pdu;
891 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
892 UBYTE sca_len;
893
894 TRACE_FUNCTION ("sBAT_PlusCMGC()");
895
896 sca_len = cmd->params.ptr_set_plus_cmgc->pdu[0];
897 /* The first octet in pdu is length of sca */
898
899 if (sca_len > ((MAX_SMS_ADDR_DIG+1)/2) + 1)
900 {
901 TRACE_ERROR("SCA too long !!!");
902 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
903 return (ACI_BAT_FAIL);
904 }
905 /*
906 pdu_message_octets_length = (cmd->params.ptr_set_plus_cmgc->length-2-sca_len*2)/2;
907
908 if(pdu_message_octets_length NEQ cmd->params.ptr_set_plus_cmgc->length)
909 {
910 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
911 TRACE_EVENT("ERROR: input pdu message length in cmgc do not match the real length!");
912 return (ACI_BAT_FAIL);
913 }
914 length paramter is not present in cmgc struct ??? its there in old ati code
915 */
916 memcpy(pdu.data,cmd->params.ptr_set_plus_cmgc->pdu,cmd->params.ptr_set_plus_cmgc->c_pdu);
917 pdu.len = cmd->params.ptr_set_plus_cmgc->c_pdu ;
918 ret = (T_ACI_BAT_RSLT)sAT_PlusCMGCPdu ( (T_ACI_CMD_SRC)src_infos_psi->srcId, &pdu );
919
920 return (ret);
921 }
922
923 /*
924 +--------------------------------------------------------------------+
925 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
926 | STATE : code ROUTINE : sBAT_PlusCMGL |
927 +--------------------------------------------------------------------+
928
929 PURPOSE :
930 */
931 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCMGL (T_ACI_DTI_PRC_PSI *src_infos_psi,
932 T_BAT_cmd_send *cmd)
933 {
934 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
935
936 TRACE_FUNCTION ("sBAT_PlusCMGL()");
937
938 ret = (T_ACI_BAT_RSLT)sAT_PlusCMGL ( (T_ACI_CMD_SRC)src_infos_psi->srcId, (T_ACI_SMS_STAT)cmd->params.ptr_set_plus_cmgl->stat, 0, SMS_READ_Normal );
939
940 return (ret);
941 }
942
943 /*
944 +--------------------------------------------------------------------+
945 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
946 | STATE : code ROUTINE : sBAT_PercentCMGL |
947 +--------------------------------------------------------------------+
948
949 PURPOSE :
950 */
951 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCMGL (T_ACI_DTI_PRC_PSI *src_infos_psi,
952 T_BAT_cmd_send *cmd)
953 {
954 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
955 #ifdef SMS_PDU_SUPPORT
956 T_ACI_CMGF_MOD mode;
957 #endif
958 CHAR *txtRdMode = NULL;
959 CHAR *txtStat = NULL;
960 USHORT i;
961
962 TRACE_FUNCTION ("sBAT_PercentCMGL()");
963
964 #ifdef SMS_PDU_SUPPORT
965 /*
966 * request current mode
967 */
968 qAT_PlusCMGF((T_ACI_CMD_SRC)src_infos_psi->srcId, &mode);
969 if (mode EQ 0)
970 {
971 /*
972 * %CMGL=[stat],[preview]
973 */
974 smsReadMode = (T_ACI_SMS_READ)cmd->params.ptr_set_percent_cmgl->rdmode;
975 cmglStat = (T_ACI_SMS_STAT)cmd->params.ptr_set_percent_cmgl->stat;
976 if ( ((cmglStat < SMS_STAT_RecUnread OR cmglStat > SMS_STAT_All)
977 AND smsReadMode EQ SMS_READ_NotPresent)
978 OR (smsReadMode < (T_ACI_SMS_READ)SMS_STAT_RecUnread AND smsReadMode > SMS_READ_NotPresent)
979 OR (smsReadMode > SMS_READ_StatusChange))
980 {
981 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
982 return (ACI_BAT_FAIL);
983 }
984 }
985 else
986 #endif
987 {
988 txtStat = (char*)&cmd->params.ptr_set_percent_cmgl->stat;
989 txtRdMode = (char*)&cmd->params.ptr_set_percent_cmgl->rdmode;
990 if (txtStat[0] EQ '\0')
991 {
992 strcpy (txtStat, sms_stat[4].name); /* ALL as default */
993 }
994 i = 0;
995 while ( sms_stat[i].name NEQ NULL AND
996 strcmp ( sms_stat[i].name, txtStat ) NEQ 0 )
997 i++;
998
999 if ( sms_stat[i].name EQ NULL )
1000 {
1001 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_OpNotAllowed);
1002 return (ACI_BAT_FAIL);
1003 }
1004 cmglStat = sms_stat[i].stat;
1005
1006 if (txt_rdmode_to_smsrdmode(txtRdMode) EQ ATI_FAIL)
1007 {
1008 return (ACI_BAT_FAIL);
1009 }
1010 }
1011
1012 ret = (T_ACI_BAT_RSLT)sAT_PercentCMGL ( (T_ACI_CMD_SRC)src_infos_psi->srcId, cmglStat, smsReadMode );
1013
1014 return (ret);
1015 }
1016
1017 /*
1018 +--------------------------------------------------------------------+
1019 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
1020 | STATE : code ROUTINE : sBAT_PlusCNMI |
1021 +--------------------------------------------------------------------+
1022
1023 PURPOSE :
1024 */
1025
1026
1027 GLOBAL T_ACI_BAT_RSLT sBAT_PlusCNMI (T_ACI_DTI_PRC_PSI *src_infos_psi,
1028 T_BAT_cmd_send *cmd)
1029 {
1030 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1031
1032 TRACE_FUNCTION ("sBAT_PlusCNMI()");
1033
1034 ret = (T_ACI_BAT_RSLT)sAT_PlusCNMI ( (T_ACI_CMD_SRC)src_infos_psi->srcId, (T_ACI_CNMI_MT)cmd->params.ptr_set_plus_cnmi->mt, (T_ACI_CNMI_BM)cmd->params.ptr_set_plus_cnmi->bm, (T_ACI_CNMI_DS)cmd->params.ptr_set_plus_cnmi->ds );
1035 switch(ret)
1036 {
1037 case ACI_BAT_CMPL :
1038 if(src_infos_psi->srcId NEQ CMD_SRC_LCL)
1039 {
1040 smsShrdPrm.smsSrcId = (T_ACI_CMD_SRC)src_infos_psi->srcId;
1041 }
1042 /*lint -fallthrough*/
1043 default :
1044 return(ret);
1045 }
1046 }
1047
1048 /*
1049 +--------------------------------------------------------------------+
1050 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
1051 | STATE : code ROUTINE : qBAT_PlusCNMI |
1052 +--------------------------------------------------------------------+
1053
1054 PURPOSE :
1055 */
1056 GLOBAL T_ACI_BAT_RSLT qBAT_PlusCNMI (T_ACI_DTI_PRC_PSI *src_infos_psi,
1057 T_BAT_cmd_send *cmd)
1058 {
1059 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1060 T_BAT_plus_cnmi_mt mt = BAT_CNMI_MT_NOT_PRESENT; /*< 0: 4> (enum=32bit)<->T_BAT_plus_cnmi_mt Indication routing for SMS-DELIVERs */
1061 T_BAT_plus_cnmi_bm bm = BAT_CNMI_BM_NOT_PRESENT; /*< 4: 4> (enum=32bit)<->T_BAT_plus_cnmi_bm Indication routing for CBMs */
1062 T_BAT_plus_cnmi_ds ds = BAT_CNMI_DS_NOT_PRESENT;
1063 T_BAT_cmd_response resp;
1064 T_BAT_res_que_plus_cnmi que_cnmi_buffer;
1065
1066 TRACE_FUNCTION ("qBAT_PlusCNMI()");
1067
1068 resp.ctrl_response = BAT_RES_QUE_PLUS_CNMI;
1069 resp.response.ptr_que_plus_cnmi = &que_cnmi_buffer;
1070
1071 ret = (T_ACI_BAT_RSLT)qAT_PlusCNMI ( (T_ACI_CMD_SRC)src_infos_psi->srcId,(T_ACI_CNMI_MT*)&mt,(T_ACI_CNMI_BM*)&bm,(T_ACI_CNMI_DS*)&ds );
1072 switch(ret)
1073 {
1074 case ACI_BAT_CMPL :
1075 resp.response.ptr_que_plus_cnmi->mt = mt;
1076 resp.response.ptr_que_plus_cnmi->bm = bm;
1077 resp.response.ptr_que_plus_cnmi->ds = ds;
1078 aci_bat_send(src_infos_psi,&resp);
1079 /*lint -fallthrough*/
1080 default :
1081 return (ret);
1082 }
1083 }
1084
1085 #ifdef TI_PS_FF_AT_P_CMD_CPRSM
1086 /*
1087 +--------------------------------------------------------------------+
1088 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
1089 | STATE : code ROUTINE : sBAT_PercentCPRSM |
1090 +--------------------------------------------------------------------+
1091
1092 PURPOSE :
1093 */
1094 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCPRSM (T_ACI_DTI_PRC_PSI *src_infos_psi,
1095 T_BAT_cmd_send *cmd)
1096 {
1097 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1098 //T_ACI_CPRSM_MOD mode = CPRSM_MOD_NotPresent;
1099
1100 TRACE_FUNCTION ("sBAT_PercentCPRSM()");
1101
1102 ret = (T_ACI_BAT_RSLT)sAT_PercentCPRSM((T_ACI_CMD_SRC)src_infos_psi->srcId, (T_ACI_CPRSM_MOD)cmd->params.ptr_set_percent_cprsm->mode);
1103 switch (ret)
1104 {
1105 case (ACI_BAT_CMPL):
1106 case (ACI_BAT_EXCT):
1107 {
1108 break;
1109 }
1110 default:
1111 {
1112 TRACE_EVENT_P1("+CPRSM ERROR: undefined result: %d", ret);
1113 ACI_ERR_DESC(ACI_ERR_CLASS_Cms,CMS_ERR_UnknownErr);
1114 return ACI_BAT_FAIL;
1115 }
1116 }
1117 return(ret);
1118 }
1119
1120 /*
1121 +--------------------------------------------------------------------+
1122 | PROJECT : GSM-F&D (8411) MODULE : ACI_BAT |
1123 | STATE : code ROUTINE : qBAT_PercentCPRSM |
1124 +--------------------------------------------------------------------+
1125
1126 PURPOSE :
1127 */
1128 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCPRSM (T_ACI_DTI_PRC_PSI *src_infos_psi,
1129 T_BAT_cmd_send *cmd)
1130 {
1131 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1132
1133 TRACE_FUNCTION ("qBAT_PercentCPRSM()");
1134 ret = (T_ACI_BAT_RSLT)qAT_PercentCPRSM( (T_ACI_CMD_SRC)src_infos_psi->srcId );
1135 /* Does not fill in the response structure? */
1136 /* ACI does not fill in response mode in qAT_PercentCPRSM?*/
1137
1138 return (ret);
1139 }
1140 #endif /* TI_PS_FF_AT_P_CMD_CPRSM */
1141
1142 #ifdef REL99
1143 GLOBAL T_ACI_BAT_RSLT sBAT_PercentCMGRS (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd)
1144 {
1145 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1146
1147 TRACE_FUNCTION("sBAT_PercentCMGRS()");
1148
1149 if(cmd->params.ptr_set_percent_cmgrs->mode > BAT_CMGRS_MODE_MANUAL_RETRANS)
1150 {
1151 return (ACI_BAT_FAIL);
1152 }
1153
1154 ret = (T_ACI_BAT_RSLT)sAT_PercentCMGRS((T_ACI_CMD_SRC)src_infos_psi->srcId,
1155 (T_ACI_CMGRS_MODE)cmd->params.ptr_set_percent_cmgrs->mode);
1156 return (ret);
1157 }
1158
1159 GLOBAL T_ACI_BAT_RSLT qBAT_PercentCMGRS (T_ACI_DTI_PRC_PSI *src_infos_psi, T_BAT_cmd_send *cmd)
1160 {
1161 T_ACI_BAT_RSLT ret = ACI_BAT_FAIL;
1162 T_BAT_cmd_response resp;
1163 UBYTE auto_rep_flag;
1164 T_BAT_res_que_percent_cmgrs que_cmgrs;
1165
1166 TRACE_FUNCTION ("qBAT_PercentCMGRS()");
1167
1168 resp.ctrl_response = BAT_RES_QUE_PERCENT_CMGRS;
1169 resp.response.ptr_que_percent_cmgrs = &que_cmgrs;
1170
1171 ret = (T_ACI_BAT_RSLT)qAT_PercentCMGRS((T_ACI_CMD_SRC)src_infos_psi->srcId,&auto_rep_flag);
1172
1173 switch(ret)
1174 {
1175 case ACI_BAT_CMPL :
1176 resp.response.ptr_que_percent_cmgrs->mode = (T_BAT_percent_cmgrs_mode)auto_rep_flag;
1177 aci_bat_send(src_infos_psi,&resp);
1178 /*lint -fallthrough*/
1179 default :
1180 return (ret);
1181 }
1182 }
1183 #endif /* REL99 */
1184