FreeCalypso > hg > fc-magnetite
view src/aci2/aci/cmh_ssq.c @ 438:53f32098ea36
configs/hybrid-ui: switch to the new TCS3 versions of BMI and MFW
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 22 Jan 2018 01:22:02 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GSM-PS (6147) | Modul : CMH_SSS +----------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : This module provides the query functions related to the | protocol stack adapter for SS. +----------------------------------------------------------------------------- */ #ifndef CMH_SSQ_C #define CMH_SSQ_C #endif #include "aci_all.h" /*==== INCLUDES ===================================================*/ #include "aci.h" #include "aci_cmh.h" #include "ati_cmd.h" #include "aci_cmd.h" #include "aci_ext_pers.h" /* we are using personalisation extensions */ #include "aci_slock.h" /* in order to asure interfaces */ #ifdef FAX_AND_DATA #include "aci_fd.h" #endif /* of #ifdef FAX_AND_DATA */ #ifdef UART #include "dti.h" #include "dti_conn_mng.h" #endif #include "ksd.h" #include "psa.h" #include "psa_ss.h" #include "psa_sim.h" #include "cmh.h" #include "cmh_ss.h" #include "cmh_sim.h" #include "aci_ext_pers.h" #include "aci_slock.h" /*==== CONSTANTS ==================================================*/ /*==== EXPORT =====================================================*/ /*==== VARIABLES ==================================================*/ /*==== FUNCTIONS ==================================================*/ /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCCFC | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +CCFC AT command which is responsible to query the parameters for call forwarding supplementary services. <reason> : reason for CF. <class> : class of basic service. */ GLOBAL T_ACI_RETURN qAT_PlusCCFC ( T_ACI_CMD_SRC srcId, T_ACI_CCFC_RSN reason, T_ACI_CLASS class_type ) { SHORT sId; /* holds service id */ UBYTE ssCd; /* holds ss code */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PlusCCFC"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 ) return( AT_BUSY ); /* *------------------------------------------------------------------- * check parameter <reason> *------------------------------------------------------------------- */ switch( reason ) { case( CCFC_RSN_Uncond ): ssCd = SS_CD_CFU; break; case( CCFC_RSN_Busy ): ssCd = SS_CD_CFB; break; case( CCFC_RSN_NoReply ): ssCd = SS_CD_CFNRY; break; case( CCFC_RSN_NotReach ): ssCd = SS_CD_CFNRC; break; case( CCFC_RSN_Forward ): ssCd = SS_CD_ALL_FWSS; break; case( CCFC_RSN_CondForward ): ssCd = SS_CD_ALL_CFWSS; break; case( CCFC_RSN_NotPresent ): default: ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * check parameter <class> *------------------------------------------------------------------- */ if( !cmhSS_CheckClassInterr(class_type) ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CF_SAT_Handle( srcId, reason, CCFC_MOD_Query, NULL, NULL, class_type, NULL, NULL, 0); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * start first transaction *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( ssCd, SS_NO_PRM, SS_NO_PRM ); ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].ssCode = ssCd; ssShrdPrm.stb[sId].srvOwn = srcId; ssShrdPrm.stb[sId].ClassType = class_type; ssShrdPrm.stb[sId].curCmd = AT_CMD_CCFC; cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg)); psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CCFC; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCCFC.srcId = srcId; cmdLog.cmdPrm.qCCFC.reason = reason; cmdLog.cmdPrm.qCCFC.class_type = class_type; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCLCK | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +CLCK AT command which is responsible to query the parameters for call barring supplementary services. <fac> : CB facility. <class>: class of basic service. */ GLOBAL T_ACI_RETURN qAT_PlusCLCK ( T_ACI_CMD_SRC srcId, T_ACI_CLCK_FAC fac, T_ACI_CLASS class_type, T_ACI_CLSSTAT *clsStat) { UBYTE dummy_slockStat; TRACE_FUNCTION ("qAT_PlusCLCK"); return qAT_PercentCLCK(srcId,fac,class_type, clsStat,&dummy_slockStat); } /*QAT_PERCENTCLCK add for Simlock in Riviear MFW Added by Shen,Chao April 16th, 2003 */ GLOBAL T_ACI_RETURN qAT_PercentCLCK ( T_ACI_CMD_SRC srcId, T_ACI_CLCK_FAC fac, T_ACI_CLASS class_type, T_ACI_CLSSTAT *clsStat, UBYTE *simClockStat) { SHORT sId; /* holds service id */ UBYTE ssCd; /* holds ss code */ T_ACI_RETURN retVal; #ifdef SIM_PERS T_SIMLOCK_TYPE slocktype; T_SIMLOCK_STATUS rlockstatus; #endif TRACE_FUNCTION ("qAT_PercentCLCK"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 ) return( AT_BUSY ); /* *------------------------------------------------------------------- * check parameter <fac> *------------------------------------------------------------------- */ switch( fac ) { case( CLCK_FAC_Ao ): ssCd = SS_CD_BAOC; break; case( CLCK_FAC_Oi ): ssCd = SS_CD_BOIC; break; case( CLCK_FAC_Ox ): ssCd = SS_CD_BOICXH; break; case( CLCK_FAC_Ai ): ssCd = SS_CD_BAIC; break; case( CLCK_FAC_Ir ): ssCd = SS_CD_BICRM; break; case( CLCK_FAC_Ab ): ssCd = SS_CD_ALL_CBSS; break; case( CLCK_FAC_Ag ): ssCd = SS_CD_BOC; break; case( CLCK_FAC_Ac ): ssCd = SS_CD_BIC; break; case( CLCK_FAC_Sc ): case( CLCK_FAC_Fd ): case( CLCK_FAC_Al ): case( CLCK_FAC_Pn ): case( CLCK_FAC_Pu ): case( CLCK_FAC_Pc ): case( CLCK_FAC_Pp ): case( CLCK_FAC_Ps ): case( CLCK_FAC_Pf ): ssCd = NOT_PRESENT_8BIT; break; case( CLCK_FAC_NotPresent ): default: ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * if action is related to SS *------------------------------------------------------------------- */ if( ssCd NEQ NOT_PRESENT_8BIT ) { /* *------------------------------------------------------------------- * check parameter <class> *------------------------------------------------------------------- */ if( !cmhSS_CheckCbClassInterr(class_type)) { ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow ); return( AT_FAIL ); } if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 ) return( AT_BUSY ); /* *------------------------------------------------------------------- * check not allowed <fac> (only possible with mode=0 i.e unlock) *------------------------------------------------------------------- */ if(fac EQ CLCK_FAC_Ab OR fac EQ CLCK_FAC_Ag OR fac EQ CLCK_FAC_Ac) { ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotAllow ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_Call_Barr_SAT_Handle( srcId, CLCK_MODE_QUERY, fac, NULL, class_type); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * start first transaction *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( ssCd, SS_NO_PRM, SS_NO_PRM ); ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].ssCode = ssCd; ssShrdPrm.stb[sId].srvOwn = srcId; ssShrdPrm.stb[sId].ClassType = class_type; ssShrdPrm.stb[sId].curCmd = AT_CMD_CLCK; cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg)); psaSS_NewTrns(sId); CCD_END; } /* *------------------------------------------------------------------- * if action is related to SIM *------------------------------------------------------------------- */ else { switch (fac) { /* *--------------------------------------------------------------- * access PIN 1 status *--------------------------------------------------------------- */ case CLCK_FAC_Sc: clsStat -> class_type = CLASS_NotPresent; clsStat -> status = STATUS_NotPresent; switch( simShrdPrm.PEDStat ) { case( PEDS_ENA ): clsStat -> status = STATUS_Active; return( AT_CMPL ); case( PEDS_DIS ): clsStat -> status = STATUS_NotActive; return( AT_CMPL ); default: ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail ); return( AT_FAIL ); } break; /* *--------------------------------------------------------------- * access fixed dialling feature *--------------------------------------------------------------- */ case ( CLCK_FAC_Fd ): clsStat -> class_type = CLASS_NotPresent; clsStat -> status = STATUS_NotPresent; if( simShrdPrm.SIMStat EQ SS_OK ) { switch( simShrdPrm.crdFun ) { case( SIM_ADN_ENABLED ): case( SIM_ADN_BDN_ENABLED ): clsStat -> status = STATUS_NotActive; return( AT_CMPL ); case( SIM_FDN_ENABLED ): case( SIM_FDN_BDN_ENABLED ): clsStat -> status = STATUS_Active; return( AT_CMPL ); case( SIM_NO_OPERATION ): default: ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail ); return( AT_FAIL ); } } else { ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_SimFail ); return( AT_FAIL ); } break; /* *--------------------------------------------------------------- * lock ALS setting with PIN2 *--------------------------------------------------------------- */ case CLCK_FAC_Al: clsStat -> class_type = CLASS_NotPresent; clsStat -> status = STATUS_NotPresent; switch( ALSlock ) { case( ALS_MOD_SPEECH ): case( ALS_MOD_AUX_SPEECH ): clsStat -> status = STATUS_Active; return( AT_CMPL ); case( ALS_MOD_NOTPRESENT ): clsStat -> status = STATUS_NotActive; return( AT_CMPL ); default: ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotSupp ); return( AT_FAIL ); } break; #ifdef SIM_PERS /* *--------------------------------------------------------------- * ME Personalisation *--------------------------------------------------------------- */ case CLCK_FAC_Pn: case CLCK_FAC_Pu: case CLCK_FAC_Pp: case CLCK_FAC_Pc: case CLCK_FAC_Ps: case CLCK_FAC_Pf: clsStat -> class_type = CLASS_NotPresent; clsStat -> status = STATUS_NotPresent; switch (fac) { case CLCK_FAC_Pn: slocktype = SIMLOCK_NETWORK; break; case CLCK_FAC_Pu: slocktype = SIMLOCK_NETWORK_SUBSET; break; case CLCK_FAC_Pp: slocktype = SIMLOCK_SERVICE_PROVIDER; break; case CLCK_FAC_Pc: slocktype = SIMLOCK_CORPORATE; break; case CLCK_FAC_Ps: slocktype = SIMLOCK_SIM; break; case CLCK_FAC_Pf: slocktype = SIMLOCK_FIRST_SIM; break; default: slocktype = SIMLOCK_NETWORK; } aci_ext_personalisation_init(); rlockstatus = aci_personalisation_get_status(slocktype); /* Changed to aci_personalisatio_get_status from aci_ext_personalisatio_get_status on 11/03/2005 */ aci_ext_personalisation_free(); if (rlockstatus EQ SIMLOCK_ENABLED) { clsStat -> status = STATUS_Active; return( AT_CMPL ); } else if (rlockstatus EQ SIMLOCK_DISABLED) { clsStat -> status = STATUS_NotActive; return( AT_CMPL ); } else { ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown ); return( AT_FAIL ); } #endif /* *--------------------------------------------------------------- * Error handling *--------------------------------------------------------------- */ default: ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown ); return( AT_FAIL ); } } /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CLCK; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCLCK.srcId = srcId; cmdLog.cmdPrm.qCLCK.fac = fac; cmdLog.cmdPrm.qCLCK.class_type = class_type; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCCWA | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +CCWA AT command which is responsible to query the parameters for call waiting supplementary services. <class> : class of basic service. */ GLOBAL T_ACI_RETURN qAT_PlusCCWA (T_ACI_CMD_SRC srcId, T_ACI_CLASS class_type) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PlusCCWA ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } if( cmhPrm[srcId].ssCmdPrm.mltyTrnFlg NEQ 0 ) return( AT_BUSY ); /* *------------------------------------------------------------------- * check parameter <class> *------------------------------------------------------------------- */ if( !cmhSS_CheckClassInterr(class_type) ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CW_SAT_Handle( srcId, CCWA_MOD_Query, class_type); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * start first transaction *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_CW, SS_NO_PRM, SS_NO_PRM ); ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].ssCode = SS_CD_CW; ssShrdPrm.stb[sId].srvOwn = srcId; ssShrdPrm.stb[sId].ClassType = class_type; ssShrdPrm.stb[sId].curCmd = AT_CMD_CCWA; cmhSS_flagTrn( sId, &(cmhPrm[srcId].ssCmdPrm.mltyTrnFlg)); psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CCWA; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCCWA.srcId = srcId; cmdLog.cmdPrm.qCCWA.class_type = class_type; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCLIP | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +CLIP AT command which is responsible to query the setting for calling line indication supplementary services. <stat> : CLIP status. */ GLOBAL T_ACI_RETURN qAT_PlusCLIP ( T_ACI_CMD_SRC srcId, T_ACI_CLIP_STAT * stat) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PlusCLIP ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CLIP_SAT_Handle( srcId); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_CLIP, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_CLIP; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CLIP; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCLIP.srcId = srcId; cmdLog.cmdPrm.qCLIP.stat = stat; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCLIR | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +CLIR AT command which is responsible to query the setting for calling line restriction supplementary services. <mode> : CLIR mode. <stat> : CLIR status. */ GLOBAL T_ACI_RETURN qAT_PlusCLIR ( T_ACI_CMD_SRC srcId, T_ACI_CLIR_MOD * mode, T_ACI_CLIR_STAT * stat) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PlusCLIR ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CLIR_SAT_Handle( srcId); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_CLIR, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_CLIR; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CLIR; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCLIR.srcId = srcId; cmdLog.cmdPrm.qCLIR.stat = stat; cmdLog.cmdPrm.qCLIR.mode = mode; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } GLOBAL T_ACI_RETURN qAT_PercentCLIR ( T_ACI_CMD_SRC srcId, T_ACI_CLIR_MOD * mode) { T_CC_CMD_PRM *pCCCmdPrm; /* points to CC command parameters */ TRACE_FUNCTION ("qAT_PercentCLIR ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } pCCCmdPrm = &cmhPrm[srcId].ccCmdPrm; *mode = pCCCmdPrm->CLIRmode; return AT_CMPL; } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PlusCOLP | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the +COLP AT command which is responsible to query the setting for connected line presentation supplementary services. <stat> : COLP status. */ GLOBAL T_ACI_RETURN qAT_PlusCOLP ( T_ACI_CMD_SRC srcId, T_ACI_COLP_STAT * stat) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PlusCOLP ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_COLP_SAT_Handle( srcId); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_COLP, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_COLP; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_COLP; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCOLP.srcId = srcId; cmdLog.cmdPrm.qCOLP.stat = stat; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PercentCOLR | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the %COLR AT command which is responsible to query the setting for connected line restriction supplementary services. <stat> : COLR status. */ GLOBAL T_ACI_RETURN qAT_PercentCOLR ( T_ACI_CMD_SRC srcId ) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PercentCOLR ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_COLR_SAT_Handle( srcId); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_COLR, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_COLR; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_COLR; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCOLR.srcId = srcId; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PercentCCBS | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the %CCBS AT command which is responsible to query the setting for connected line restriction supplementary services. */ GLOBAL T_ACI_RETURN qAT_PercentCCBS ( T_ACI_CMD_SRC srcId ) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PercentCCBS ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CCBS_SAT_Handle( srcId, CCFC_MOD_Query, -1); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_CCBS, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_CCBS; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CCBS; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCCBS.srcId = srcId; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PercentCNAP | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the %CNAP AT command which is responsible to query the setting for calling name presentation supplementary services. */ GLOBAL T_ACI_RETURN qAT_PercentCNAP ( T_ACI_CMD_SRC srcId ) { SHORT sId; /* holds service id */ T_ACI_RETURN retVal; TRACE_FUNCTION ("qAT_PercentCNAP ()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } /* SIM TOOLKIT & FDN HANDLING */ retVal = cmhSS_CNAP_SAT_Handle( srcId); if( retVal NEQ AT_CMPL ) return( retVal ); /* *------------------------------------------------------------------- * get a new service table entry to interrogate SS *------------------------------------------------------------------- */ sId = psaSS_stbNewEntry(); if( sId EQ NO_ENTRY ) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_SrvTabFull ); return( AT_FAIL ); } /* *------------------------------------------------------------------- * set up facility information element *------------------------------------------------------------------- */ CCD_START; psaSS_asmInterrogateSS( SS_CD_CNAP, SS_NO_PRM, SS_NO_PRM ); /* *----------------------------------------------------------------- * declare service table entry as used and the owner of the service *----------------------------------------------------------------- */ ssShrdPrm.stb[sId].ntryUsdFlg = TRUE; ssShrdPrm.stb[sId].srvOwn = srcId; /* *------------------------------------------------------------------- * start a new transaction *------------------------------------------------------------------- */ ssShrdPrm.stb[sId].curCmd = AT_CMD_CNAP; psaSS_NewTrns(sId); CCD_END; /* *------------------------------------------------------------------- * log command execution *------------------------------------------------------------------- */ #if defined SMI OR defined MFW OR defined FF_MMI_RIV { T_ACI_CLOG cmdLog; /* holds logging info */ cmdLog.atCmd = AT_CMD_CNAP; cmdLog.cmdType = CLOG_TYPE_Query; cmdLog.retCode = AT_EXCT; cmdLog.cId = ACI_NumParmNotPresent; cmdLog.sId = sId+1; cmdLog.cmdPrm.qCCBS.srcId = srcId; rAT_PercentCLOG( &cmdLog ); } #endif return( AT_EXCT ); } /* +--------------------------------------------------------------------+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PercentCSCN | +--------------------------------------------------------------------+ PURPOSE : This is the functional counterpart to the %CSCN AT command which is responsible to query the settings. */ GLOBAL T_ACI_RETURN qAT_PercentCSCN ( T_ACI_CMD_SRC srcId, T_ACI_SS_CSCN_MOD_STATE *ss_switch, T_ACI_SS_CSCN_MOD_DIRECTION *ss_direction, T_ACI_CC_CSCN_MOD_STATE *cc_switch, T_ACI_CC_CSCN_MOD_DIRECTION *cc_direction ) { TRACE_FUNCTION ("qAT_PercentCSCN ()"); if(!cmh_IsVldCmdSrc (srcId)) { /* check command source */ ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } *ss_switch = cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeState; *ss_direction = cmhPrm[srcId].ssCmdPrm.CSCNss_mode.SsCSCNModeDirection; *cc_switch = cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeState; *cc_direction = cmhPrm[srcId].ccCmdPrm.CSCNcc_mode.CcCSCNModeDirection; return( AT_CMPL); } #ifdef SIM_PERS /* +===========================================================+ | PROJECT : GSM-PS (6147) MODULE : CMH_SSQ | | STATE : code ROUTINE : qAT_PercentMEPD | | | |This is the functional counterpart to the %MEPD AT command | |which is responsible to query MEPD Configuration Data. | +===========================================================+ */ GLOBAL T_ACI_RETURN qAT_PercentMEPD( T_ACI_CMD_SRC srcId, T_SUP_INFO *sup_info) { T_OPER_RET_STATUS rlockstatus; TRACE_FUNCTION ("qAT_ PercentMEPD()"); /* *------------------------------------------------------------------- * check command source *------------------------------------------------------------------- */ if(!cmh_IsVldCmdSrc (srcId)) { ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); return( AT_FAIL ); } rlockstatus=aci_slock_sup_info(sup_info); if (rlockstatus EQ OPER_SUCCESS) { return (AT_CMPL); } else if (rlockstatus EQ OPER_FAIL) { ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_Unknown); return( AT_FAIL ); } return( AT_EXCT ); } #endif //SIM_PERS /*==== EOF ========================================================*/