comparison g23m-aci/aci/cmh_ssq.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:75a11d740a02
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-PS (6147)
4 | Modul : CMH_SSS
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 module provides the query functions related to the
18 | protocol stack adapter for SS.
19 +-----------------------------------------------------------------------------
20 */
21
22 #ifndef CMH_SSQ_C
23 #define CMH_SSQ_C
24 #endif
25
26 #include "config.h"
27 #include "fixedconf.h"
28 #include "condat-features.h"
29 #include "aci_conf.h"
30
31 #include "aci_all.h"
32 /*==== INCLUDES ===================================================*/
33 #include "aci.h"
34 #include "aci_cmh.h"
35 #include "ati_cmd.h"
36 #include "aci_cmd.h"
37
38 #include "aci_ext_pers.h" /* we are using personalisation extensions */
39 #include "aci_slock.h" /* in order to asure interfaces */
40
41 #ifdef FAX_AND_DATA
42 #include "aci_fd.h"
43 #endif /* of #ifdef FAX_AND_DATA */
44
45 #ifdef UART
46 #include "dti.h"
47 #include "dti_conn_mng.h"
48 #endif
49
50 #include "ksd.h"
51 #include "psa.h"
52 #include "psa_ss.h"
53 #include "psa_sim.h"
54 #include "cmh.h"
55 #include "cmh_ss.h"
56 #include "cmh_sim.h"
57
58 #include "aci_ext_pers.h"
59 #include "aci_slock.h"
60
61 #ifdef FF_PHONE_LOCK
62 #include "sec_drv.h"
63 #endif
64
65 /*==== CONSTANTS ==================================================*/
66
67 /*==== EXPORT =====================================================*/
68
69 /*==== VARIABLES ==================================================*/
70
71 /*==== PROTOTYPES==================================================*/
72 /* Implements Measure 193 */
73 LOCAL T_ACI_RETURN cmhSS_queryHandler (T_ACI_CMD_SRC srcId,
74 void *stat,
75 T_ACI_AT_CMD atCmd,
76 UBYTE ssCode);
77 EXTERN T_ACI_RETURN cmhSS_check_oper_result(T_OPER_RET_STATUS result);
78
79 #ifdef FF_PHONE_LOCK
80 EXTERN T_OPER_RET_STATUS aci_ext_get_phone_lock_satus(T_SEC_DRV_EXT_PHONE_LOCK_TYPE type,T_SEC_DRV_EXT_PHONE_LOCK_STATUS *status);
81 #endif
82 /*==== FUNCTIONS ==================================================*/
83
84 /*
85 +--------------------------------------------------------------------+
86 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
87 | STATE : code ROUTINE : qAT_PlusCCFC |
88 +--------------------------------------------------------------------+
89
90 PURPOSE : This is the functional counterpart to the +CCFC AT command
91 which is responsible to query the parameters for call
92 forwarding supplementary services.
93
94 <reason> : reason for CF.
95 <class> : class of basic service.
96 */
97
98 GLOBAL T_ACI_RETURN qAT_PlusCCFC ( T_ACI_CMD_SRC srcId,
99 T_ACI_CCFC_RSN reason,
100 T_ACI_CLASS class_type )
101 {
102 SHORT sId; /* holds service id */
103 UBYTE ssCd; /* holds ss code */
104
105 T_ACI_RETURN retVal;
106
107
108 TRACE_FUNCTION ("qAT_PlusCCFC");
109
110 /*
111 *-------------------------------------------------------------------
112 * check command source
113 *-------------------------------------------------------------------
114 */
115 if(!cmh_IsVldCmdSrc (srcId))
116 {
117 return( AT_FAIL );
118 }
119
120 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
121
122 return( AT_BUSY );
123
124 /* Implements Measure # 85 */
125 if(!cmhSS_checkCCFC_RSN(reason, &ssCd))
126 {
127 return( AT_FAIL );
128 }
129 /*
130 *-------------------------------------------------------------------
131 * check parameter <class>
132 *-------------------------------------------------------------------
133 */
134 if( !cmhSS_CheckClassInterr(class_type) )
135 {
136 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
137 return( AT_FAIL );
138 }
139
140 /* SIM TOOLKIT & FDN HANDLING */
141
142 retVal = cmhSS_CF_SAT_Handle( srcId, reason, CCFC_MOD_Query, NULL, NULL, class_type, NULL, NULL, 0);
143
144 if( retVal NEQ AT_CMPL )
145 return( retVal );
146
147 /*
148 *-------------------------------------------------------------------
149 * get a new service table entry to interrogate SS
150 *-------------------------------------------------------------------
151 */
152 sId = psaSS_stbNewEntry();
153
154 if( sId EQ NO_ENTRY )
155 {
156 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
157 return( AT_FAIL );
158 }
159
160 /*
161 *-------------------------------------------------------------------
162 * start first transaction
163 *-------------------------------------------------------------------
164 */
165 CCD_START;
166
167 psaSS_asmInterrogateSS( ssCd, SS_NO_PRM, SS_NO_PRM );
168
169 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
170 ssShrdPrm.stb[sId].ssCode = ssCd;
171 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
172 ssShrdPrm.stb[sId].ClassType = class_type;
173
174 ssShrdPrm.stb[sId].curCmd = AT_CMD_CCFC;
175 cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
176 psaSS_NewTrns(sId);
177
178 CCD_END;
179
180 /*
181 *-------------------------------------------------------------------
182 * log command execution
183 *-------------------------------------------------------------------
184 */
185 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
186 {
187 T_ACI_CLOG cmdLog; /* holds logging info */
188
189 cmdLog.atCmd = AT_CMD_CCFC;
190 cmdLog.cmdType = CLOG_TYPE_Query;
191 cmdLog.retCode = AT_EXCT;
192 cmdLog.cId = ACI_NumParmNotPresent;
193 cmdLog.sId = sId+1;
194 cmdLog.cmdPrm.qCCFC.srcId = srcId;
195 cmdLog.cmdPrm.qCCFC.reason = reason;
196 cmdLog.cmdPrm.qCCFC.class_type = class_type;
197 rAT_PercentCLOG( &cmdLog );
198 }
199 #endif
200 return( AT_EXCT );
201 }
202
203 /*
204 +--------------------------------------------------------------------+
205 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
206 | STATE : code ROUTINE : qAT_PlusCLCK |
207 +--------------------------------------------------------------------+
208
209 PURPOSE : This is the functional counterpart to the +CLCK AT command
210 which is responsible to query the parameters for call
211 barring supplementary services.
212
213 <fac> : CB facility.
214 <class>: class of basic service.
215 */
216
217 GLOBAL T_ACI_RETURN qAT_PlusCLCK ( T_ACI_CMD_SRC srcId,
218 T_ACI_FAC fac,
219 T_ACI_CLASS class_type,
220 T_ACI_CLSSTAT *clsStat)
221 {
222 UBYTE dummy_slockStat;
223 TRACE_FUNCTION ("qAT_PlusCLCK");
224 return qAT_PercentCLCK(srcId,fac,class_type, clsStat,&dummy_slockStat);
225 }
226
227 /*QAT_PERCENTCLCK add for Simlock in Riviear MFW
228
229 Added by Shen,Chao April 16th, 2003
230 */
231
232 GLOBAL T_ACI_RETURN qAT_PercentCLCK ( T_ACI_CMD_SRC srcId,
233 T_ACI_FAC fac,
234 T_ACI_CLASS class_type,
235 T_ACI_CLSSTAT *clsStat,
236 UBYTE *simClockStat)
237 {
238 SHORT sId; /* holds service id */
239 UBYTE ssCd; /* holds ss code */
240 T_ACI_RETURN retVal;
241 #ifdef SIM_PERS
242 T_SIMLOCK_TYPE slocktype;
243 T_SIMLOCK_STATUS rlockstatus;
244 T_OPER_RET_STATUS ret;
245 #endif
246
247
248 TRACE_FUNCTION ("qAT_PercentCLCK");
249
250 /*
251 *-------------------------------------------------------------------
252 * check command source
253 *-------------------------------------------------------------------
254 */
255 if(!cmh_IsVldCmdSrc (srcId))
256 {
257 return( AT_FAIL );
258 }
259
260 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
261 return( AT_BUSY );
262
263 /*
264 *-------------------------------------------------------------------
265 * check parameter <fac>
266 *-------------------------------------------------------------------
267 */
268 /* Implements Measure # 166 */
269 if( !cmhSS_getSSCd(fac, &ssCd) )
270 {
271 return( AT_FAIL );
272 }
273
274 /*
275 *-------------------------------------------------------------------
276 * if action is related to SS
277 *-------------------------------------------------------------------
278 */
279 if( ssCd NEQ NOT_PRESENT_8BIT )
280 {
281 /*
282 *-------------------------------------------------------------------
283 * check parameter <class>
284 *-------------------------------------------------------------------
285 */
286 if( !cmhSS_CheckCbClassInterr(class_type))
287 {
288 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
289 return( AT_FAIL );
290 }
291
292 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
293
294 return( AT_BUSY );
295 /*
296 *-------------------------------------------------------------------
297 * check not allowed <fac> (only possible with mode=0 i.e unlock)
298 *-------------------------------------------------------------------
299 */
300 if(fac EQ FAC_Ab OR fac EQ FAC_Ag OR fac EQ FAC_Ac)
301 {
302 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow );
303 return( AT_FAIL );
304 }
305
306 /* SIM TOOLKIT & FDN HANDLING */
307
308 retVal = cmhSS_Call_Barr_SAT_Handle( srcId, CLCK_MODE_QUERY, fac, NULL, class_type);
309
310 if( retVal NEQ AT_CMPL )
311 return( retVal );
312
313
314 /*
315 *-------------------------------------------------------------------
316 * get a new service table entry to interrogate SS
317 *-------------------------------------------------------------------
318 */
319 sId = psaSS_stbNewEntry();
320
321 if( sId EQ NO_ENTRY )
322 {
323 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
324 return( AT_FAIL );
325 }
326
327 /*
328 *-------------------------------------------------------------------
329 * start first transaction
330 *-------------------------------------------------------------------
331 */
332 CCD_START;
333
334 psaSS_asmInterrogateSS( ssCd, SS_NO_PRM, SS_NO_PRM );
335
336 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
337 ssShrdPrm.stb[sId].ssCode = ssCd;
338 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
339 ssShrdPrm.stb[sId].ClassType = class_type;
340
341 ssShrdPrm.stb[sId].curCmd = AT_CMD_CLCK;
342 cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
343 psaSS_NewTrns(sId);
344
345 CCD_END;
346 }
347
348 /*
349 *-------------------------------------------------------------------
350 * if action is related to SIM
351 *-------------------------------------------------------------------
352 */
353 else
354 {
355 switch (fac)
356 {
357 /*
358 *---------------------------------------------------------------
359 * access PIN 1 status
360 *---------------------------------------------------------------
361 */
362 case FAC_Sc:
363 clsStat -> class_type = CLASS_NotPresent;
364 clsStat -> status = STATUS_NotPresent;
365
366 switch( simShrdPrm.PEDStat )
367 {
368 case( PEDS_ENA ): clsStat -> status = STATUS_Active;
369 return( AT_CMPL );
370 case( PEDS_DIS ): clsStat -> status = STATUS_NotActive;
371 return( AT_CMPL );
372 default:
373 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail );
374 return( AT_FAIL );
375 }
376 /* break is removed ,as case is returning before break so it is not needed */
377 /*
378 *---------------------------------------------------------------
379 * access fixed dialling feature
380 *---------------------------------------------------------------
381 */
382 case ( FAC_Fd ):
383 clsStat -> class_type = CLASS_NotPresent;
384 clsStat -> status = STATUS_NotPresent;
385
386 if( simShrdPrm.SIMStat EQ SS_OK )
387 {
388 switch( simShrdPrm.crdFun )
389 {
390 case( SIM_ADN_ENABLED ):
391 case( SIM_ADN_BDN_ENABLED ): clsStat -> status = STATUS_NotActive;
392 return( AT_CMPL );
393 case( SIM_FDN_ENABLED ):
394 case( SIM_FDN_BDN_ENABLED ): clsStat -> status = STATUS_Active;
395 return( AT_CMPL );
396 case( SIM_NO_OPERATION ):
397 default:
398
399 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail );
400 return( AT_FAIL );
401 }
402 }
403 else
404 {
405 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail );
406 return( AT_FAIL );
407 }
408 /* break is removed ,as case is returning before break so it is not needed */
409 /*
410 *---------------------------------------------------------------
411 * lock ALS setting with PIN2
412 *---------------------------------------------------------------
413 */
414 case FAC_Al:
415 clsStat -> class_type = CLASS_NotPresent;
416 clsStat -> status = STATUS_NotPresent;
417
418 switch( ALSlock )
419 {
420 case( ALS_MOD_SPEECH ):
421 case( ALS_MOD_AUX_SPEECH ):
422 clsStat -> status = STATUS_Active;
423 return( AT_CMPL );
424
425 case( ALS_MOD_NOTPRESENT ):
426 clsStat -> status = STATUS_NotActive;
427 return( AT_CMPL );
428
429 default:
430 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotSupp );
431 return( AT_FAIL );
432 }
433 /* break is removed ,as case is returning before break so it is not needed */
434 #ifdef SIM_PERS
435 /*
436 *---------------------------------------------------------------
437 * ME Personalisation
438 *---------------------------------------------------------------
439 */
440
441 case FAC_Pn:
442 case FAC_Pu:
443 case FAC_Pp:
444 case FAC_Pc:
445 case FAC_Ps:
446 case FAC_Pf:
447 case FAC_Bl:
448
449 clsStat -> class_type = CLASS_NotPresent;
450 clsStat -> status = STATUS_NotPresent;
451
452 switch (fac)
453 {
454 case FAC_Pn: slocktype = SIMLOCK_NETWORK; break;
455 case FAC_Pu: slocktype = SIMLOCK_NETWORK_SUBSET; break;
456 case FAC_Pp: slocktype = SIMLOCK_SERVICE_PROVIDER; break;
457 case FAC_Pc: slocktype = SIMLOCK_CORPORATE; break;
458 case FAC_Ps: slocktype = SIMLOCK_SIM; break;
459 case FAC_Pf: slocktype = SIMLOCK_FIRST_SIM; break;
460 case FAC_Bl: slocktype = SIMLOCK_BLOCKED_NETWORK; break;
461 default: slocktype = SIMLOCK_NETWORK;
462 }
463 aci_ext_personalisation_init();
464 rlockstatus = aci_personalisation_get_status(slocktype); /* Changed to aci_personalisatio_get_status
465 from aci_ext_personalisatio_get_status on 11/03/2005 */
466 aci_ext_personalisation_free();
467 if (rlockstatus EQ SIMLOCK_ENABLED)
468 {
469 clsStat -> status = STATUS_Active;
470 return( AT_CMPL );
471 }
472 else if (rlockstatus EQ SIMLOCK_DISABLED)
473 {
474 clsStat -> status = STATUS_NotActive;
475 return( AT_CMPL );
476 }
477 else
478 {
479 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown );
480 return( AT_FAIL );
481 }
482
483 case( FAC_Mu ) :
484 case( FAC_Mum ) :
485 {
486 clsStat->class_type = CLASS_NotPresent;
487 clsStat->status = STATUS_NotPresent;
488 ret = aci_slock_master_unlock( NULL );
489 switch (ret)
490 {
491 case OPER_SUCCESS:
492 case OPER_WRONG_PASSWORD:
493 clsStat->status = STATUS_Active;
494 return( AT_CMPL );
495 case OPER_NOT_ALLOWED:
496 clsStat->status = STATUS_NotActive;
497 return( AT_CMPL );
498 case OPER_FAIL:
499 ACI_ERR_DESC( ACI_ERR_CLASS_Cme,CME_ERR_Unknown );
500 return( AT_FAIL );
501 default:
502 ACI_ERR_DESC( ACI_ERR_CLASS_Cme,CME_ERR_Unknown );
503 return( AT_FAIL );
504 }
505 }
506 #endif
507
508 #ifdef FF_PHONE_LOCK
509 case(FAC_Pl) :
510 {
511 clsStat->class_type = CLASS_NotPresent;
512 clsStat->status = STATUS_NotPresent;
513 ret = aci_ext_get_phone_lock_satus(PHONE_LOCK,(T_SEC_DRV_EXT_PHONE_LOCK_STATUS *)&clsStat->status);
514 return(cmhSS_check_oper_result(ret));
515 }
516 case(FAC_Apl) :
517 {
518 clsStat->class_type = CLASS_NotPresent;
519 clsStat->status = STATUS_NotPresent;
520 ret = aci_ext_get_phone_lock_satus(AUTO_LOCK,(T_SEC_DRV_EXT_PHONE_LOCK_STATUS *)&clsStat->status);
521 return(cmhSS_check_oper_result(ret));
522 }
523 #endif
524
525 /*
526 *---------------------------------------------------------------
527 * Error handling
528 *---------------------------------------------------------------
529 */
530 default:
531 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown );
532 return( AT_FAIL );
533 }
534 }
535
536 /*
537 *-------------------------------------------------------------------
538 * log command execution
539 *-------------------------------------------------------------------
540 */
541 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
542 {
543 T_ACI_CLOG cmdLog; /* holds logging info */
544
545 cmdLog.atCmd = AT_CMD_CLCK;
546 cmdLog.cmdType = CLOG_TYPE_Query;
547 cmdLog.retCode = AT_EXCT;
548 cmdLog.cId = ACI_NumParmNotPresent;
549 cmdLog.sId = sId+1;
550 cmdLog.cmdPrm.qCLCK.srcId = srcId;
551 cmdLog.cmdPrm.qCLCK.fac = fac;
552 cmdLog.cmdPrm.qCLCK.class_type = class_type;
553
554 rAT_PercentCLOG( &cmdLog );
555 }
556 #endif
557
558 return( AT_EXCT );
559 }
560
561 /*
562 +--------------------------------------------------------------------+
563 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
564 | STATE : code ROUTINE : qAT_PlusCCWA |
565 +--------------------------------------------------------------------+
566
567 PURPOSE : This is the functional counterpart to the +CCWA AT command
568 which is responsible to query the parameters for call
569 waiting supplementary services.
570
571 <class> : class of basic service.
572 */
573
574 GLOBAL T_ACI_RETURN qAT_PlusCCWA (T_ACI_CMD_SRC srcId,
575 T_ACI_CLASS class_type)
576 {
577 SHORT sId; /* holds service id */
578
579 T_ACI_RETURN retVal;
580
581 TRACE_FUNCTION ("qAT_PlusCCWA ()");
582
583 /*
584 *-------------------------------------------------------------------
585 * check command source
586 *-------------------------------------------------------------------
587 */
588 if(!cmh_IsVldCmdSrc (srcId))
589 {
590 return( AT_FAIL );
591 }
592
593 if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 )
594
595 return( AT_BUSY );
596
597 /*
598 *-------------------------------------------------------------------
599 * check parameter <class>
600 *-------------------------------------------------------------------
601 */
602 if( !cmhSS_CheckClassInterr(class_type) )
603 {
604 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
605 return( AT_FAIL );
606 }
607
608 /* SIM TOOLKIT & FDN HANDLING */
609 retVal = cmhSS_CW_SAT_Handle( srcId, CCFC_MOD_Query, class_type);
610
611 if( retVal NEQ AT_CMPL )
612 return( retVal );
613
614 /*
615 *-------------------------------------------------------------------
616 * get a new service table entry to interrogate SS
617 *-------------------------------------------------------------------
618 */
619 sId = psaSS_stbNewEntry();
620
621 if( sId EQ NO_ENTRY )
622 {
623 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
624 return( AT_FAIL );
625 }
626
627 /*
628 *-------------------------------------------------------------------
629 * start first transaction
630 *-------------------------------------------------------------------
631 */
632 CCD_START;
633
634 psaSS_asmInterrogateSS( SS_CD_CW, SS_NO_PRM, SS_NO_PRM );
635
636 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
637 ssShrdPrm.stb[sId].ssCode = SS_CD_CW;
638 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
639 ssShrdPrm.stb[sId].ClassType = class_type;
640
641 ssShrdPrm.stb[sId].curCmd = AT_CMD_CCWA;
642 cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg));
643 psaSS_NewTrns(sId);
644
645 CCD_END;
646
647 /*
648 *-------------------------------------------------------------------
649 * log command execution
650 *-------------------------------------------------------------------
651 */
652 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
653 {
654 T_ACI_CLOG cmdLog; /* holds logging info */
655
656 cmdLog.atCmd = AT_CMD_CCWA;
657 cmdLog.cmdType = CLOG_TYPE_Query;
658 cmdLog.retCode = AT_EXCT;
659 cmdLog.cId = ACI_NumParmNotPresent;
660 cmdLog.sId = sId+1;
661 cmdLog.cmdPrm.qCCWA.srcId = srcId;
662 cmdLog.cmdPrm.qCCWA.class_type = class_type;
663
664 rAT_PercentCLOG( &cmdLog );
665 }
666 #endif
667
668 return( AT_EXCT );
669 }
670
671 /*
672 +--------------------------------------------------------------------+
673 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
674 | STATE : code ROUTINE : qAT_PlusCLIP |
675 +--------------------------------------------------------------------+
676
677 PURPOSE : This is the functional counterpart to the +CLIP AT command
678 which is responsible to query the setting for calling
679 line indication supplementary services.
680
681 <stat> : CLIP status.
682 */
683
684 GLOBAL T_ACI_RETURN qAT_PlusCLIP ( T_ACI_CMD_SRC srcId,
685 T_ACI_CLIP_STAT * stat)
686 {
687 /* Implements Measure 193 */
688 TRACE_FUNCTION ("qAT_PlusCLIP ()");
689 return (cmhSS_queryHandler (srcId,
690 (void*)stat,
691 AT_CMD_CLIP,
692 SS_CD_CLIP) );
693 }
694
695 /*
696 +--------------------------------------------------------------------+
697 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
698 | STATE : code ROUTINE : qAT_PlusCLIR |
699 +--------------------------------------------------------------------+
700
701 PURPOSE : This is the functional counterpart to the +CLIR AT command
702 which is responsible to query the setting for calling
703 line restriction supplementary services.
704
705 <mode> : CLIR mode.
706 <stat> : CLIR status.
707 */
708
709 GLOBAL T_ACI_RETURN qAT_PlusCLIR ( T_ACI_CMD_SRC srcId,
710 T_ACI_CLIR_MOD * mode,
711 T_ACI_CLIR_STAT * stat)
712 {
713 SHORT sId; /* holds service id */
714
715 T_ACI_RETURN retVal;
716
717 TRACE_FUNCTION ("qAT_PlusCLIR ()");
718
719 /*
720 *-------------------------------------------------------------------
721 * check command source
722 *-------------------------------------------------------------------
723 */
724 if(!cmh_IsVldCmdSrc (srcId))
725 {
726 return( AT_FAIL );
727 }
728
729 /* SIM TOOLKIT & FDN HANDLING */
730 retVal = cmhSS_CLIR_SAT_Handle( srcId);
731
732 if( retVal NEQ AT_CMPL )
733 return( retVal );
734
735
736 /*
737 *-------------------------------------------------------------------
738 * get a new service table entry to interrogate SS
739 *-------------------------------------------------------------------
740 */
741 sId = psaSS_stbNewEntry();
742
743 if( sId EQ NO_ENTRY )
744 {
745 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
746 return( AT_FAIL );
747 }
748
749 /*
750 *-------------------------------------------------------------------
751 * set up facility information element
752 *-------------------------------------------------------------------
753 */
754 CCD_START;
755
756 psaSS_asmInterrogateSS( SS_CD_CLIR, SS_NO_PRM, SS_NO_PRM );
757 /*
758 *-----------------------------------------------------------------
759 * declare service table entry as used and the owner of the service
760 *-----------------------------------------------------------------
761 */
762 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
763 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
764
765 /*
766 *-------------------------------------------------------------------
767 * start a new transaction
768 *-------------------------------------------------------------------
769 */
770 ssShrdPrm.stb[sId].curCmd = AT_CMD_CLIR;
771 psaSS_NewTrns(sId);
772
773 CCD_END;
774
775 /*
776 *-------------------------------------------------------------------
777 * log command execution
778 *-------------------------------------------------------------------
779 */
780 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
781 {
782 T_ACI_CLOG cmdLog; /* holds logging info */
783
784 cmdLog.atCmd = AT_CMD_CLIR;
785 cmdLog.cmdType = CLOG_TYPE_Query;
786 cmdLog.retCode = AT_EXCT;
787 cmdLog.cId = ACI_NumParmNotPresent;
788 cmdLog.sId = sId+1;
789 cmdLog.cmdPrm.qCLIR.srcId = srcId;
790 cmdLog.cmdPrm.qCLIR.stat = stat;
791 cmdLog.cmdPrm.qCLIR.mode = mode;
792 rAT_PercentCLOG( &cmdLog );
793 }
794 #endif
795
796 return( AT_EXCT );
797 }
798
799
800 GLOBAL T_ACI_RETURN qAT_PercentCLIR ( T_ACI_CMD_SRC srcId,
801 T_ACI_CLIR_MOD * mode)
802 {
803 T_CC_CMD_PRM *pCCCmdPrm; /* points to CC command parameters */
804 TRACE_FUNCTION ("qAT_PercentCLIR ()");
805
806 /*
807 *-------------------------------------------------------------------
808 * check command source
809 *-------------------------------------------------------------------
810 */
811 if(!cmh_IsVldCmdSrc (srcId))
812 {
813 return( AT_FAIL );
814 }
815
816 pCCCmdPrm = &cmhPrm[srcId].ccCmdPrm;
817 *mode = pCCCmdPrm->CLIRmode;
818
819 return AT_CMPL;
820 }
821
822 /*
823 +--------------------------------------------------------------------+
824 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
825 | STATE : code ROUTINE : qAT_PlusCOLP |
826 +--------------------------------------------------------------------+
827
828 PURPOSE : This is the functional counterpart to the +COLP AT command
829 which is responsible to query the setting for connected
830 line presentation supplementary services.
831
832 <stat> : COLP status.
833 */
834
835 GLOBAL T_ACI_RETURN qAT_PlusCOLP ( T_ACI_CMD_SRC srcId,
836 T_ACI_COLP_STAT * stat)
837 {
838 /* Implements Measure 193 */
839 TRACE_FUNCTION ("qAT_PercentCOLP ()");
840 return (cmhSS_queryHandler (srcId,
841 (void*)stat,
842 AT_CMD_COLP,
843 SS_CD_COLP) );
844 }
845
846 /*
847 +--------------------------------------------------------------------+
848 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
849 | STATE : code ROUTINE : qAT_PercentCOLR |
850 +--------------------------------------------------------------------+
851
852 PURPOSE : This is the functional counterpart to the %COLR AT command
853 which is responsible to query the setting for connected
854 line restriction supplementary services.
855
856 <stat> : COLR status.
857 */
858
859 GLOBAL T_ACI_RETURN qAT_PercentCOLR ( T_ACI_CMD_SRC srcId )
860 {
861 /* Implements Measure 193 */
862 TRACE_FUNCTION ("qAT_PercentCOLR ()");
863 return (cmhSS_queryHandler (srcId,
864 NULL,
865 AT_CMD_COLR,
866 SS_CD_COLR));
867 }
868
869 /*
870 +--------------------------------------------------------------------+
871 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
872 | STATE : code ROUTINE : qAT_PercentCCBS |
873 +--------------------------------------------------------------------+
874
875 PURPOSE : This is the functional counterpart to the %CCBS AT command
876 which is responsible to query the setting for connected
877 line restriction supplementary services.
878
879 */
880
881 GLOBAL T_ACI_RETURN qAT_PercentCCBS ( T_ACI_CMD_SRC srcId )
882 {
883 SHORT sId; /* holds service id */
884
885 T_ACI_RETURN retVal;
886
887
888 TRACE_FUNCTION ("qAT_PercentCCBS ()");
889
890 /*
891 *-------------------------------------------------------------------
892 * check command source
893 *-------------------------------------------------------------------
894 */
895 if(!cmh_IsVldCmdSrc (srcId))
896 {
897 return( AT_FAIL );
898 }
899
900 /* SIM TOOLKIT & FDN HANDLING */
901 retVal = cmhSS_CCBS_SAT_Handle( srcId, CCBS_MOD_Query, -1);
902
903 if( retVal NEQ AT_CMPL )
904 return( retVal );
905
906
907
908 /*
909 *-------------------------------------------------------------------
910 * get a new service table entry to interrogate SS
911 *-------------------------------------------------------------------
912 */
913 sId = psaSS_stbNewEntry();
914
915 if( sId EQ NO_ENTRY )
916 {
917 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
918 return( AT_FAIL );
919 }
920
921 /*
922 *-------------------------------------------------------------------
923 * set up facility information element
924 *-------------------------------------------------------------------
925 */
926 CCD_START;
927
928 psaSS_asmInterrogateSS( SS_CD_CCBS, SS_NO_PRM, SS_NO_PRM );
929 /*
930 *-----------------------------------------------------------------
931 * declare service table entry as used and the owner of the service
932 *-----------------------------------------------------------------
933 */
934 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
935 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
936
937 /*
938 *-------------------------------------------------------------------
939 * start a new transaction
940 *-------------------------------------------------------------------
941 */
942 ssShrdPrm.stb[sId].curCmd = AT_CMD_CCBS;
943 psaSS_NewTrns(sId);
944
945 CCD_END;
946
947 /*
948 *-------------------------------------------------------------------
949 * log command execution
950 *-------------------------------------------------------------------
951 */
952 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
953 {
954 T_ACI_CLOG cmdLog; /* holds logging info */
955
956 cmdLog.atCmd = AT_CMD_CCBS;
957 cmdLog.cmdType = CLOG_TYPE_Query;
958 cmdLog.retCode = AT_EXCT;
959 cmdLog.cId = ACI_NumParmNotPresent;
960 cmdLog.sId = sId+1;
961 cmdLog.cmdPrm.qCCBS.srcId = srcId;
962
963 rAT_PercentCLOG( &cmdLog );
964 }
965 #endif
966
967 return( AT_EXCT );
968 }
969
970 /*
971 +--------------------------------------------------------------------+
972 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
973 | STATE : code ROUTINE : qAT_PercentCNAP |
974 +--------------------------------------------------------------------+
975
976 PURPOSE : This is the functional counterpart to the %CNAP AT command
977 which is responsible to query the setting for calling
978 name presentation supplementary services.
979
980 */
981
982 GLOBAL T_ACI_RETURN qAT_PercentCNAP ( T_ACI_CMD_SRC srcId )
983 {
984 /* Implements Measure 193 */
985 TRACE_FUNCTION ("qAT_PercentCNAP ()");
986 return (cmhSS_queryHandler (srcId,
987 NULL,
988 AT_CMD_CNAP,
989 SS_CD_CNAP) );
990 }
991
992
993 #ifdef TI_PS_FF_AT_P_CMD_CSCN
994 /*
995 +--------------------------------------------------------------------+
996 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
997 | STATE : code ROUTINE : qAT_PercentCSCN |
998 +--------------------------------------------------------------------+
999
1000 PURPOSE : This is the functional counterpart to the %CSCN AT command
1001 which is responsible to query the settings.
1002
1003 */
1004 GLOBAL T_ACI_RETURN qAT_PercentCSCN ( T_ACI_CMD_SRC srcId,
1005 T_ACI_SS_CSCN_MOD_STATE *ss_switch,
1006 T_ACI_SS_CSCN_MOD_DIRECTION *ss_direction,
1007 T_ACI_CC_CSCN_MOD_STATE *cc_switch,
1008 T_ACI_CC_CSCN_MOD_DIRECTION *cc_direction )
1009 {
1010 TRACE_FUNCTION ("qAT_PercentCSCN ()");
1011
1012 if(!cmh_IsVldCmdSrc (srcId))
1013 { /* check command source */
1014 return( AT_FAIL );
1015 }
1016
1017 *ss_switch = cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeState;
1018 *ss_direction = cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeDirection;
1019 *cc_switch = cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeState;
1020 *cc_direction = cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeDirection;
1021
1022 return( AT_CMPL);
1023 }
1024 #endif /* TI_PS_FF_AT_P_CMD_CSCN */
1025
1026 #ifdef SIM_PERS
1027 /*
1028 +===========================================================+
1029 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
1030 | STATE : code ROUTINE : qAT_PercentMEPD |
1031 | |
1032 |This is the functional counterpart to the %MEPD AT command |
1033 |which is responsible to query MEPD Configuration Data. |
1034 +===========================================================+
1035 */
1036
1037
1038
1039 GLOBAL T_ACI_RETURN qAT_PercentMEPD( T_ACI_CMD_SRC srcId, T_SUP_INFO *sup_info)
1040 {
1041 T_OPER_RET_STATUS rlockstatus;
1042
1043 TRACE_FUNCTION ("qAT_ PercentMEPD()");
1044
1045 /*
1046 *-------------------------------------------------------------------
1047 * check command source
1048 *-------------------------------------------------------------------
1049 */
1050 if(!cmh_IsVldCmdSrc (srcId))
1051 {
1052 return( AT_FAIL );
1053 }
1054 rlockstatus=aci_slock_sup_info(sup_info);
1055
1056 if (rlockstatus EQ OPER_SUCCESS)
1057 {
1058 return (AT_CMPL);
1059 }
1060 else if (rlockstatus EQ OPER_FAIL)
1061 {
1062 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown);
1063 return( AT_FAIL );
1064 }
1065 return( AT_EXCT );
1066 }
1067 #endif /* SIM_PERS */
1068
1069
1070
1071
1072 /* Implements Measure 193 */
1073 /*
1074 +=============================================================+
1075 | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ |
1076 | STATE : code ROUTINE : cmhSS_queryHandler |
1077 | PARAMETERS : srcId - Source of AT Command |
1078 | stat - CLIP or COLP provisioning status |
1079 | atCmd - AT Command sent for querying |
1080 | ssCode - Supplementary service code |
1081 | RETURN : Query status |
1082 |This contains common code for handling CLIP, COLP, COLR, CNAP|
1083 +=============================================================+
1084 */
1085 LOCAL T_ACI_RETURN cmhSS_queryHandler (T_ACI_CMD_SRC srcId,
1086 void *stat,
1087 T_ACI_AT_CMD atCmd,
1088 UBYTE ssCode)
1089 {
1090 SHORT sId; /* holds service id */
1091
1092 T_ACI_RETURN retVal = AT_FAIL;
1093
1094 TRACE_FUNCTION ("cmhSS_queryHandler ()");
1095
1096 /*
1097 *-------------------------------------------------------------------
1098 * check command source
1099 *-------------------------------------------------------------------
1100 */
1101 if(!cmh_IsVldCmdSrc (srcId))
1102 {
1103 return( AT_FAIL );
1104 }
1105
1106 /* SIM TOOLKIT & FDN HANDLING */
1107 switch(atCmd)
1108 {
1109 case AT_CMD_CLIP:
1110 retVal = cmhSS_CLIP_SAT_Handle(srcId);
1111 break;
1112 case AT_CMD_COLP:
1113 retVal = cmhSS_COLP_SAT_Handle(srcId);
1114 break;
1115 case AT_CMD_COLR:
1116 retVal = cmhSS_COLR_SAT_Handle(srcId);
1117 break;
1118 case AT_CMD_CNAP:
1119 retVal = cmhSS_CNAP_SAT_Handle(srcId);
1120 break;
1121 }
1122
1123 if( retVal NEQ AT_CMPL )
1124 {
1125 return( retVal );
1126 }
1127 /*
1128 *-------------------------------------------------------------------
1129 * get a new service table entry to interrogate SS
1130 *-------------------------------------------------------------------
1131 */
1132 sId = psaSS_stbNewEntry();
1133
1134 if( sId EQ NO_ENTRY )
1135 {
1136 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull );
1137 return( AT_FAIL );
1138 }
1139
1140 /*
1141 *-------------------------------------------------------------------
1142 * set up facility information element
1143 *-------------------------------------------------------------------
1144 */
1145 CCD_START;
1146
1147 psaSS_asmInterrogateSS( ssCode, SS_NO_PRM, SS_NO_PRM );
1148 /*
1149 *-----------------------------------------------------------------
1150 * declare service table entry as used and the owner of the service
1151 *-----------------------------------------------------------------
1152 */
1153 ssShrdPrm.stb[sId].ntryUsdFlg = TRUE;
1154 ssShrdPrm.stb[sId].srvOwn = (T_OWN)srcId;
1155
1156 /*
1157 *-------------------------------------------------------------------
1158 * start a new transaction
1159 *-------------------------------------------------------------------
1160 */
1161 ssShrdPrm.stb[sId].curCmd = atCmd;
1162 psaSS_NewTrns(sId);
1163
1164 CCD_END;
1165
1166 /*
1167 *-------------------------------------------------------------------
1168 * log command execution
1169 *-------------------------------------------------------------------
1170 */
1171 #if defined SMI OR defined MFW OR defined FF_MMI_RIV
1172 {
1173 T_ACI_CLOG cmdLog; /* holds logging info */
1174
1175 cmdLog.atCmd = atCmd;
1176 cmdLog.cmdType = CLOG_TYPE_Query;
1177 cmdLog.retCode = AT_EXCT;
1178 cmdLog.cId = ACI_NumParmNotPresent;
1179 cmdLog.sId = sId+1;
1180 switch(atCmd)
1181 {
1182 case AT_CMD_CLIP:
1183 cmdLog.cmdPrm.qCLIP.srcId = srcId;
1184 cmdLog.cmdPrm.qCLIP.stat = (T_ACI_CLIP_STAT *)stat;
1185 break;
1186 case AT_CMD_COLP:
1187 cmdLog.cmdPrm.qCOLP.srcId = srcId;
1188 cmdLog.cmdPrm.qCOLP.stat = (T_ACI_COLP_STAT *)stat;
1189 break;
1190 default:
1191 break;
1192 }
1193
1194 rAT_PercentCLOG( &cmdLog );
1195 }
1196 #endif
1197
1198 return( AT_EXCT );
1199 }
1200
1201 /*==== EOF ========================================================*/