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