FreeCalypso > hg > fc-magnetite
diff src/aci2/aci/cmh_mmq.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/aci2/aci/cmh_mmq.c Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,1078 @@ +/* ++----------------------------------------------------------------------------- +| Project : GSM-PS (6147) +| Modul : CMH_MMQ ++----------------------------------------------------------------------------- +| 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 mobility management. ++----------------------------------------------------------------------------- +*/ + +#ifndef CMH_MMQ_C +#define CMH_MMQ_C +#endif + +#include "aci_all.h" + +/*==== INCLUDES ===================================================*/ +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" +#include "aci.h" + +#ifdef FAX_AND_DATA +#include "aci_fd.h" +#endif /* of #ifdef FAX_AND_DATA */ + +#include "pcm.h" +#include "psa.h" +#include "psa_mm.h" +#include "psa_util.h" +#include "cmh.h" +#include "cmh_mm.h" +#include "rx.h" + +#include "rtc.h" + +#ifdef FF_TIMEZONE +#include "rv/rv_general.h" +#include "rtc/rtc_tz.h" +#endif + +#ifdef GPRS +#include "gaci_cmh.h" +#include "psa_gmm.h" +#endif + +#ifndef _SIMULATION_ +/******************************/ +/* just to get FFS !!!! */ +/* TEMPORARY until use of NVM */ +#ifndef GPRS +#define DONT_LET_FFSH2_DEF_GPRS +#endif + +#include "ffs/ffs.h" + + +/* check whether latter has defined GPRS !!! */ +#ifdef DONT_LET_FFSH2_DEF_GPRS +#undef GPRS +#endif + +#undef DONT_LET_FFSH2_DEF_GPRS +/***************************/ +#endif /* _SIMULATION_ */ + + +/*==== CONSTANTS ==================================================*/ + +/*==== EXPORT =====================================================*/ + +/*==== VARIABLES ==================================================*/ +#if defined (GPRS) && defined (DTI) +EXTERN T_GMM_SHRD_PRM gmmShrdPrm; +#endif +EXTERN T_ONS_READ_STATE ONSReadStatus; +/*==== FUNCTIONS ==================================================*/ + +EXTERN BOOL cmhSIM_plmn_is_hplmn(); + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PercentBAND | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the %BAND? AT command + which returns the current multiband configuration. + + <bandMode>: band switch mode. + <bandType>: band selection. +*/ + +GLOBAL T_ACI_RETURN qAT_PercentBAND(T_ACI_CMD_SRC srcId, + T_ACI_BAND_MODE *bandMode, + UBYTE *bandType) +{ + UBYTE freq_bands, dummy; + + TRACE_FUNCTION ("qAT_PercentBAND()"); + + /* check command source */ + if(!cmh_IsVldCmdSrc (srcId)) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + if( bandMode EQ NULL OR + bandType EQ NULL ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + cmhMM_getBandSettings( &freq_bands, &dummy ); + + if( freq_bands EQ 0x00 ) + { + *bandType = 0x00; /* not really meanful here... */ + *bandMode = BAND_MODE_Auto; + } + else + { + *bandType = freq_bands; + *bandMode = BAND_MODE_Manual; + } + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PlusCOPS | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +COPS? AT command + which returns the current setting of mode, format and + operator. + + <mode>: registration mode. + <format>: format of operator + <oper>: operator string +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCOPS ( T_ACI_CMD_SRC srcId, + T_ACI_COPS_MOD * mode, + T_ACI_COPS_FRMT * format, + CHAR * oper ) +{ + T_MM_CMD_PRM * pMMCmdPrm; /* points to MM command parameters */ + + TRACE_FUNCTION ("qAT_PlusCOPS()"); + + /* check command source */ + if(!cmh_IsVldCmdSrc (srcId)) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + pMMCmdPrm = &cmhPrm[srcId].mmCmdPrm; + + /* fill in parameters */ + switch(mmShrdPrm.COPSmode) + { + case(COPS_MOD_Auto): + case(COPS_MOD_Man): + case(COPS_MOD_Dereg): + *mode = mmShrdPrm.COPSmode; + break; + + /*case(COPS_MOD_SetOnly): mmShrdPrm.COPSmode can't have been + set with this value...*/ + case(COPS_MOD_Both): + if(mmShrdPrm.regModeAutoBack) + { + *mode = COPS_MOD_Man; + } + else + *mode = COPS_MOD_Auto; + + break; + default: + *mode = mmShrdPrm.regMode; + break; + } + + *format = pMMCmdPrm -> COPSfrmt; + *oper = 0x0; + + cmhMM_OperatorQuery(srcId,pMMCmdPrm -> COPSfrmt,oper); + + TRACE_EVENT(oper); + + return( AT_CMPL ); +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PercentCOPS | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +COPS? AT command + which returns the current setting of mode, format and + operator. + + <mode>: registration mode. + <format>: format of operator + <oper>: operator string +*/ + +GLOBAL T_ACI_RETURN qAT_PercentCOPS ( T_ACI_CMD_SRC srcId, + T_ACI_COPS_MOD * mode, + T_ACI_COPS_FRMT * format, + T_ACI_COPS_SVST * svrStatus, + CHAR * oper ) +{ + T_MM_CMD_PRM * pMMCmdPrm; /* points to MM command parameters */ + + TRACE_FUNCTION ("qAT_PercentCOPS()"); + + /* check command source */ + if(!cmh_IsVldCmdSrc (srcId)) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + pMMCmdPrm = &cmhPrm[srcId].mmCmdPrm; + + /* fill in parameters */ + switch(mmShrdPrm.COPSmode) + { + case(COPS_MOD_Auto): + case(COPS_MOD_Man): + case(COPS_MOD_Dereg): + *mode = mmShrdPrm.COPSmode; + break; + + /*case(COPS_MOD_SetOnly): mmShrdPrm.COPSmode can't have been + set with this value...*/ + case(COPS_MOD_Both): + if(mmShrdPrm.regModeAutoBack) + { + *mode = COPS_MOD_Man; + } + else + *mode = COPS_MOD_Auto; + + break; + default: + *mode = mmShrdPrm.regMode; + break; + } + + *format = pMMCmdPrm -> COPSfrmt; + + + switch( mmShrdPrm.regStat ) + { + case( NO_VLD_RS ): + case( RS_NO_SRV ): *svrStatus = COPS_SVST_NoSrv; break; + case( RS_LMTD_SRV ): *svrStatus =COPS_SVST_Limited; break; + case( RS_FULL_SRV ): *svrStatus = COPS_SVST_Full; break; + default: *svrStatus = COPS_SVST_NotPresent; break; + } + + + *oper = 0x0; + + + + cmhMM_OperatorQuery(srcId,pMMCmdPrm -> COPSfrmt,oper); + + return( AT_CMPL ); +} + + + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PlusCREG | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +CREG? AT command + which returns the current setting of registration status. + + <stat>: registration status. + <lac>: current lac. + <cid>: current cell id. +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCREG ( T_ACI_CMD_SRC srcId, + T_ACI_CREG_STAT *stat, + USHORT *lac, + USHORT *cid ) +{ + + TRACE_FUNCTION ("qAT_PlusCREG()"); + +/* + *------------------------------------------------------------------- + * fill in parameters + *------------------------------------------------------------------- + */ + *stat = mmShrdPrm.creg_status; + *lac = mmShrdPrm.lac; + *cid = mmShrdPrm.cid; + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PercentCREG | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +CREG? AT command + which returns the current setting of registration status. + + <stat>: registration status. + <lac>: current lac. + <cid>: current cell id. + <gprs_ind>: if GPRS is available or not +*/ + +GLOBAL T_ACI_RETURN qAT_PercentCREG ( T_ACI_CMD_SRC srcId, + T_ACI_CREG_STAT *stat, + USHORT *lac, + USHORT *cid, + T_ACI_P_CREG_GPRS_IND *gprs_ind ) +{ + + TRACE_FUNCTION ("qAT_PercentCREG()"); + + qAT_PlusCREG (srcId, stat, lac, cid); + +#if defined (GPRS) AND defined (DTI) + *gprs_ind = gmmShrdPrm.gprs_indicator; +#else + *gprs_ind = P_CREG_GPRS_Not_Supported; /* ACI-SPR-17218: use ACI type */ +#endif /* GPRS */ + + return( AT_CMPL ); +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PlusWS46 | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +WS46? AT + command which returns the current setting wireless network + selection. + + <mode>: network mode. +*/ + +GLOBAL T_ACI_RETURN qAT_PlusWS46 (T_ACI_CMD_SRC srcId, + T_ACI_WS46_MOD * mode ) +{ + + TRACE_FUNCTION ("qAT_PlusWS46()"); + +/* + *------------------------------------------------------------------- + * fill in parameters + *------------------------------------------------------------------- + */ + *mode = WS46_MOD_Gsm; + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PlusCOPN | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +COPN AT + command which returns the current operator names stored in + ME. + + <lstId>: list identifier. + <startIdx>: start index to read from. + <lastIdx>: buffer for index of last copied name. + <oprLstBuf>: buffer for operator names. length of MAX_OPER. +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCOPN ( T_ACI_CMD_SRC srcId, + T_ACI_COPN_LID lstId, + SHORT startIdx, + SHORT *lastIdx, + T_ACI_COPN_OPDESC *oprLstBuf) +{ + USHORT idx; /* holds list idx */ + EF_PLMN plmnBuf; /* buffer PCM entry */ + USHORT maxRec; /* holds maximum records */ + USHORT recNr; /* holds record number */ + USHORT oprLstLen; /* holds fixed oper list length */ + UBYTE retVal; /* holds return value */ + UBYTE ver; /* holds version */ + UBYTE len; /* holds operator name length */ + + TRACE_FUNCTION ("qAT_PlusCOPN()"); + +/* + *------------------------------------------------------------------- + * determine list identifier + *------------------------------------------------------------------- + */ + switch( lstId ) + { + /* + *----------------------------------------------------------------- + * for the list in permanent configuration memory + *----------------------------------------------------------------- + */ + case( COPN_LID_Pcm ): + + recNr = startIdx+1; + idx = 0; + + do + { + retVal= pcm_ReadRecord( (UBYTE *) EF_PLMN_ID, recNr, SIZE_EF_PLMN, + (UBYTE *) &plmnBuf, &ver, &maxRec ); + + if( retVal EQ PCM_INVALID_SIZE OR retVal EQ PCM_INVALID_RECORD ) + { + if( idx EQ 0 ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_InvIdx ); + return( AT_FAIL ); + } + break; + } + + if( plmnBuf.mcc[0] NEQ 0xFF AND plmnBuf.mnc[0] NEQ 0xFF AND + plmnBuf.lngNam[0] NEQ 0xFF ) + { + sprintf(oprLstBuf[idx].numOper, "%03X%02X", + ((plmnBuf.mcc[0]<<8) + plmnBuf.mcc[1]), + ((plmnBuf.mnc[0]<<8) + plmnBuf.mnc[1])); + + for( len = 0; + len < SIZE_EF_PLMN_LONG AND plmnBuf.lngNam[len] NEQ 0xFF; + len++ ) + ; + + utl_cvtGsmIra( plmnBuf.lngNam, len, + (UBYTE*)oprLstBuf[idx].alphaOper, + MAX_ALPHA_OPER_LEN, + CSCS_DIR_GsmToIra ); + + oprLstBuf[idx].alphaOper[MINIMUM(len,MAX_ALPHA_OPER_LEN-1)] = 0x0; + idx++; + } + + recNr++; + } + while( idx < MAX_OPER ); + + break; + /* + *----------------------------------------------------------------- + * for the list in constant memory + *----------------------------------------------------------------- + */ + case( COPN_LID_Cnst ): + + oprLstLen = cmhMM_GetOperLstLen(); + + if( startIdx >= oprLstLen ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_InvIdx ); + return( AT_FAIL ); + } + + for( idx = 0, recNr = startIdx; + idx < MAX_OPER AND recNr < oprLstLen; + idx++, recNr++ ) + { + if ((operListFixed[recNr].mnc & 0x00F) EQ 0xF) + { + /*lint -e{702} */ + sprintf(oprLstBuf[idx].numOper, "%03X%02X", + operListFixed[recNr].mcc, + operListFixed[recNr].mnc >> 4); + } + else + { + sprintf(oprLstBuf[idx].numOper, "%03X%02X", + operListFixed[recNr].mcc, + operListFixed[recNr].mnc); + } + + strncpy( oprLstBuf[idx].alphaOper, operListFixed[recNr].longName, + MAX_ALPHA_OPER_LEN-1 ); + + oprLstBuf[idx].alphaOper[MAX_ALPHA_OPER_LEN-1] = 0x0; + } + break; + /* + *----------------------------------------------------------------- + * unexpected list type + *----------------------------------------------------------------- + */ + default: + + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + +/* + *------------------------------------------------------------------- + * terminate list and set last index + *------------------------------------------------------------------- + */ + if( idx < MAX_OPER ) + { + oprLstBuf[idx].numOper[0] = 0x0; + oprLstBuf[idx].alphaOper[0] = 0x0; + } + + + *lastIdx = ( recNr NEQ 0 )?recNr-1:0; + + return( AT_CMPL ); +} + +/* ++-------------------------------------------------------------------+ +| NEW AT Command qAT_PercentCOPN | +| | ++-------------------------------------------------------------------+ +*/ + /*The same function in EDGE should be remved from ACIA when EDGE is + merged to the UMTS*/ + +GLOBAL T_ACI_RETURN qAT_PercentCOPN( T_ACI_CMD_SRC srcId, + T_ACI_COPS_FRMT format, + CHAR *opr, + T_ACI_OPER_NTRY *oper_ntry) +{ + T_ACI_RETURN retval = AT_FAIL; + T_OPER_ENTRY plmnDesc; + BOOL found; + + if(format EQ COPS_FRMT_Numeric) + { + found = cmhMM_FindNumeric(&plmnDesc, opr); + } + else + { + found = cmhMM_FindName(&plmnDesc, opr, format); + } + if (found) + { + oper_ntry->mcc = plmnDesc.mcc; + oper_ntry->mnc = plmnDesc.mnc; + strncpy (oper_ntry->longName, plmnDesc.longName, sizeof(oper_ntry->longName)); + oper_ntry->longName[sizeof(oper_ntry->longName) - 1] = '\0'; + strncpy ((CHAR *)oper_ntry->shrtName, plmnDesc.shrtName, sizeof(oper_ntry->shrtName)); + oper_ntry->shrtName[sizeof(oper_ntry->shrtName) - 1] = '\0'; + oper_ntry->long_len = plmnDesc.long_len; + oper_ntry->shrt_len = plmnDesc.shrt_len; + if (plmnDesc.pnn) + { + oper_ntry->source = Read_EONS; + } + else if ((ONSReadStatus EQ ONS_READ_OVER) AND (cmhSIM_plmn_is_hplmn (plmnDesc.mcc, plmnDesc.mnc)) + AND format EQ COPS_FRMT_Numeric) + { + oper_ntry->source = Read_CPHS; + } + else + { + oper_ntry->source = Read_ROM_TABLE; + } + } + else + { + oper_ntry->longName[0] = '\0'; + oper_ntry->shrtName[0] = '\0'; + oper_ntry->mcc = 0; + oper_ntry->mnc = 0; + oper_ntry->source = Read_INVALID; + } + return AT_CMPL; +} + + + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMQ | +| STATE : code ROUTINE : qAT_PercentNRG | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the %NRG? AT command + which returns the current setting of registration mode and + service mode and the current status of service. + + <regMode>: registration mode. + <srvMode>: service mode. + <oprFrmt>: operator format. + <srvStat>: service status. + <oper> : operator +*/ + +GLOBAL T_ACI_RETURN qAT_PercentNRG( T_ACI_CMD_SRC srcId, + T_ACI_NRG_RGMD *regMode, + T_ACI_NRG_SVMD *srvMode, + T_ACI_NRG_FRMT *oprFrmt, + T_ACI_NRG_SVMD *srvStat, + CHAR *oper) +{ + + T_ACI_COPS_FRMT copsFormat; + + + TRACE_FUNCTION ("qAT_PercentNRG()"); + +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + +/* + *------------------------------------------------------------------- + * fill in parameters + *------------------------------------------------------------------- + */ + switch( mmShrdPrm.regStat ) + { + case( NO_VLD_RS ): + case( RS_NO_SRV ): *srvStat = NRG_SVMD_NoSrv; break; + case( RS_LMTD_SRV ): *srvStat = NRG_SVMD_Limited; break; + case( RS_FULL_SRV ): *srvStat = NRG_SVMD_Full; break; + default: *srvStat = NRG_SVMD_NotPresent; break; + } + + *srvMode = cmhPrm[srcId].mmCmdPrm.NRGsrvMode; + *oprFrmt = cmhPrm[srcId].mmCmdPrm.NRGoprFrmt; + *oper = 0x0; + + *regMode = cmhPrm[srcId].mmCmdPrm.NRGregMode; + + switch( *oprFrmt ) + { + case( NRG_FRMT_NotPresent ): + copsFormat = COPS_FRMT_NotPresent; + break; + case( NRG_FRMT_Numeric ): + copsFormat = COPS_FRMT_Numeric ; + break; + case( NRG_FRMT_Short): + copsFormat = COPS_FRMT_Short ; + break; + case( NRG_FRMT_Long): + copsFormat = COPS_FRMT_Long; + break; + default: + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + + cmhMM_OperatorQuery(srcId,copsFormat,oper); + + + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : ACI/MMI MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PercentCSQ | ++--------------------------------------------------------------------+ + + PURPOSE : This is the function for Signal Quality query + + Shen,Chao + Juni.13th, 2003 +*/ + +GLOBAL T_ACI_RETURN qAT_PercentCSQ( T_ACI_CMD_SRC srcId, + UBYTE *rssi, + UBYTE *ber, + UBYTE *actlevel) +{ + rx_Status_Type rxStat; + + TRACE_FUNCTION("qAT_PercentCSQ()"); + + if ( rx_GetStatus ( &rxStat ) NEQ DRV_OK ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return ATI_FAIL; + } + else + { + if ( rxStat.gsmLevel EQ 0xFF OR rxStat.gsmLevel EQ 0 ) + { + *rssi = ACI_RSSI_FAULT; + } + else if ( rxStat.gsmLevel > 59 ) + { + *rssi = 31; + } + else + { + *rssi = ( rxStat.gsmLevel / 2 ) + 2; + } + + if ( rxStat.rxQuality EQ RX_QUAL_UNAVAILABLE ) + { + *ber = ACI_BER_FAULT; + } + else + { + *ber = rxStat.rxQuality; + } + + *actlevel = rxStat.actLevel; + + return ATI_CMPL; + } +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : ACI/MMI MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PercentDBGINFO | ++--------------------------------------------------------------------+ + + PURPOSE : query free mem pool blocks. +*/ +GLOBAL T_ACI_RETURN qAT_PercentDBGINFO(T_ACI_CMD_SRC srcId, + ULONG param, + USHORT stor, + USHORT *free, + USHORT *alloc) +{ + int ret=0; + + TRACE_FUNCTION ("qAT_PercentDBGINFO()"); + /* + *----------------------------------------------------------------- + * check command source + *----------------------------------------------------------------- + */ + if( ! cmh_IsVldCmdSrc (srcId) ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return (AT_FAIL); + } + + ret = vsi_m_status (hCommACI, + param, + (USHORT)stor, + free, + alloc ); + if (ret EQ VSI_ERROR OR *free EQ 0) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_MemFull ); + return (ATI_FAIL); + } + + return (ATI_CMPL); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PlusCTZR | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +CTZR AT command + which will query the status of CTZRmode, indicating whether time + zone change rep[orting is enabled or disabled. + + <on/off>: Indicates whether time zone reporting is enabled or disabled. +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCTZR ( T_ACI_CMD_SRC srcId, + T_ACI_CTZR_MODE *mode) +{ + TRACE_FUNCTION ("qAT_PlusCTZR()"); + +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + TRACE_EVENT_P1("qAT_PlusCTZR(): Invalid source: %d", srcId); + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + *mode = cmhPrm[srcId].mmCmdPrm.CTZRMode; + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PlusCTZU | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the +CTZU AT command + which will query the status of CTZUmode, indicating whether time + zone automatic update is enabled or disabled. + + <on/off>: Indicates whether time zone automatic update is enabled or disabled. +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCTZU ( T_ACI_CMD_SRC srcId, + T_ACI_CTZU_MODE *mode) +{ + TRACE_FUNCTION ("qAT_PlusCTZU()"); + +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + TRACE_EVENT_P1("qAT_PlusCTZU(): Invalid source: %d", srcId); + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + *mode = cmhPrm[srcId].mmCmdPrm.CTZUMode; + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PlusCCLK | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the sAT_PlusCCLK command + which will query the status of the RTC in the MT, indicating what the time + is in the MT. +*/ +GLOBAL T_ACI_RETURN qAT_PlusCCLK ( T_ACI_CMD_SRC srcId, + T_ACI_RTC_DATE *date_s, + T_ACI_RTC_TIME *time_s, + int * timeZone + ) +{ + UBYTE ret; + + TRACE_FUNCTION ("qAT_PlusCCLK()"); +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + TRACE_EVENT_P1("qAT_PlusCCLK(): Invalid source: %d", srcId); + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + TRACE_EVENT("qAT_PlusCCLK(): get time and date " ); +#ifndef _SIMULATION_ + ret = rtc_get_time_date((T_RTC_DATE *) date_s, (T_RTC_TIME *) time_s); + + switch (ret) + { + case 0: /* RVF_OK */ +#ifdef FF_TIMEZONE + *timeZone = RTC_GetCurrentTZ(); /* Get current timezone now time and date are obtained.*/ + TRACE_EVENT_P1("qAT_PlusCCLK(): timezone obatained: %d", *timeZone); +#endif /* FF_TIMEZONE */ + return( AT_CMPL ); + default: + TRACE_EVENT_P1("qAT_PlusCCLK(): ERROR: %d", ret); /* RVF_NOT_READY or RVF_INTERNAL ERROR */ + return( AT_FAIL ); + } +#else /* _SIMULATION_ */ +/* Set return info for date time to: "04/08/17,13:31:04-10" */ + date_s->year = 2004; + date_s->month = 8; + date_s->day = 17; + + time_s->hour = 13; + time_s->minute = 31; + time_s->second = 4; + + time_s->format = 0; /* RTC_TIME_FORMAT_24HOUR = 0 */ + time_s->PM_flag = 0; + *timeZone = -10; /* Set timezone to -10 */ + return( AT_CMPL ); +#endif /* _SIMULATION_ */ + +} + + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PercentCTZV | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the %CTZV AT command + which will query the status of PCTZVmode, indicating whether time + and date report is enabled or disabled. + + <on/off>: Indicates whether time and date report is enabled or disabled. +*/ + +GLOBAL T_ACI_RETURN qAT_PercentCTZV ( T_ACI_CMD_SRC srcId, + T_ACI_PCTZV_MODE *mode) +{ + TRACE_FUNCTION ("qAT_PercentCTZV()"); + +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + TRACE_EVENT_P1("qAT_PercentCTZV(): Invalid source: %d", srcId); + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + *mode = cmhPrm[srcId].mmCmdPrm.PCTZVMode; + + return( AT_CMPL ); +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PercentCNIV | ++--------------------------------------------------------------------+ + + PURPOSE : This is the functional counterpart to the %CNIV AT command + which will query the status of CNIVmode, indicating whether time + and date report is enabled or disabled. + + <on/off>: Indicates whether time and date report is enabled or disabled. +*/ + +GLOBAL T_ACI_RETURN qAT_PercentCNIV ( T_ACI_CMD_SRC srcId, + T_ACI_CNIV_MODE *mode) +{ + TRACE_FUNCTION ("qAT_PercentCNIV()"); + +/* + *------------------------------------------------------------------- + * check command source + *------------------------------------------------------------------- + */ + if(!cmh_IsVldCmdSrc (srcId)) + { + TRACE_EVENT_P1("qAT_PercentCNIV(): Invalid source: %d", srcId); + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + *mode = cmhPrm[srcId].mmCmdPrm.CNIVMode; + + return( AT_CMPL ); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : ACI/MMI MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PlusCIND | ++--------------------------------------------------------------------+ + + PURPOSE : This is the function for Signal Quality query +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCIND ( T_ACI_CMD_SRC srcId, + T_ACI_CIND_SIGNAL_TYPE *sCindSgnalSettings, + T_ACI_CIND_SMSFULL_TYPE *sCindSmsFullSettings ) +{ + T_ACI_MM_CIND_VAL_TYPE *pMMCmdPrm; + + TRACE_FUNCTION ("qAT_PlusCIND()"); + + if( !cmh_IsVldCmdSrc( srcId ) || (sCindSgnalSettings == NULL) || (sCindSmsFullSettings == NULL) ) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + pMMCmdPrm = &(cmhPrm[srcId].mmCmdPrm.sIndicationParam.sMmCINDSettings); + + *sCindSgnalSettings = pMMCmdPrm->sCindSignalParam; + *sCindSmsFullSettings = pMMCmdPrm->sCindSmsFullParam; + + return(AT_CMPL); +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : ACI/MMI MODULE : CMH_MMS | +| STATE : code ROUTINE : qAT_PlusCMER | ++--------------------------------------------------------------------+ + + PURPOSE : This is the function for Signal Quality query +*/ + +GLOBAL T_ACI_RETURN qAT_PlusCMER ( T_ACI_CMD_SRC srcId, + T_ACI_CMER_MODE_TYPE *sCmerModeSettings, + T_ACI_CMER_IND_TYPE *sCmerIndicationSettings, + T_ACI_CMER_BFR_TYPE *sCmerBfrSettings ) + +{ + T_ACI_MM_CMER_VAL_TYPE *pMMCmdPrm; + + TRACE_FUNCTION ("qAT_PlusCMER()"); + + if( !cmh_IsVldCmdSrc( srcId ) || (sCmerModeSettings == NULL) || + (sCmerIndicationSettings == NULL) || (sCmerBfrSettings == NULL)) + { + ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter ); + return( AT_FAIL ); + } + + pMMCmdPrm = &(cmhPrm[srcId].mmCmdPrm.sIndicationParam.sMmCMERSettings); + + *sCmerModeSettings = pMMCmdPrm->sCmerModeParam; + *sCmerIndicationSettings = pMMCmdPrm->sCmerIndParam; + *sCmerBfrSettings = pMMCmdPrm->sCmerBfrParam; + + return(AT_CMPL); +} + +/*==== EOF ========================================================*/