VOS_VOID NAS_ESM_SndAirMsgReportInd
(
    const VOS_UINT8                    *pucData,
    VOS_UINT32                          ulLength,
    NAS_ESM_AIR_MSG_DIR_ENUM_UINT8      enMsgDir,
    OM_PS_AIR_MSG_ENUM_UINT8            enMsgId
)
{
#ifndef PS_ITT_PC_TEST
    DIAG_AIR_IND_STRU       stAirMsg;
    VOS_UINT8                  *pucTmpData = VOS_NULL_PTR;

    /*分配空口消息空间*/
    pucTmpData = (VOS_UINT8*)
                        NAS_ESM_MEM_ALLOC(ulLength);

    if(VOS_NULL_PTR== pucTmpData)
    {
        NAS_ESM_ERR_LOG("NAS_ESM_SndAirMsgReportInd: MEM_ALLOC ERR!");
        TLPS_PRINT2LAYER_ERROR(NAS_ESM_SndAirMsgReportInd_ENUM, LNAS_EMM_ALLOC_FAIL);
        return;
    }


    NAS_ESM_MEM_CPY_S(pucTmpData, ulLength, pucData, ulLength);

    /*设置空口消息方向*/
    if(NAS_ESM_AIR_MSG_DIR_ENUM_UP == enMsgDir)
    {
        stAirMsg.ulModule = LPS_OM_ID(PS_PID_ESM, OS_MSG_UL);
        stAirMsg.ulPid = PS_PID_ESM;
        stAirMsg.ulDirection = DIAG_SIDE_NET;
    }
    else
    {
        stAirMsg.ulModule = LPS_OM_ID(PS_PID_ESM, OS_MSG_DL);
        stAirMsg.ulPid = PS_PID_ESM;
        stAirMsg.ulDirection = DIAG_SIDE_UE;
    }
    stAirMsg.ulMsgId = (VOS_UINT32)(enMsgId+ PS_MSG_ID_AIR_BASE);
    stAirMsg.ulLength = ulLength;
    stAirMsg.pData = (void*)pucTmpData;

    /*上报空口消息*/
    if(ERR_MSP_SUCCESS != LDRV_DIAG_AIRMSGREPORT(&stAirMsg))
    {
        NAS_ESM_WARN_LOG("NAS_ESM_SndAirMsgReportInd: Send Msg Fail!");
        TLPS_PRINT2LAYER_WARNING(NAS_ESM_SndAirMsgReportInd_ENUM, LNAS_FAIL);
    }

    /*释放空口消息空间*/
    NAS_ESM_MEM_FREE(pucTmpData);


#endif

    NAS_ESM_NORM_LOG("ESM->OMT: PS_OMT_AIR_MSG_REPORT_IND\r");
    TLPS_PRINT2LAYER_INFO(NAS_ESM_SndAirMsgReportInd_ENUM, 1);

}
VOS_VOID NAS_ESM_SndKeyEventReportInd(OM_PS_KEY_EVENT_ENUM_UINT8 enKeyEvent)
{
#if (VOS_WIN32 != VOS_OS_VER)
    DIAG_EVENT_IND_STRU stDiagEventInd;

#ifndef PS_ITT_PC_TEST

    NAS_ESM_MEM_SET_S(  &stDiagEventInd,
                        sizeof(DIAG_EVENT_IND_STRU),
                        0,
                        sizeof(DIAG_EVENT_IND_STRU));

    stDiagEventInd.ulModule = LPS_OM_ID(UE_MODULE_ESM_ID, DIAG_LOG_TYPE_INFO);
    stDiagEventInd.ulPid = UE_MODULE_ESM_ID;
    stDiagEventInd.ulEventId = (VOS_UINT32)(enKeyEvent+OM_PS_KEY_EVENT_BASE_ID);

    /*lint -e778*/
    /*lint -e648*/
    if(ERR_MSP_SUCCESS != LDRV_DIAG_EVENTREPORT(&stDiagEventInd))
    {
        NAS_ESM_WARN_LOG("NAS_ESM_SndKeyEventReportInd: Send Msg Fail!");
        TLPS_PRINT2LAYER_WARNING(NAS_ESM_SndKeyEventReportInd_ENUM, LNAS_FAIL);
    }
    /*lint +e648*/
    /*lint +e778*/
#endif

#endif

    NAS_ESM_NORM_LOG("ESM->OMT: PS_OMT_KEY_EVT_REPORT_IND\r");
    TLPS_PRINT2LAYER_INFO(NAS_ESM_SndKeyEventReportInd_ENUM, 1);
}
VOS_VOID NAS_ESM_ProcTimerMsgAttachBearerReestExp(const VOS_VOID * pMsg)
{
    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgAttachBearerReestExp is entered.");

    (VOS_VOID)pMsg;

    /*如果支持双APN,则检查注册承载,并进行处理*/
    if (NAS_ESM_OP_TRUE == NAS_ESM_AttachBearerReestEnable())
    {
        if (NAS_ESM_UNASSIGNED_EPSB_ID == NAS_ESM_GetAttachBearerId())
        {
            NAS_ESM_ReestablishAttachBearer();
        }
    }
}
VOS_VOID  NAS_ESM_ProcValidNwMsgResAllocRej
(
    VOS_UINT32                          ulStateTblIndex,
    const EMM_ESM_INTRA_DATA_IND_STRU  *pRcvMsg
)
{
    NAS_ESM_STATE_INFO_STRU            *pstStateAddr       = VOS_NULL_PTR;
    VOS_UINT32                          ulTmpStateTblIndex =  NAS_ESM_NULL;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcValidNwMsgResAllocRej is entered.");
    TLPS_PRINT2LAYER_INFO(NAS_ESM_ProcValidNwMsgResAllocRej_ENUM, LNAS_ENTRY);

    /*停止定时器*/
    NAS_ESM_TimerStop(ulStateTblIndex, TI_NAS_ESM_T3480);

    pstStateAddr = NAS_ESM_GetStateTblAddr(ulStateTblIndex);

    if(ID_APP_ESM_PDP_SETUP_REQ == pstStateAddr->stAppMsgRecord.enAppMsgType )
    {
        if( NAS_ESM_CAUSE_INVALID_EPS_BEARER_IDENTITY == pRcvMsg->stEsmNwMsgIE.enEsmCau )
        {
            /* 本地释放此承载的关联缺省承载和相关承载 */
            NAS_ESM_DeactBearerAndInformApp(pstStateAddr->ulLinkedEpsbId);

            /*通知EMM当前承载状态信息,发送ID_EMM_ESM_BEARER_STATUS_REQ*/
            NAS_ESM_SndEsmEmmBearerStatusReqMsg(EMM_ESM_BEARER_CNTXT_MOD_MUTUAL);

            /*清除和中止与ulEpsbId关联的流程信息*/
            if(NAS_ESM_SUCCESS == NAS_ESM_QueryStateTblIndexByEpsbId(pstStateAddr->ulLinkedEpsbId, &ulTmpStateTblIndex))
            {
                NAS_ESM_RelStateTblResource(ulTmpStateTblIndex);
            }
        }
        /*向APP发送ID_APP_ESM_BEARER_SETUP_CNF(失败)消息*/
        NAS_ESM_SndEsmAppSdfSetupCnfFailMsg(ulStateTblIndex, \
                 NAS_ESM_GetAppErrorByEsmCause(pRcvMsg->stEsmNwMsgIE.enEsmCau));
    }

    /*释放状态表资源*/
    NAS_ESM_RelStateTblResource(ulStateTblIndex);
}
/*****************************************************************************
 Function Name   : NAS_ESM_ProcTimerMsgWaitAppCnfExp
 Description     : 等待APP回复定时器超时处理函数
 Input           : VOS_VOID *pMsg
 Output          : None
 Return          : VOS_VOID

 History         :
    1.lihong00150010      2009-12-4  Draft Enact

*****************************************************************************/
VOS_VOID NAS_ESM_ProcTimerMsgWaitAppCnfExp(const VOS_VOID * pMsg)
{
    VOS_UINT32                          ulStateTblIndex     = NAS_ESM_NULL;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgWaitAppCnfExp is entered.");

    /*获取消息中包含的状态表StateTblIndex*/
    ulStateTblIndex = PS_GET_REL_TIMER_NAME(pMsg);

    if (NAS_ESM_L_MODE_STATUS_NORMAL != NAS_ESM_GetLModeStatus())
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgWaitAppCnfExp: L mode is already suspended!");

        /*释放状态表资源*/
        NAS_ESM_RelStateTblResource(ulStateTblIndex);

        return ;
    }

    /* App拒绝承载激活或承载修改的处理 */
    NAS_ESM_AppPdpManageRspMsgRefuseProc(ulStateTblIndex);
}
VOS_VOID NAS_ESM_OmInfoIndMsgProc(VOS_VOID *pRcvMsg)
{
    OM_ESM_INFO_REPORT_REQ_STRU        *pEsmOmInfoReqMsg;
    OM_ESM_INFO_REPORT_CNF_STRU        *pEsmOmInfoCnfMsg;

    NAS_ESM_NORM_LOG("NAS_ESM_OMInfoIndMsgProc: enter !!");
    TLPS_PRINT2LAYER_INFO(NAS_ESM_OmInfoIndMsgProc_ENUM, LNAS_ENTRY);

    pEsmOmInfoReqMsg = (OM_ESM_INFO_REPORT_REQ_STRU *)pRcvMsg;

    if (OM_ESM_INFO_REPORT_OPEN == pEsmOmInfoReqMsg->enRptCtrl)
    {
        g_NasEsmOmInfoIndFlag = OM_ESM_REPORT_INFO_OPEN;
    }
    else
    {
        g_NasEsmOmInfoIndFlag = OM_ESM_REPORT_INFO_CLOSE;

    }
    /* 将保存上报信息的全局变量清除 */
    NAS_ESM_MEM_SET_S(  g_stEsmOmInfo,
                        sizeof(OM_ESM_STATE_INFO_STRU)*APP_ESM_MAX_EPSB_NUM,
                        NAS_ESM_NULL,
                        sizeof(OM_ESM_STATE_INFO_STRU)*APP_ESM_MAX_EPSB_NUM);

    /* 为消息分配地址 */
    pEsmOmInfoCnfMsg = (VOS_VOID *)NAS_ESM_ALLOC_MSG(sizeof(OM_ESM_INFO_REPORT_CNF_STRU));
    if(VOS_NULL_PTR  == pEsmOmInfoCnfMsg)
    {
        NAS_ESM_WARN_LOG("NAS_ESM_AppInfoIndMsgProc: NAS_LMM_ALLOC_MSG alloc NULL_PTR !!");
        TLPS_PRINT2LAYER_WARNING(NAS_ESM_OmInfoIndMsgProc_ENUM, LNAS_EMM_ALLOC_FAIL);
        return;
    }


    /*清空*/
    NAS_ESM_MEM_SET_S(  NAS_ESM_GET_MSG_ENTITY(pEsmOmInfoCnfMsg),
                        NAS_ESM_GET_MSG_LENGTH(pEsmOmInfoCnfMsg),
                        0,
                        NAS_ESM_GET_MSG_LENGTH(pEsmOmInfoCnfMsg));


    /* 打包消息头 */
    pEsmOmInfoCnfMsg->ulMsgId       = ID_OM_ESM_INFO_REPORT_CNF;
    pEsmOmInfoCnfMsg->ulSenderCpuId = pEsmOmInfoReqMsg->ulReceiverCpuId;
    pEsmOmInfoCnfMsg->ulSenderPid     = pEsmOmInfoReqMsg->ulReceiverPid;
    pEsmOmInfoCnfMsg->ulReceiverPid   = pEsmOmInfoReqMsg->ulSenderPid;
    pEsmOmInfoCnfMsg->ulReceiverCpuId  = pEsmOmInfoReqMsg->ulSenderCpuId;
    /* OM融合,所有透传消息CNF和REQ中的usOriginalId和usTerminalId必须对应,不能颠倒 */
    pEsmOmInfoCnfMsg->usOriginalId    = pEsmOmInfoReqMsg->usOriginalId;
    pEsmOmInfoCnfMsg->usTerminalId    = pEsmOmInfoReqMsg->usTerminalId;
    pEsmOmInfoCnfMsg->ulSN            = pEsmOmInfoReqMsg->ulSN;

    /*设置OPID*/
    pEsmOmInfoCnfMsg->ulOpId      = pEsmOmInfoReqMsg->ulOpId;


    pEsmOmInfoCnfMsg->ulRslt      = APP_SUCCESS;

    /* 发送消息 */
    NAS_ESM_SND_MSG(pEsmOmInfoCnfMsg);
    return;
}
VOS_VOID    NAS_ESM_ProcTimerMsgT3481Exp(const VOS_VOID * pMsg)
{
    VOS_UINT32                          ulStateTblIndex     = NAS_ESM_NULL;
    VOS_UINT32                          ulErrorCode         = APP_ERR_TIME_OUT;
    VOS_UINT32                          ulActCidNum         = NAS_ESM_NULL;
    NAS_ESM_TIMER_STRU                 *pTimer3481          = VOS_NULL_PTR;
    NAS_ESM_STATE_INFO_STRU            *pstStateAddr        = VOS_NULL_PTR;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgT3481Exp is entered.");

    /*获取消息中包含的状态表StateTblIndex*/
    ulStateTblIndex = PS_GET_REL_TIMER_NAME(pMsg);
    pstStateAddr = NAS_ESM_GetStateTblAddr(ulStateTblIndex);

    if (NAS_ESM_L_MODE_STATUS_NORMAL != NAS_ESM_GetLModeStatus())
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgT3481Exp: L mode is already suspended!");

        /*释放状态表资源*/
        NAS_ESM_RelStateTblResource(ulStateTblIndex);

        return ;
    }

    /*根据消息对应的ulStateTblIndex,获取相关联的定时器*/
    pTimer3481 = NAS_ESM_GetStateTblTimer(ulStateTblIndex);

    /*超时次数++*/
    pTimer3481->ucExpireTimes++;

    /*如果当前定时器超时次数小于NAS_ESM_MAX_TIMER_EXPIRE_TIMES次*/
    if(pTimer3481->ucExpireTimes < TI_NAS_ESM_T3481_TIMER_MAX_EXP_NUM)
    {
        /*调用函数:SM向MM发送消息:NAS_ESMCN_BEARER_RES_MOD_REQ*/
        NAS_ESM_SndEsmEmmDataReqMsg(pstStateAddr->stNwMsgRecord.ulOpId,
                                    pstStateAddr->stNwMsgRecord.ucIsEmcPdnReq,
                                    pstStateAddr->stNwMsgRecord.ulMsgLength,
                                    pstStateAddr->stNwMsgRecord.aucMsgBuff);

        /*重新启动定时器*/
        NAS_ESM_TimerStart(ulStateTblIndex,TI_NAS_ESM_T3481);

        /*上报空口消息*/
        NAS_ESM_SndAirMsgReportInd(pstStateAddr->stNwMsgRecord.aucMsgBuff,
                                   pstStateAddr->stNwMsgRecord.ulMsgLength,
                                   NAS_ESM_AIR_MSG_DIR_ENUM_UP,
                                   ESM_BEARER_RESOUCE_MOD_REQ);
        return;

    }

    if(ID_APP_ESM_PDP_SETUP_REQ == NAS_ESM_GetStateTblAppMsgType(ulStateTblIndex) )
    {
        /*调用函数:发送确认消息通知APP,本次承载资源分配过程失败*/
        NAS_ESM_SndEsmAppSdfSetupCnfFailMsg(ulStateTblIndex, ulErrorCode);
    }
    else  if(ID_APP_ESM_PDP_RELEASE_REQ == NAS_ESM_GetStateTblAppMsgType(ulStateTblIndex) )
    {
        ulActCidNum = NAS_ESM_GetBearerLinkedCidNum(pstStateAddr->ulEpsbId);

        /* 如果只对应一个激活的Cid,说明App要释放所有的SDF */
        if (ulActCidNum == NAS_ESM_BEARER_ACT_CID_NUM_ONE)
        {
            /* 本地释放此承载 */
            NAS_ESM_DeactBearerAndInformApp(pstStateAddr->ulEpsbId);

            /*通知EMM当前承载状态信息,发送ID_EMM_ESM_BEARER_STATUS_REQ*/
            NAS_ESM_SndEsmEmmBearerStatusReqMsg(EMM_ESM_BEARER_CNTXT_MOD_LOCAL);
        }
        else
        {
            NAS_ESM_SndEsmAppSdfModCnfFailMsg(ulStateTblIndex, ulErrorCode);
        }
    }
    else
    {
        NAS_ESM_SndEsmAppSdfModCnfFailMsg(ulStateTblIndex, ulErrorCode);
    }

    /*释放状态表资源*/
    NAS_ESM_RelStateTblResource(ulStateTblIndex);
}
VOS_VOID   NAS_ESM_ProcTimerMsgT3480Exp
(
    const VOS_VOID * pMsg
)
{
    VOS_UINT32                          ulStateTblIndex     = NAS_ESM_NULL;
    VOS_UINT32                          ulErrorCode         = APP_ERR_TIME_OUT;
    NAS_ESM_TIMER_STRU                 *pTimer3480          = VOS_NULL_PTR;
    NAS_ESM_STATE_INFO_STRU            *pstStateAddr        = VOS_NULL_PTR;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgT3480Exp is entered.");

    /*获取消息中包含的状态表StateTblIndex*/
    ulStateTblIndex = PS_GET_REL_TIMER_NAME(pMsg);
    pstStateAddr = NAS_ESM_GetStateTblAddr(ulStateTblIndex);

    if (NAS_ESM_L_MODE_STATUS_NORMAL != NAS_ESM_GetLModeStatus())
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgT3480Exp: L mode is already suspended!");

        /*释放状态表资源*/
        NAS_ESM_RelStateTblResource(ulStateTblIndex);

        return ;
    }

    /*根据消息对应的ulStateTblIndex,获取相关联的定时器*/
    pTimer3480 = NAS_ESM_GetStateTblTimer(ulStateTblIndex);

    /*超时次数++*/
    pTimer3480->ucExpireTimes++;

    /*如果当前定时器超时次数小于NAS_ESM_MAX_TIMER_EXPIRE_TIMES次*/
    if(pTimer3480->ucExpireTimes < TI_NAS_ESM_T3480_TIMER_MAX_EXP_NUM)
    {
        /*调用函数:SM向MM发送消息:NAS_ESMCN_BEARER_RES_MOD_REQ*/
        NAS_ESM_SndEsmEmmDataReqMsg(pstStateAddr->stNwMsgRecord.ulOpId,
                                    pstStateAddr->stNwMsgRecord.ucIsEmcPdnReq,
                                    pstStateAddr->stNwMsgRecord.ulMsgLength,
                                    pstStateAddr->stNwMsgRecord.aucMsgBuff);

        /*重新启动定时器*/
        NAS_ESM_TimerStart(ulStateTblIndex,TI_NAS_ESM_T3480);

        /*上报空口消息*/
        NAS_ESM_SndAirMsgReportInd(pstStateAddr->stNwMsgRecord.aucMsgBuff,
                                   pstStateAddr->stNwMsgRecord.ulMsgLength,
                                   NAS_ESM_AIR_MSG_DIR_ENUM_UP,
                                   ESM_BEARER_RESOUCE_ALLOC_REQ);

        return;

    }

    if(ID_APP_ESM_PDP_SETUP_REQ == NAS_ESM_GetStateTblAppMsgType(ulStateTblIndex) )
    {
        /*调用函数:发送确认消息通知APP,本次承载资源分配过程失败*/
        NAS_ESM_SndEsmAppSdfSetupCnfFailMsg(ulStateTblIndex, ulErrorCode);
    }

    /*释放状态表资源*/
    NAS_ESM_RelStateTblResource(ulStateTblIndex);
}
VOS_VOID    NAS_ESM_ProcTimerMsgT3492Exp(const VOS_VOID * pMsg)
{
    VOS_UINT32                          ulStateTblIndex  = NAS_ESM_NULL;
    NAS_ESM_TIMER_STRU                 *pTimer3492       = VOS_NULL_PTR;
    NAS_ESM_STATE_INFO_STRU            *pstStateAddr        = VOS_NULL_PTR;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgT3492Exp is entered.");

    /*获取消息中包含的状态表StateTblIndex*/
    ulStateTblIndex = PS_GET_REL_TIMER_NAME(pMsg);
    pstStateAddr = NAS_ESM_GetStateTblAddr(ulStateTblIndex);

    if (NAS_ESM_L_MODE_STATUS_NORMAL != NAS_ESM_GetLModeStatus())
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgT3492Exp: L mode is already suspended!");

        /*释放状态表资源*/
        NAS_ESM_RelStateTblResource(ulStateTblIndex);

        return ;
    }

    /*根据消息对应的ulStateTblIndex,获取相关联的定时器*/
    pTimer3492 = NAS_ESM_GetStateTblTimer(ulStateTblIndex);

    /*超时次数++*/
    pTimer3492->ucExpireTimes++;

    /*如果当前定时器超时次数小于NAS_ESM_MAX_TIMER_EXPIRE_TIMES次*/
    if(pTimer3492->ucExpireTimes < TI_NAS_ESM_T3492_TIMER_MAX_EXP_NUM)
    {
        /*调用函数:SM向MM发送消息:NAS_ESMCN_PDN_DISCONNECT_REQ*/
        NAS_ESM_SndEsmEmmDataReqMsg(pstStateAddr->stNwMsgRecord.ulOpId,
                                    pstStateAddr->stNwMsgRecord.ucIsEmcPdnReq,
                                    pstStateAddr->stNwMsgRecord.ulMsgLength,
                                    pstStateAddr->stNwMsgRecord.aucMsgBuff);

        /*重新启动定时器*/
        NAS_ESM_TimerStart(ulStateTblIndex,TI_NAS_ESM_T3492);

        /*上报空口消息*/
        NAS_ESM_SndAirMsgReportInd(pstStateAddr->stNwMsgRecord.aucMsgBuff,
                                   pstStateAddr->stNwMsgRecord.ulMsgLength,
                                   NAS_ESM_AIR_MSG_DIR_ENUM_UP,
                                   ESM_PDN_DISCONNECT_REQ);
        return;

    }
    else
    {
        NAS_ESM_WARN_LOG("NAS_ESM_DefltAttingBInactPPendMsgT3492Exp:WARNING:ExpireTimes exceed!");

        /*本地释放缺省承载资源,向APP回复释放成功消息*/
        NAS_ESM_DeactBearerAndInformApp(pstStateAddr->ulEpsbId);

        /*通知EMM当前承载状态信息,发送ID_EMM_ESM_BEARER_STATUS_REQ*/
        NAS_ESM_SndEsmEmmBearerStatusReqMsg(EMM_ESM_BEARER_CNTXT_MOD_LOCAL);
    }

    /*释放状态表资源*/
    NAS_ESM_RelStateTblResource(ulStateTblIndex);
}
VOS_VOID    NAS_ESM_ProcTimerMsgT3482Exp(const VOS_VOID * pMsg)
{
    VOS_UINT32                          ulStateTblIndex     = NAS_ESM_NULL;
    NAS_ESM_TIMER_STRU                 *pTimer3482          = VOS_NULL_PTR;
    VOS_UINT32                          ulErrorCode         = APP_ERR_TIME_OUT;
    NAS_ESM_STATE_INFO_STRU            *pstStateAddr        = VOS_NULL_PTR;

    /*打印进入该函数*/
    NAS_ESM_NORM_LOG("NAS_ESM_ProcTimerMsgT3482Exp is entered.");

    /*获取消息中包含的状态表StateTblIndex*/
    ulStateTblIndex = PS_GET_REL_TIMER_NAME(pMsg);
    pstStateAddr = NAS_ESM_GetStateTblAddr(ulStateTblIndex);

    if (NAS_ESM_L_MODE_STATUS_NORMAL != NAS_ESM_GetLModeStatus())
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgT3482Exp: L mode is already suspended!");

        /*释放状态表资源*/
        NAS_ESM_RelStateTblResource(ulStateTblIndex);

        return ;
    }

    #if (FEATURE_PTM == FEATURE_ON)
    NAS_ESM_PdnConFailRecord(VOS_NULL_PTR, ESM_OM_ERRLOG_TIMEOUT_T3482);
    #endif
    /*根据消息对应的ulStateTblIndex,获取相关联的定时器T3482*/
    pTimer3482 = NAS_ESM_GetStateTblTimer(ulStateTblIndex);

    /*超时次数++*/
    pTimer3482->ucExpireTimes++;

    /*如果当前定时器超时次数小于NAS_ESM_MAX_TIMER_EXPIRE_TIMES次*/
    if(pTimer3482->ucExpireTimes < TI_NAS_ESM_T3482_TIMER_MAX_EXP_NUM)
    {
        /*调用函数:SM向MM发送消息:NAS_ESMCN_MSG_TYPE_PDN_CONNECT_REQ*/
        NAS_ESM_SndEsmEmmDataReqMsg(pstStateAddr->stNwMsgRecord.ulOpId,
                                    pstStateAddr->stNwMsgRecord.ucIsEmcPdnReq,
                                    pstStateAddr->stNwMsgRecord.ulMsgLength,
                                    pstStateAddr->stNwMsgRecord.aucMsgBuff);

        /*重新启动定时器*/
        NAS_ESM_TimerStart(ulStateTblIndex,TI_NAS_ESM_T3482);

        /*上报空口消息*/
        NAS_ESM_SndAirMsgReportInd(pstStateAddr->stNwMsgRecord.aucMsgBuff,
                                   pstStateAddr->stNwMsgRecord.ulMsgLength,
                                   NAS_ESM_AIR_MSG_DIR_ENUM_UP,
                                   ESM_PDN_CONNECT_REQ);
        return;
    }
    else if(ID_APP_ESM_NDISCONN_REQ == NAS_ESM_GetStateTblAppMsgType(ulStateTblIndex) )
    {
        /*调用函数:发送确认消息通知APP,本次承载资源分配过程失败*/
        NAS_ESM_LOG1("NAS_ESM_ProcTimerMsgT3482Exp:ERROR =", ulErrorCode);
        NAS_ESM_SndEsmAppNdisConnCnfFailMsg(ulStateTblIndex, ulErrorCode);
    }
    else
    {
        NAS_ESM_WARN_LOG("NAS_ESM_ProcTimerMsgT3482Exp:WARNING:ExpireTimes exceed!");

        /*向APP回复消息*/
        NAS_ESM_SndEsmAppSdfSetupCnfFailMsg(ulStateTblIndex, \
                                            APP_ERR_TIME_OUT);
    }

    /*释放状态表资源*/
    NAS_ESM_RelStateTblResource(ulStateTblIndex);
}