FreeCalypso > hg > leo2moko-debug
comparison g23m/condat/ms/src/aci/ati_phb.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-F&D (8411) | |
4 | Modul : ATI | |
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 : AT commands related to phonebook. | |
18 +----------------------------------------------------------------------------- | |
19 */ | |
20 | |
21 #ifndef ATI_PHB_C | |
22 #define ATI_PHB_C | |
23 | |
24 #undef DUMMY_ATI_STRINGS | |
25 | |
26 #include "aci_all.h" | |
27 | |
28 #include "aci_lst.h" | |
29 #include "aci_cmh.h" | |
30 #include "ati_cmd.h" | |
31 #include "aci_io.h" | |
32 #include "aci_cmd.h" | |
33 #include "l4_tim.h" | |
34 #include "phb.h" | |
35 | |
36 #ifdef FAX_AND_DATA | |
37 #include "aci_fd.h" | |
38 #endif /* of #ifdef FAX_AND_DATA */ | |
39 | |
40 #include "aci_mem.h" | |
41 #include "psa.h" | |
42 #include "cmh.h" | |
43 #include "pcm.h" | |
44 #include "aci_prs.h" | |
45 | |
46 #include "ati_int.h" | |
47 | |
48 #ifdef FF_ATI_BAT | |
49 | |
50 #include "typedefs.h" | |
51 #include "gdd.h" | |
52 #include "bat.h" | |
53 | |
54 #include "ati_bat.h" | |
55 | |
56 #endif /* FF_ATI_BAT */ | |
57 | |
58 /* | |
59 +--------------------------------------------------------------------+ | |
60 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
61 | STATE : code ROUTINE : atPlusCPBS | | |
62 +--------------------------------------------------------------------+ | |
63 | |
64 PURPOSE : +CPBS (Select Phonebook memory storage) | |
65 */ | |
66 | |
67 GLOBAL T_ATI_RSLT setatPlusCPBS(char *cl, UBYTE srcId) | |
68 { | |
69 char *me="+CPBS: "; | |
70 T_ACI_RETURN ret = AT_FAIL; | |
71 T_ACI_PB_STOR stor = PB_STOR_NotPresent; | |
72 CHAR pin2[MAX_PWD_LENGTH] = {0}; | |
73 CHAR sto_str[3]={0}; | |
74 SHORT i; | |
75 | |
76 TRACE_FUNCTION("setatPlusCPBS()"); | |
77 | |
78 cl = parse(cl,"sn",(LONG)3,sto_str,(LONG)MAX_PWD_LENGTH,pin2); | |
79 if(!cl OR *sto_str EQ '\0') | |
80 { | |
81 cmdCmeError(CME_ERR_OpNotAllow); | |
82 return ATI_FAIL; | |
83 } | |
84 strupper(sto_str); | |
85 for(i=0;phb_mem_names[i].name NEQ 0;i++) | |
86 { | |
87 if (!strcmp(phb_mem_names[i].name,sto_str) ) | |
88 { | |
89 stor=phb_mem_names[i].stor; | |
90 break; | |
91 } | |
92 } | |
93 if(phb_mem_names[i].name EQ 0) | |
94 { | |
95 cmdCmeError(CME_ERR_OpNotAllow); | |
96 return ATI_FAIL; | |
97 } | |
98 #ifdef FF_ATI_BAT | |
99 { | |
100 T_BAT_cmd_send cmd; | |
101 T_BAT_cmd_set_plus_cpbs my_bat_set_plus_cpbs = {0}; | |
102 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
103 | |
104 TRACE_FUNCTION("setatPlusCPBS() calls bat_send() <=== as APPLICATION"); | |
105 | |
106 cmd.ctrl_params = BAT_CMD_SET_PLUS_CPBS; | |
107 cmd.params.ptr_set_plus_cpbs = &my_bat_set_plus_cpbs; | |
108 | |
109 my_bat_set_plus_cpbs.storage = (T_BAT_storage)stor; | |
110 | |
111 src_params->curAtCmd = AT_CMD_CPBS; | |
112 srcId_cb = srcId; | |
113 bat_send(ati_bat_get_client(srcId), &cmd); | |
114 srcId_cb = srcId; | |
115 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
116 } | |
117 #else /* no FF_ATI_BAT */ | |
118 ret = sAT_PlusCPBS(srcId,stor,pin2); | |
119 if (ret EQ AT_FAIL) | |
120 { | |
121 cmdCmeError(CME_ERR_Unknown); | |
122 } | |
123 | |
124 return (map_aci_2_ati_rslt(ret)); | |
125 #endif /* no FF_ATI_BAT */ | |
126 } | |
127 | |
128 | |
129 GLOBAL T_ATI_RSLT queatPlusCPBS(char *cl, UBYTE srcId) | |
130 { | |
131 #ifdef FF_ATI_BAT | |
132 { | |
133 T_BAT_cmd_send cmd; | |
134 T_BAT_no_parameter dummy; | |
135 | |
136 TRACE_FUNCTION("queatPlusCPBS() calls bat_send() <=== as APPLICATION"); | |
137 | |
138 cmd.ctrl_params = BAT_CMD_QUE_PLUS_CPBS; | |
139 dummy.bat_dummy = 0xFF; | |
140 cmd.params.ptr_que_plus_cpbs = &dummy; | |
141 bat_send(ati_bat_get_client(srcId), &cmd); | |
142 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
143 } | |
144 #else /* no FF_ATI_BAT */ | |
145 | |
146 char *me="+CPBS: "; | |
147 T_ACI_RETURN ret = AT_FAIL; | |
148 CHAR sto_str[3]={0}; | |
149 T_ACI_PB_STOR stor; | |
150 SHORT used; | |
151 SHORT total; | |
152 SHORT i; | |
153 | |
154 TRACE_FUNCTION("queatPlusCPBS()"); | |
155 | |
156 ret = qAT_PlusCPBS(srcId,&stor,&used,&total); | |
157 if (ret EQ AT_CMPL) | |
158 { | |
159 for(i=0;phb_mem_names[i].name NEQ NULL;i++) | |
160 { | |
161 if (phb_mem_names[i].stor EQ stor) | |
162 { | |
163 sprintf(g_sa,"+CPBS: \"%s\",%d,%d",phb_mem_names[i].name,used,total); | |
164 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
165 break; | |
166 } | |
167 } | |
168 } | |
169 else if (ret EQ AT_FAIL) | |
170 { | |
171 cmdCmeError(CME_ERR_Unknown); | |
172 } | |
173 return (map_aci_2_ati_rslt(ret)); | |
174 #endif /* no FF_ATI_BAT */ | |
175 } | |
176 | |
177 /* | |
178 +--------------------------------------------------------------------+ | |
179 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
180 | STATE : code ROUTINE : queatPercentCPBS | | |
181 +--------------------------------------------------------------------+ | |
182 | |
183 PURPOSE : %CPBS (Phonebook memory storage) | |
184 */ | |
185 GLOBAL T_ATI_RSLT queatPercentCPBS(char *cl, UBYTE srcId) | |
186 { | |
187 #ifdef FF_ATI_BAT | |
188 | |
189 T_BAT_cmd_send cmd; | |
190 T_BAT_no_parameter dummy; | |
191 | |
192 TRACE_FUNCTION("queatPercentCPBS() calls bat_send() <=== as APPLICATION"); | |
193 | |
194 cmd.ctrl_params=BAT_CMD_QUE_PERCENT_CPBS; | |
195 dummy.bat_dummy=0xFF; | |
196 cmd.params.ptr_que_percent_cpbs=&dummy; | |
197 | |
198 bat_send(ati_bat_get_client(srcId),&cmd); | |
199 | |
200 /* | |
201 * Return value indicates executing, the response will come via | |
202 * the callback function. | |
203 */ | |
204 return(ATI_EXCT); | |
205 | |
206 #else /* FF_ATI_BAT */ | |
207 | |
208 char *me="%CPBS: "; | |
209 T_ACI_RETURN ret; | |
210 T_ACI_PB_STOR stor; | |
211 SHORT used,total,first,i; | |
212 | |
213 TRACE_FUNCTION("queatPercentCPBS()"); | |
214 | |
215 /* | |
216 * Call the corresponding ACI function. | |
217 */ | |
218 ret=qAT_PercentCPBS(srcId,&stor,&used,&total,&first); | |
219 | |
220 /* | |
221 * If the query completes successfully, build and send the | |
222 * answer. | |
223 */ | |
224 if (ret EQ AT_CMPL) | |
225 { | |
226 /* | |
227 * Run through the list of names to get the name of the | |
228 * currently selected phonebook. | |
229 */ | |
230 for(i=0;phb_mem_names[i].name NEQ NULL;i++) | |
231 { | |
232 if (phb_mem_names[i].stor EQ stor) | |
233 { | |
234 sprintf(g_sa,"%s\"%s\",%d,%d,%d",me,phb_mem_names[i].name,used,total,first); | |
235 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
236 break; | |
237 } | |
238 } | |
239 } | |
240 | |
241 return (map_aci_2_ati_rslt(ret)); | |
242 | |
243 #endif /* FF_ATI_BAT */ | |
244 } | |
245 | |
246 /* | |
247 +--------------------------------------------------------------------+ | |
248 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
249 | STATE : code ROUTINE : atPlusCPBW | | |
250 +--------------------------------------------------------------------+ | |
251 | |
252 PURPOSE : +CPBW (Write Phonebook entry) | |
253 */ | |
254 GLOBAL T_ATI_RSLT setatPlusCPBW(char *cl, UBYTE srcId) | |
255 { | |
256 #ifndef TI_PS_FFS_PHB | |
257 UBYTE pb_status; | |
258 #endif | |
259 char *me = "+CPBW: "; | |
260 T_ACI_RETURN ret = AT_FAIL; | |
261 CHAR *p_number = NULL; | |
262 CHAR text [MAX_ALPHA_LEN * 4] = {0x00}; | |
263 USHORT lenText = 0; | |
264 T_ACI_TOA *p_toa = NULL, | |
265 type; | |
266 | |
267 SHORT toa_val = 0, | |
268 index = -1; | |
269 #ifndef FF_ATI_BAT | |
270 T_ACI_PB_TEXT *p_text = NULL; | |
271 T_ACI_PB_TEXT cvtdText; | |
272 USHORT lenCvtd = 0; | |
273 T_ACI_VP_ABS dmyDateTime; | |
274 #endif /* !FF_ATI_BAT */ | |
275 | |
276 T_ACI_PB_STOR stor; | |
277 SHORT used; | |
278 SHORT total; | |
279 CHAR numBuf[MAX_PHB_NUM_LEN]; | |
280 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
281 | |
282 memset( numBuf, 0, sizeof(numBuf)); | |
283 | |
284 TRACE_FUNCTION("setatPlusCPBW()"); | |
285 | |
286 | |
287 ret = qAT_PlusCPBS(srcId,&stor,&used,&total); | |
288 TRACE_EVENT_P1("Current phonebook storage: %d", stor); | |
289 | |
290 #ifdef TI_PS_FFS_PHB | |
291 if (ret EQ AT_FAIL) | |
292 { | |
293 cmdCmeError(CME_ERR_Unknown); | |
294 return ATI_FAIL; | |
295 } | |
296 #endif | |
297 | |
298 if (ret EQ AT_CMPL AND | |
299 stor EQ PB_STOR_Ed) | |
300 { | |
301 cmdCmeError(CME_ERR_OpNotAllow); | |
302 return ATI_FAIL; | |
303 } | |
304 | |
305 if ( ati_user_output_cfg[srcId].cscsChset EQ CSCS_CHSET_Gsm) | |
306 { | |
307 cl=parse(cl,"rsrz", | |
308 &index, | |
309 (LONG)MAX_PHB_NUM_LEN, | |
310 numBuf, | |
311 &toa_val, | |
312 (LONG)MAX_ALPHA_LEN, | |
313 strlen(cl), | |
314 cl, | |
315 &lenText, | |
316 text); | |
317 } | |
318 else | |
319 { | |
320 cl=parse(cl,"rsrz", | |
321 &index, | |
322 (LONG)MAX_PHB_NUM_LEN, | |
323 numBuf, | |
324 &toa_val, | |
325 (LONG)MAX_ALPHA_LEN * 4, | |
326 strlen(cl), | |
327 cl, | |
328 &lenText, | |
329 text); | |
330 } | |
331 | |
332 if(!cl) | |
333 { | |
334 TRACE_ERROR("ERROR: parsing failed !!!"); | |
335 index = get_parse_index(); /* get the problematic component */ | |
336 switch (index) | |
337 { | |
338 case 2: /* component 2 is the number */ | |
339 cmdCmeError(CME_ERR_DialToLong); | |
340 break; | |
341 case 4: /* component 4 is the alpha tag */ | |
342 cmdCmeError(CME_ERR_TxtToLong); | |
343 break; | |
344 default: | |
345 cmdCmeError(CME_ERR_OpNotAllow); | |
346 break; | |
347 } | |
348 return ATI_FAIL; | |
349 } | |
350 | |
351 #ifndef TI_PS_FFS_PHB | |
352 /* If the phonebook status is not PHB_READY then SIM BUSY error is indicated to the user.*/ | |
353 pb_status_req(&pb_status); /* get phone book status */ | |
354 | |
355 TRACE_EVENT_P1("Current phonebook status: %d", pb_status); | |
356 if (pb_status NEQ PHB_READY) | |
357 { | |
358 if(pb_status EQ PHB_BUSY) | |
359 { | |
360 TRACE_EVENT("Error: Phonebook is busy accessing the SIM"); | |
361 cmdCmeError(CME_ERR_SimBusy); | |
362 } | |
363 else if(pb_status EQ PHB_UNKNOWN) | |
364 { | |
365 TRACE_EVENT("Error: Phonebook status unknown"); | |
366 cmdCmeError(CME_ERR_Unknown); | |
367 } | |
368 return ATI_FAIL; | |
369 } | |
370 #endif /* TI_PS_FFS_PHB */ | |
371 | |
372 if( index > total) /* phonebook index is greater than max. */ | |
373 { /* possible index of SIM */ | |
374 TRACE_EVENT("Error: phonebook index is greater than max possible index of SIM"); | |
375 cmdCmeError(CME_ERR_InvIdx); | |
376 return ATI_FAIL; | |
377 } | |
378 | |
379 if (toa_val > 0) | |
380 { | |
381 type=toa_demerge(toa_val); | |
382 p_toa=&type; | |
383 } | |
384 else | |
385 p_toa=NULL; | |
386 | |
387 if (numBuf[0] EQ '\0') | |
388 p_number=NULL; | |
389 else | |
390 p_number=numBuf; | |
391 | |
392 #ifdef FF_ATI_BAT | |
393 { | |
394 T_BAT_cmd_send cmd; | |
395 T_BAT_cmd_set_plus_cpbw my_bat_set_plus_cpbw = {0}; | |
396 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
397 | |
398 TRACE_FUNCTION("setatPlusCPBW() calls bat_send() <=== as APPLICATION"); | |
399 | |
400 cmd.ctrl_params = BAT_CMD_SET_PLUS_CPBW; | |
401 cmd.params.ptr_set_plus_cpbw = &my_bat_set_plus_cpbw; | |
402 | |
403 my_bat_set_plus_cpbw.index = (S16)index; | |
404 | |
405 /* Load the phone number in BAT struct - if there is one */ | |
406 if (p_number) | |
407 { | |
408 if (strlen(p_number)>BAT_MAX_CPBW_NUMBER_LEN) | |
409 { | |
410 /* | |
411 * If the number is too big for the BAT structure we can't do | |
412 * anything meaningful, so get out now. | |
413 */ | |
414 cmdCmeError(CME_ERR_Unknown); | |
415 return ATI_FAIL; | |
416 } | |
417 | |
418 my_bat_set_plus_cpbw.c_number = strlen(p_number); | |
419 my_bat_set_plus_cpbw.v_number = TRUE; | |
420 memcpy(my_bat_set_plus_cpbw.number, p_number,BAT_MAX_CPBW_NUMBER_LEN); | |
421 } | |
422 else | |
423 { | |
424 my_bat_set_plus_cpbw.v_number = FALSE; | |
425 } | |
426 | |
427 /* | |
428 * Load the associated text in BAT struct - if there is any | |
429 */ | |
430 if ((lenText EQ 0) AND (p_number EQ NULL)) | |
431 { | |
432 my_bat_set_plus_cpbw.v_text = FALSE; | |
433 } | |
434 else | |
435 { | |
436 /* | |
437 * If the associated text is too big for the BAT structure it | |
438 * will be truncated. | |
439 */ | |
440 if (lenText>BAT_MAX_CPBW_TEXT_LEN) | |
441 my_bat_set_plus_cpbw.c_text = BAT_MAX_CPBW_TEXT_LEN; | |
442 else | |
443 my_bat_set_plus_cpbw.c_text = (U8)lenText; | |
444 | |
445 my_bat_set_plus_cpbw.v_text = TRUE; | |
446 memcpy(my_bat_set_plus_cpbw.text, text, BAT_MAX_CPBW_TEXT_LEN); | |
447 } | |
448 | |
449 /* Load type as string input */ | |
450 if (p_toa) | |
451 my_bat_set_plus_cpbw.type = (S16)toa_val; | |
452 else | |
453 my_bat_set_plus_cpbw.type = (S16)-1; | |
454 | |
455 src_params->curAtCmd = AT_CMD_CPBW; | |
456 srcId_cb = srcId; | |
457 bat_send(ati_bat_get_client(srcId), &cmd); | |
458 | |
459 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
460 } | |
461 | |
462 #else /* no FF_ATI_BAT */ | |
463 | |
464 if( lenText NEQ 0 ) | |
465 { | |
466 srcId_cb = srcId; | |
467 utl_chsetToSim ((UBYTE*)text, lenText, (UBYTE*)cvtdText.data, | |
468 &lenCvtd, GSM_ALPHA_Def); | |
469 } | |
470 cvtdText.cs = CS_Sim; | |
471 | |
472 /* when the text and the number are both empty, set p_text to NULL */ | |
473 if (lenCvtd EQ 0 AND p_number EQ NULL) | |
474 { | |
475 p_text = NULL; | |
476 } | |
477 else | |
478 { | |
479 p_text = &cvtdText; | |
480 cvtdText.len = (UBYTE)lenCvtd; | |
481 } | |
482 | |
483 ret = sAT_PlusCPBW(srcId, index, p_number, p_toa, p_text, &dmyDateTime); | |
484 switch (ret) | |
485 { | |
486 case AT_FAIL: | |
487 switch (ACI_ERR_DESC_CLASS( aciErrDesc )) | |
488 { | |
489 case ACI_ERR_CLASS_Cme: | |
490 cmdCmeError( ACI_ERR_DESC_NR( aciErrDesc ) ); | |
491 break; | |
492 case ACI_ERR_CLASS_Cms: | |
493 case ACI_ERR_CLASS_Ceer: | |
494 case ACI_ERR_CLASS_Ext: | |
495 default: | |
496 cmdCmeError(CME_ERR_Unknown); | |
497 break; | |
498 } | |
499 break; | |
500 case AT_EXCT: | |
501 src_params->curAtCmd = AT_CMD_CPBW; | |
502 break; | |
503 | |
504 case AT_BUSY: | |
505 cmdCmeError(CME_ERR_SimBusy); | |
506 break; | |
507 } | |
508 return (map_aci_2_ati_rslt(ret)); | |
509 #endif /* no FF_ATI_BAT */ | |
510 } | |
511 | |
512 GLOBAL T_ATI_RSLT tesatPlusCPBW(char *cl, UBYTE srcId) | |
513 { | |
514 #ifdef FF_ATI_BAT | |
515 | |
516 T_BAT_cmd_send cmd; | |
517 T_BAT_no_parameter dummy; | |
518 | |
519 TRACE_FUNCTION("queatPlusCPBW() calls bat_send() <=== as APPLICATION"); | |
520 | |
521 cmd.ctrl_params = BAT_CMD_TST_PLUS_CPBW; | |
522 dummy.bat_dummy = 0xFF; | |
523 cmd.params.ptr_tst_plus_cpbw = &dummy; | |
524 | |
525 bat_send(ati_bat_get_client(srcId), &cmd); | |
526 | |
527 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
528 | |
529 #else /* no FF_ATI_BAT */ | |
530 | |
531 char *me = "+CPBW: "; | |
532 T_ACI_RETURN ret = AT_FAIL; | |
533 CHAR *p_number = NULL; | |
534 CHAR text [MAX_ALPHA_LEN] = {0x00}; | |
535 USHORT lenText = 0; | |
536 USHORT lenCvtd = 0; | |
537 T_ACI_PB_TEXT *p_text = NULL; | |
538 T_ACI_TOA *p_toa = NULL; | |
539 | |
540 SHORT toa_val = 0, | |
541 index = -1, | |
542 first_idx, | |
543 last_idx; | |
544 UBYTE nlength, | |
545 tlength; | |
546 CHAR numBuf[MAX_PHB_NUM_LEN]; | |
547 | |
548 memset( numBuf, 0, sizeof(numBuf)); | |
549 | |
550 TRACE_FUNCTION("tesatPlusCPBW()"); | |
551 | |
552 ret = tAT_PlusCPBW(srcId,&first_idx,&last_idx,&nlength,&tlength); | |
553 if(ret EQ AT_CMPL) | |
554 { | |
555 sprintf(g_sa,"%s(%d-%d),%d,%s,%d",me,first_idx,last_idx,nlength,"(128-201)",tlength); | |
556 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
557 } | |
558 else | |
559 { | |
560 cmdCmeError(CME_ERR_Unknown); | |
561 } | |
562 return (map_aci_2_ati_rslt(ret)); | |
563 #endif /* no FF_ATI_BAT */ | |
564 } | |
565 | |
566 /* | |
567 +--------------------------------------------------------------------+ | |
568 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
569 | STATE : code ROUTINE : atPlusCPBR | | |
570 +--------------------------------------------------------------------+ | |
571 | |
572 PURPOSE : +CPBR (Read Phonebook Entry) | |
573 */ | |
574 | |
575 GLOBAL T_ATI_RSLT setatPlusCPBR(char *cl, UBYTE srcId) | |
576 { | |
577 T_ACI_RETURN ret = AT_FAIL; | |
578 CHAR cvtdText[4*MAX_ALPHA_LEN] = {0x00}; /* need enough space for UCS2 strings */ | |
579 USHORT lenCvtdText = 0; | |
580 USHORT pos = 0; | |
581 SHORT toa_val = 0, | |
582 index1 = ACI_NumParmNotPresent, | |
583 index2 = ACI_NumParmNotPresent, | |
584 last_idx = ACI_NumParmNotPresent; | |
585 #ifndef FF_ATI_BAT | |
586 SHORT i; | |
587 T_ACI_PB_LST pblst; | |
588 UBYTE type; | |
589 #endif /* !FF_ATI_BAT */ | |
590 | |
591 TRACE_FUNCTION("setatPlusCPBR()"); | |
592 | |
593 cl = parse(cl,"rr",&index1,&index2); | |
594 if(!cl OR index1 > MAX_PB_INDEX OR index1 < 0 OR index2 > MAX_PB_INDEX) | |
595 { | |
596 cmdCmeError(CME_ERR_OpNotAllow); | |
597 return ATI_FAIL; | |
598 } | |
599 if(index2 EQ ACI_NumParmNotPresent) | |
600 { | |
601 index2=index1; | |
602 } | |
603 | |
604 #ifdef FF_ATI_BAT | |
605 | |
606 if (last_idx EQ ACI_NumParmNotPresent OR last_idx < index2) | |
607 { | |
608 T_BAT_cmd_send cmd; | |
609 T_BAT_cmd_set_plus_cpbr my_bat_set_plus_cpbr = {0}; | |
610 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
611 | |
612 TRACE_FUNCTION("setatPlusCPBR() calls bat_send() <=== as APPLICATION"); | |
613 | |
614 cmd.ctrl_params = BAT_CMD_SET_PLUS_CPBR; | |
615 cmd.params.ptr_set_plus_cpbr = &my_bat_set_plus_cpbr; | |
616 | |
617 my_bat_set_plus_cpbr.index1 = (U8)index1; | |
618 my_bat_set_plus_cpbr.index2 = (S16)index2; | |
619 | |
620 src_params->curAtCmd = AT_CMD_CPBR; | |
621 srcId_cb = srcId; | |
622 bat_send(ati_bat_get_client(srcId), &cmd); | |
623 | |
624 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
625 } | |
626 #else /* no FF_ATI_BAT */ | |
627 | |
628 while (last_idx EQ ACI_NumParmNotPresent OR last_idx < index2) | |
629 { | |
630 ret = sAT_PlusCPBR(srcId,index1,index2,&last_idx,&pblst[0]); | |
631 if (ret EQ AT_CMPL) | |
632 { | |
633 for ( i = 0; | |
634 i < MAX_PB_ENTR AND pblst[i].index NEQ ACI_NumParmNotPresent; | |
635 i++ ) | |
636 { | |
637 type = toa_merge(pblst[i].type); | |
638 | |
639 pos=sprintf(g_sa,"+CPBR: %d,\"%s\",%d,", | |
640 pblst[i].index, | |
641 pblst[i].number, | |
642 type); | |
643 | |
644 srcId_cb = srcId; | |
645 utl_chsetFromSim((UBYTE*)pblst[i].text.data, | |
646 pblst[i].text.len, | |
647 (UBYTE*)cvtdText, | |
648 sizeof(cvtdText), | |
649 &lenCvtdText, | |
650 GSM_ALPHA_Def); | |
651 | |
652 pos+=sprints(g_sa+pos,cvtdText,lenCvtdText); | |
653 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
654 } | |
655 index1=last_idx+1; | |
656 } | |
657 else | |
658 { | |
659 cmdCmeError(CME_ERR_Unknown); | |
660 return ATI_FAIL; | |
661 } | |
662 } | |
663 #endif /* no FF_ATI_BAT */ | |
664 | |
665 return (map_aci_2_ati_rslt(ret)); | |
666 } | |
667 | |
668 GLOBAL T_ATI_RSLT tesatPlusCPBR(char *cl, UBYTE srcId) | |
669 { | |
670 #ifdef FF_ATI_BAT | |
671 | |
672 T_BAT_cmd_send cmd; | |
673 T_BAT_no_parameter dummy; | |
674 | |
675 TRACE_FUNCTION("tesatPlusCPBR() calls bat_send() <=== as APPLICATION"); | |
676 | |
677 cmd.ctrl_params = BAT_CMD_TST_PLUS_CPBR; | |
678 dummy.bat_dummy = 0xFF; | |
679 cmd.params.ptr_tst_plus_cpbr = &dummy; | |
680 | |
681 bat_send(ati_bat_get_client(srcId), &cmd); | |
682 | |
683 return ATI_EXCT; /* executing, because response is passed by callback function */ | |
684 | |
685 #else /* no FF_ATI_BAT */ | |
686 | |
687 T_ACI_RETURN ret = AT_FAIL; | |
688 SHORT first_idx, | |
689 last_idx = ACI_NumParmNotPresent; | |
690 UBYTE nlength, | |
691 tlength; | |
692 | |
693 TRACE_FUNCTION("tesatPlusCPBR()"); | |
694 | |
695 ret = tAT_PlusCPBR(srcId,&first_idx,&last_idx,&nlength,&tlength); | |
696 if(ret EQ AT_CMPL) | |
697 { | |
698 sprintf(g_sa,"+CPBR: (%d-%d),%d,%d",first_idx,last_idx,nlength,tlength); | |
699 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
700 } | |
701 else | |
702 { | |
703 cmdCmeError(CME_ERR_Unknown); | |
704 } | |
705 return (map_aci_2_ati_rslt(ret)); | |
706 | |
707 #endif /* no FF_ATI_BAT */ | |
708 } | |
709 | |
710 /* | |
711 +--------------------------------------------------------------------+ | |
712 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
713 | STATE : code ROUTINE : atPlusCPBF | | |
714 +--------------------------------------------------------------------+ | |
715 | |
716 PURPOSE : +CPBF (Find Text in Phonebook) | |
717 */ | |
718 | |
719 GLOBAL T_ATI_RSLT setatPlusCPBF(char *cl, UBYTE srcId) | |
720 { | |
721 #ifndef FF_ATI_BAT | |
722 T_ACI_RETURN ret = AT_FAIL; | |
723 CHAR cvtdFindstr[MAX_ALPHA_LEN] = {0x00}; | |
724 USHORT lenCvtdFindstr = 0; | |
725 CHAR cvtdText [2*MAX_ALPHA_LEN] = {0x00}; | |
726 USHORT lenCvtdText = 0; | |
727 USHORT pos = 0; | |
728 | |
729 SHORT toa_val = 0, | |
730 i, | |
731 j, | |
732 index1 = -1; | |
733 SHORT found; | |
734 T_ACI_PB_LST pblst; | |
735 UBYTE type; | |
736 SHORT Size_Max; | |
737 SHORT extra_char; | |
738 | |
739 #ifdef NO_ASCIIZ | |
740 T_ACI_PB_TEXT pbText; | |
741 #endif /* #ifdef NO_ASCIIZ */ | |
742 | |
743 #endif /* FF_ATI_BAT */ | |
744 | |
745 CHAR findstr [MAX_ALPHA_LEN] = {0x00}; | |
746 USHORT lenFindstr = 0; | |
747 | |
748 TRACE_FUNCTION("setatPlusCPBF()"); | |
749 | |
750 cl=parse(cl,"z", | |
751 (LONG)MAX_ALPHA_LEN, | |
752 strlen(cl), | |
753 cl, | |
754 &lenFindstr, | |
755 findstr); | |
756 if(!cl OR lenFindstr EQ 0) | |
757 { | |
758 cmdCmeError(CME_ERR_OpNotAllow); | |
759 return ATI_FAIL; | |
760 } | |
761 srcId_cb = srcId; | |
762 | |
763 #ifdef FF_ATI_BAT | |
764 { | |
765 T_BAT_cmd_send cmd; | |
766 T_BAT_cmd_set_plus_cpbf cpbf; | |
767 | |
768 cmd.ctrl_params = BAT_CMD_SET_PLUS_CPBF; | |
769 cmd.params.ptr_set_plus_cpbf=&cpbf; | |
770 | |
771 /* | |
772 * Check that the string isn't too long for the BAT message. | |
773 */ | |
774 if (lenFindstr>BAT_MAX_CPBF_FIND_TEXT_LEN) | |
775 { | |
776 cmdCmeError(CME_ERR_Unknown); | |
777 return ATI_FAIL; | |
778 } | |
779 | |
780 cpbf.c_findtext=(U8)lenFindstr; | |
781 memcpy(cpbf.findtext,findstr,lenFindstr); | |
782 | |
783 bat_send(ati_bat_get_client(srcId), &cmd); | |
784 return(ATI_EXCT); | |
785 } | |
786 #else /* no FF_ATI_BAT */ | |
787 | |
788 #ifdef NO_ASCIIZ | |
789 utl_chsetToSim ( (UBYTE*)findstr, | |
790 lenFindstr, | |
791 pbText.data, | |
792 &lenCvtdFindstr, | |
793 GSM_ALPHA_Def ); | |
794 | |
795 pbText.cs = CS_Sim; | |
796 pbText.len = (UBYTE)lenCvtdFindstr; | |
797 | |
798 ret = sAT_PlusCPBF( srcId, &pbText, CPBF_MOD_NewSearch, | |
799 &found, &pblst[0] ); | |
800 #else /* #ifdef NO_ASCIIZ */ | |
801 utl_chsetToGsm ( (UBYTE*)findstr, | |
802 lenFindstr, | |
803 (UBYTE*)cvtdFindstr, | |
804 &lenCvtdFindstr, | |
805 GSM_ALPHA_Int ); | |
806 | |
807 ret = sAT_PlusCPBF( srcId, cvtdFindstr, CPBF_MOD_NewSearch, | |
808 &found, &pblst[0] ); | |
809 #endif /* #ifdef NO_ASCIIZ */ | |
810 if (ret EQ AT_CMPL) | |
811 { | |
812 extra_char = 8; | |
813 Size_Max = KEY + SHORT_LTH + MAX_PHB_NUM_LEN + | |
814 BYTE_LTH + 2*MAX_ALPHA_LEN + extra_char; | |
815 | |
816 i=0; | |
817 while(i<MAX_PB_ENTR AND i < found) | |
818 { | |
819 type = toa_merge(pblst[i].type); | |
820 | |
821 pos=sprintf(g_sa,"+CPBF: %d,\"%s\",%d,", | |
822 pblst[i].index, | |
823 pblst[i].number, | |
824 type); | |
825 utl_chsetFromSim((UBYTE*)pblst[i].text.data, | |
826 pblst[i].text.len, | |
827 (UBYTE*)cvtdText, | |
828 sizeof(cvtdText), | |
829 &lenCvtdText, | |
830 GSM_ALPHA_Def); | |
831 pos+=sprints(g_sa+pos,cvtdText,lenCvtdText); | |
832 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
833 i++; | |
834 } | |
835 if (found > MAX_PB_ENTR) | |
836 { | |
837 while(i < found) | |
838 { | |
839 #ifdef NO_ASCIIZ | |
840 ret = sAT_PlusCPBF( srcId, &pbText, | |
841 CPBF_MOD_NextSearch, &found, &pblst[0] ); | |
842 #else /* #ifdef NO_ASCIIZ */ | |
843 ret = sAT_PlusCPBF( srcId, cvtdFindstr, | |
844 CPBF_MOD_NextSearch, &found, &pblst[0] ); | |
845 #endif /* #ifdef NO_ASCIIZ */ | |
846 if (ret EQ AT_CMPL) | |
847 { | |
848 for(j=0;j < MAX_PB_ENTR AND i < found;j++) | |
849 { | |
850 type = toa_merge(pblst[j].type); | |
851 | |
852 pos=sprintf(g_sa,"+CPBF: %d,\"%s\",%d,", | |
853 pblst[j].index, | |
854 pblst[j].number, | |
855 type); | |
856 utl_chsetFromGsm((UBYTE*)pblst[j].text.data, | |
857 pblst[j].text.len, | |
858 (UBYTE*)cvtdText, | |
859 sizeof(cvtdText), | |
860 &lenCvtdText, | |
861 GSM_ALPHA_Def); | |
862 pos+=sprints(g_sa+pos,cvtdText,lenCvtdText); | |
863 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
864 i++; | |
865 } | |
866 } | |
867 else | |
868 { | |
869 i = found; /* Ensure at least termination of loop */ | |
870 } | |
871 } | |
872 } | |
873 } | |
874 else | |
875 { | |
876 cmdCmeError(CME_ERR_Unknown); | |
877 } | |
878 return (map_aci_2_ati_rslt(ret)); | |
879 | |
880 #endif /* no FF_ATI_BAT */ | |
881 } | |
882 | |
883 GLOBAL T_ATI_RSLT tesatPlusCPBF(char *cl, UBYTE srcId) | |
884 { | |
885 #ifndef FF_ATI_BAT | |
886 T_ACI_RETURN ret = AT_FAIL; | |
887 UBYTE nlength, | |
888 tlength; | |
889 #endif | |
890 | |
891 TRACE_FUNCTION("tesatPlusCPBF()"); | |
892 | |
893 #ifdef FF_ATI_BAT | |
894 { | |
895 T_BAT_cmd_send cmd; | |
896 T_BAT_no_parameter dummy; | |
897 | |
898 cmd.ctrl_params = BAT_CMD_TST_PLUS_CPBF; | |
899 dummy.bat_dummy = 0xFF; | |
900 cmd.params.ptr_tst_plus_cpbf = &dummy; | |
901 bat_send(ati_bat_get_client(srcId), &cmd); | |
902 return(ATI_EXCT); | |
903 } | |
904 #else /* no FF_ATI_BAT */ | |
905 | |
906 ret = tAT_PlusCPBF(srcId,&nlength,&tlength); | |
907 if(ret EQ AT_CMPL) | |
908 { | |
909 resp_disp(srcId, cl,"bb",&nlength,&tlength); | |
910 } | |
911 else | |
912 { | |
913 cmdCmeError(CME_ERR_Unknown); | |
914 } | |
915 return (map_aci_2_ati_rslt(ret)); | |
916 | |
917 #endif /* no FF_ATI_BAT */ | |
918 } | |
919 | |
920 /* | |
921 +--------------------------------------------------------------------+ | |
922 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
923 | STATE : code ROUTINE : atPlusCSVM | | |
924 +--------------------------------------------------------------------+ | |
925 | |
926 PURPOSE : +CSVM command (Set Voice Mail Number ) | |
927 */ | |
928 | |
929 GLOBAL T_ATI_RSLT setatPlusCSVM (char *cl, UBYTE srcId) | |
930 { | |
931 | |
932 T_ACI_CSVM_MOD mode = CSVM_MOD_NotPresent; | |
933 T_ACI_RETURN ret = AT_FAIL; | |
934 T_ACI_TOA type; | |
935 SHORT toa_val=0; | |
936 CHAR numBuf[MAX_CC_ORIG_NUM_LEN]; | |
937 | |
938 TRACE_FUNCTION("setatPlusCSVM()"); | |
939 | |
940 memset( numBuf, 0, sizeof(numBuf)); | |
941 | |
942 cl=parse(cl,"dsr",&mode,(LONG)MAX_CC_ORIG_NUM_LEN, | |
943 numBuf,&toa_val); | |
944 | |
945 if(!cl) | |
946 { | |
947 cmdCmeError(CME_ERR_OpNotAllow); | |
948 return ATI_FAIL; | |
949 } | |
950 if ( mode EQ CSVM_MOD_Enable AND | |
951 numBuf[0] EQ '\0' OR | |
952 toa_val < 0) | |
953 { | |
954 cmdCmeError(CME_ERR_OpNotAllow); | |
955 return ATI_FAIL; | |
956 } | |
957 if(toa_val NEQ 0) | |
958 { | |
959 type=toa_demerge(toa_val); | |
960 } | |
961 else | |
962 { | |
963 cmh_setToaDef(numBuf,&type); | |
964 } | |
965 | |
966 | |
967 #ifdef FF_ATI_BAT | |
968 | |
969 { | |
970 T_BAT_cmd_send cmd; | |
971 T_BAT_cmd_set_plus_csvm csvm; | |
972 UBYTE len; | |
973 | |
974 cmd.ctrl_params = BAT_CMD_SET_PLUS_CSVM; | |
975 cmd.params.ptr_set_plus_csvm=&csvm; | |
976 | |
977 len=strlen(numBuf); | |
978 | |
979 csvm.mode=(T_BAT_plus_csvm_mode)mode; | |
980 | |
981 if ((len) && (len<=BAT_MAX_CSVM_NUMBER_LEN)) | |
982 { | |
983 csvm.v_number=TRUE; | |
984 csvm.c_number=(U8)len; | |
985 memcpy(csvm.number,numBuf,len); | |
986 } | |
987 else | |
988 { | |
989 csvm.v_number=FALSE; | |
990 } | |
991 csvm.type=(S16)toa_val; | |
992 bat_send(ati_bat_get_client(srcId), &cmd); | |
993 return(ATI_EXCT); | |
994 } | |
995 | |
996 #else /* no FF_ATI_BAT */ | |
997 | |
998 ret = sAT_PlusCSVM(srcId, mode, numBuf, (UBYTE)strlen(numBuf), &type); | |
999 | |
1000 if (ret EQ AT_FAIL) | |
1001 { | |
1002 cmdCmeError(CME_ERR_Unknown); | |
1003 } | |
1004 return (map_aci_2_ati_rslt(ret)); | |
1005 | |
1006 #endif /* no FF_ATI_BAT */ | |
1007 } | |
1008 | |
1009 GLOBAL T_ATI_RSLT queatPlusCSVM (char *cl, UBYTE srcId) | |
1010 { | |
1011 T_ACI_CSVM_MOD mode=CSVM_MOD_NotPresent; | |
1012 T_ACI_RETURN ret = AT_FAIL; | |
1013 SHORT toa_val=0; | |
1014 CHAR numBuf[MAX_CC_ORIG_NUM_LEN]; | |
1015 | |
1016 TRACE_FUNCTION("queatPlusCSVM()"); | |
1017 | |
1018 memset( numBuf, 0, sizeof(numBuf)); | |
1019 | |
1020 #ifdef FF_ATI_BAT | |
1021 { | |
1022 T_BAT_cmd_send cmd; | |
1023 T_BAT_no_parameter dummy; | |
1024 | |
1025 cmd.ctrl_params = BAT_CMD_QUE_PLUS_CSVM; | |
1026 dummy.bat_dummy = 0xFF; | |
1027 cmd.params.ptr_que_plus_csvm = &dummy; | |
1028 bat_send(ati_bat_get_client(srcId), &cmd); | |
1029 return(ATI_EXCT); | |
1030 } | |
1031 #else /* no FF_ATI_BAT */ | |
1032 | |
1033 ret = qAT_PlusCSVM(srcId, &mode, numBuf, sizeof(numBuf), &toa_val); | |
1034 if (ret EQ AT_FAIL) | |
1035 { | |
1036 cmdCmeError(CME_ERR_Unknown); | |
1037 } | |
1038 else | |
1039 { | |
1040 sprintf(g_sa,"+CSVM: %d,\"%s\",%d",mode,numBuf,toa_val); | |
1041 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
1042 } | |
1043 | |
1044 return (map_aci_2_ati_rslt(ret)); | |
1045 | |
1046 #endif /* no FF_ATI_BAT */ | |
1047 } | |
1048 | |
1049 /* | |
1050 +--------------------------------------------------------------------+ | |
1051 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
1052 | STATE : code ROUTINE : atPlusCLAN | | |
1053 +--------------------------------------------------------------------+ | |
1054 | |
1055 PURPOSE : +CLAN command (Set language) | |
1056 */ | |
1057 | |
1058 GLOBAL T_ATI_RSLT setatPlusCLAN (CHAR *cl, UBYTE srcId) | |
1059 { | |
1060 T_ACI_RETURN ret = AT_FAIL; | |
1061 CHAR lng_str[CLAN_CODE_LEN+1]={0}; | |
1062 SHORT i; | |
1063 T_ACI_LAN_SUP lngCde; | |
1064 CHAR *auptr="au"; | |
1065 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
1066 | |
1067 TRACE_FUNCTION("setatPlusCLAN()"); | |
1068 | |
1069 cl = parse(cl,"s",(LONG)3,lng_str); | |
1070 if(!cl OR *lng_str EQ '\0') | |
1071 { | |
1072 cmdCmeError(CME_ERR_OpNotAllow); | |
1073 return ATI_FAIL; | |
1074 } | |
1075 if (strcmp(lng_str, auptr)) | |
1076 { | |
1077 for(i=0;lngs[i].str NEQ 0;i++) | |
1078 { | |
1079 if (!strcmp(lngs[i].str,lng_str)) | |
1080 { | |
1081 lngCde.str=lngs[i].str; | |
1082 lngCde.lng=lngs[i].lng; | |
1083 break; | |
1084 } | |
1085 } | |
1086 if(lngs[i].str EQ 0) | |
1087 { | |
1088 cmdCmeError(CME_ERR_OpNotSupp); | |
1089 return ATI_FAIL; | |
1090 } | |
1091 } | |
1092 else | |
1093 { | |
1094 lngCde.str = lng_str; | |
1095 lngCde.lng = CLAN_LNG_AUT; | |
1096 } | |
1097 | |
1098 #ifdef FF_ATI_BAT | |
1099 | |
1100 { | |
1101 T_BAT_cmd_send cmd; | |
1102 T_BAT_cmd_set_plus_clan clan; | |
1103 UBYTE len; | |
1104 | |
1105 cmd.ctrl_params = BAT_CMD_SET_PLUS_CLAN; | |
1106 cmd.params.ptr_set_plus_clan=&clan; | |
1107 | |
1108 len=strlen(lng_str); | |
1109 | |
1110 if (len>BAT_MAX_CLAN_CODE_LEN) | |
1111 { | |
1112 cmdCmeError(CME_ERR_Unknown); | |
1113 return ATI_FAIL; | |
1114 } | |
1115 | |
1116 memcpy(clan.code,lng_str,len); | |
1117 clan.c_code=(U8)len; | |
1118 bat_send(ati_bat_get_client(srcId), &cmd); | |
1119 src_params->curAtCmd=AT_CMD_CLAN; | |
1120 return(ATI_EXCT); | |
1121 } | |
1122 | |
1123 #else /* no FF_ATI_BAT */ | |
1124 | |
1125 ret = sAT_PlusCLAN(srcId,&lngCde); | |
1126 if (ret EQ AT_EXCT) | |
1127 { | |
1128 src_params->curAtCmd = AT_CMD_CLAN; | |
1129 } | |
1130 else if (ret EQ AT_FAIL) | |
1131 { | |
1132 cmdCmeError(CME_ERR_Unknown); | |
1133 } | |
1134 return (map_aci_2_ati_rslt(ret)); | |
1135 | |
1136 #endif /* no FF_ATI_BAT */ | |
1137 } | |
1138 | |
1139 GLOBAL T_ATI_RSLT queatPlusCLAN(char *cl, UBYTE srcId) | |
1140 { | |
1141 #ifndef FF_ATI_BAT | |
1142 CHAR *me="+CLAN: "; | |
1143 T_ACI_RETURN ret = AT_FAIL; | |
1144 T_ACI_LAN_SUP lngCde; | |
1145 CHAR lang_buffer[3]; /* 2 chars for language + 0 terminated string */ | |
1146 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
1147 #endif | |
1148 | |
1149 TRACE_FUNCTION("queatPlusCLAN()"); | |
1150 | |
1151 #ifdef FF_ATI_BAT | |
1152 { | |
1153 T_BAT_cmd_send cmd; | |
1154 T_BAT_no_parameter dummy; | |
1155 | |
1156 cmd.ctrl_params = BAT_CMD_QUE_PLUS_CLAN; | |
1157 dummy.bat_dummy = 0xFF; | |
1158 cmd.params.ptr_que_plus_clan = &dummy; | |
1159 bat_send(ati_bat_get_client(srcId), &cmd); | |
1160 return(ATI_EXCT); | |
1161 } | |
1162 #else /* no FF_ATI_BAT */ | |
1163 | |
1164 /* to be sure that last cipher is 0 (string)*/ | |
1165 memset(lang_buffer, 0, sizeof(lang_buffer)); | |
1166 lngCde.str = lang_buffer; | |
1167 | |
1168 ret = qAT_PlusCLAN(srcId, &lngCde); | |
1169 switch(ret) | |
1170 { | |
1171 case(AT_CMPL): | |
1172 sprintf(g_sa,"%s%s", me, lngCde.str); | |
1173 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
1174 break; | |
1175 | |
1176 case(AT_EXCT): | |
1177 src_params->curAtCmd = AT_CMD_CLAN; | |
1178 break; | |
1179 | |
1180 case(AT_BUSY): | |
1181 cmdCmeError(CME_ERR_SimBusy); | |
1182 break; | |
1183 | |
1184 default: | |
1185 cmdCmeError(CME_ERR_Unknown); | |
1186 break; | |
1187 } | |
1188 return (map_aci_2_ati_rslt(ret)); | |
1189 | |
1190 #endif /* no FF_ATI_BAT */ | |
1191 } | |
1192 | |
1193 GLOBAL T_ATI_RSLT tesatPlusCLAN (CHAR *cl, UBYTE srcId) | |
1194 { | |
1195 #ifndef FF_ATI_BAT | |
1196 char *me="+CLAN: "; | |
1197 T_ACI_RETURN ret = AT_FAIL; | |
1198 T_ACI_LAN_SUP lnglst[MAX_LAN]; | |
1199 SHORT lastIdx; | |
1200 UBYTE i; | |
1201 SHORT pos; | |
1202 #endif | |
1203 | |
1204 TRACE_FUNCTION("tesatPlusCLAN()"); | |
1205 | |
1206 #ifdef FF_ATI_BAT | |
1207 { | |
1208 T_BAT_cmd_send cmd; | |
1209 T_BAT_no_parameter dummy; | |
1210 | |
1211 cmd.ctrl_params = BAT_CMD_TST_PLUS_CLAN; | |
1212 dummy.bat_dummy = 0xFF; | |
1213 cmd.params.ptr_tst_plus_clan = &dummy; | |
1214 bat_send(ati_bat_get_client(srcId), &cmd); | |
1215 return(ATI_EXCT); | |
1216 } | |
1217 #else /* no FF_ATI_BAT */ | |
1218 | |
1219 ret = tAT_PlusCLAN(srcId, &lastIdx, &lnglst[0] ); | |
1220 if (ret EQ AT_FAIL) | |
1221 { | |
1222 cmdCmeError(CME_ERR_Unknown); | |
1223 return ATI_FAIL; | |
1224 } | |
1225 | |
1226 pos=sprintf(g_sa,"%s",me); | |
1227 | |
1228 for(i=0;i<lastIdx;i++) | |
1229 { | |
1230 pos += sprintf(g_sa+pos,"%s,",lnglst[i].str); | |
1231 } | |
1232 | |
1233 g_sa[pos-1] = '\0'; | |
1234 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
1235 return (map_aci_2_ati_rslt(ret)); | |
1236 | |
1237 #endif /* no FF_ATI_BAT */ | |
1238 } | |
1239 | |
1240 /* | |
1241 +--------------------------------------------------------------------+ | |
1242 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | | |
1243 | STATE : code ROUTINE : setatPercentPBCF | | |
1244 +--------------------------------------------------------------------+ | |
1245 | |
1246 PURPOSE : %PBCF command (Set phonebook configuration) | |
1247 */ | |
1248 | |
1249 GLOBAL T_ATI_RSLT setatPercentPBCF (CHAR *cl, UBYTE srcId) | |
1250 { | |
1251 T_ACI_PBCF_LDN ldn = PBCF_LDN_NotPresent; | |
1252 T_ACI_PBCF_LRN lrn = PBCF_LRN_NotPresent; | |
1253 T_ACI_PBCF_LMN lmn = PBCF_LMN_NotPresent; | |
1254 T_ACI_RETURN ret = AT_FAIL; | |
1255 | |
1256 cl = parse (cl, "ddd", &ldn, &lrn, &lmn); | |
1257 | |
1258 /*lint -e685 always evaluates to false*/ | |
1259 if (!cl OR | |
1260 ldn < PBCF_LDN_NotPresent OR ldn > PBCF_LDN_Disable OR | |
1261 lrn < PBCF_LRN_NotPresent OR lrn > PBCF_LRN_Disable OR | |
1262 lmn < PBCF_LMN_NotPresent OR lmn > PBCF_LMN_Disable) | |
1263 { | |
1264 cmdCmeError(CME_ERR_OpNotAllow); | |
1265 return ATI_FAIL; | |
1266 } | |
1267 | |
1268 #ifdef FF_ATI_BAT | |
1269 { | |
1270 T_BAT_cmd_send cmd; | |
1271 T_BAT_cmd_set_percent_pbcf pbcf; | |
1272 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); | |
1273 | |
1274 TRACE_FUNCTION("setatPercentPBCF() calls bat_send() <=== as APPLICATION"); | |
1275 | |
1276 cmd.ctrl_params = BAT_CMD_SET_PERCENT_PBCF; | |
1277 cmd.params.ptr_set_percent_pbcf=&pbcf; | |
1278 | |
1279 pbcf.ldn = (T_BAT_percent_pbcf_ldn)ldn; | |
1280 pbcf.lrn = (T_BAT_percent_pbcf_lrn)lrn; | |
1281 pbcf.lmn = (T_BAT_percent_pbcf_lmn)lmn; | |
1282 | |
1283 bat_send(ati_bat_get_client(srcId), &cmd); | |
1284 src_params->curAtCmd=AT_CMD_P_PBCF; | |
1285 return(ATI_EXCT); | |
1286 } | |
1287 | |
1288 #else /* FF_ATI_BAT */ | |
1289 TRACE_FUNCTION("setatPercentPBCF()"); | |
1290 | |
1291 ret = sAT_PercentPBCF(srcId, ldn, lrn, lmn); | |
1292 | |
1293 if(ret EQ AT_FAIL) | |
1294 { | |
1295 cmdCmeError(CME_ERR_Unknown); | |
1296 return ATI_FAIL; | |
1297 } | |
1298 | |
1299 return (map_aci_2_ati_rslt(ret)); | |
1300 | |
1301 #endif /* FF_ATI_BAT */ | |
1302 } | |
1303 | |
1304 | |
1305 GLOBAL T_ATI_RSLT queatPercentPBCF (CHAR *cl, UBYTE srcId) | |
1306 { | |
1307 #ifdef FF_ATI_BAT | |
1308 { | |
1309 T_BAT_cmd_send cmd; | |
1310 T_BAT_no_parameter dummy; | |
1311 | |
1312 TRACE_FUNCTION("queatPercentPBCF() calls bat_send() <=== as APPLICATION"); | |
1313 | |
1314 cmd.ctrl_params = BAT_CMD_QUE_PERCENT_PBCF; | |
1315 dummy.bat_dummy = 0xFF; | |
1316 cmd.params.ptr_que_percent_pbcf = &dummy; | |
1317 bat_send(ati_bat_get_client(srcId), &cmd); | |
1318 return(ATI_EXCT); | |
1319 } | |
1320 | |
1321 #else /* FF_ATI_BAT */ | |
1322 CHAR *me = "%PBCF: "; | |
1323 T_ACI_PBCF_LDN ldn = PBCF_LDN_NotPresent; | |
1324 T_ACI_PBCF_LRN lrn = PBCF_LRN_NotPresent; | |
1325 T_ACI_PBCF_LMN lmn = PBCF_LMN_NotPresent; | |
1326 | |
1327 TRACE_FUNCTION("queatPercentPBCF()"); | |
1328 | |
1329 qAT_PercentPBCF (srcId, &ldn, &lrn, &lmn); | |
1330 | |
1331 sprintf (g_sa, "%s%d, %d, %d", me, ldn, lrn, lmn); | |
1332 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
1333 | |
1334 return (ATI_CMPL); | |
1335 #endif /* FF_ATI_BAT */ | |
1336 } | |
1337 | |
1338 #endif /* ATI_PHB_C */ |