FreeCalypso > hg > leo2moko-debug
diff g23m/condat/ms/src/aci/cmh_ssq.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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/aci/cmh_ssq.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,1363 @@ +/* ++----------------------------------------------------------------------------- +| 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 ========================================================*/