VOS_VOID NAS_ESM_SndOmRegCidInfo(VOS_UINT32  ulRegCid)
{
    NAS_ESM_OM_LOG_REG_CID_INFO_STRU             *pstRegCidInfo      = VOS_NULL_PTR;

    /* 分配空间并检验分配是否成功 */
    pstRegCidInfo  = (NAS_ESM_OM_LOG_REG_CID_INFO_STRU*)NAS_ESM_MEM_ALLOC( \
                                                  sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU));
    if (VOS_NULL_PTR == pstRegCidInfo)
    {
        return;
    }

    NAS_ESM_MEM_SET_S(  pstRegCidInfo,
                        sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU),
                        0,
                        sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU));

    pstRegCidInfo->stMsgHeader.ulSenderCpuId       = VOS_LOCAL_CPUID;
    pstRegCidInfo->stMsgHeader.ulSenderPid         = PS_PID_ESM;
    pstRegCidInfo->stMsgHeader.ulReceiverCpuId     = VOS_LOCAL_CPUID;
    pstRegCidInfo->stMsgHeader.ulReceiverPid       = PS_PID_ESM;
    pstRegCidInfo->stMsgHeader.ulLength            = sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU) - NAS_EMM_LEN_VOS_MSG_HEADER;
    pstRegCidInfo->stMsgHeader.ulMsgName           = NAS_ESM_OM_LOG_REG_CID_INFO;
    pstRegCidInfo->ulRegCid                        = ulRegCid;

    /* 消息上报HIDS */
    (VOS_VOID)LTE_MsgHook((VOS_VOID*)pstRegCidInfo);
    NAS_ESM_MEM_FREE(pstRegCidInfo);

    return;
}
VOS_VOID  NAS_ERABM_SndOmErabmTimerStatus(
    NAS_ERABM_TIMER_RUN_STA_ENUM_UINT32        enTimerStatus,
    NAS_ERABM_TIMER_NAME_ENUM_UINT8           enTimerId,
    VOS_UINT32                              ulTimerRemainLen
)
{
    NAS_ERABM_TIMER_INFO_STRU            *pstMsg = VOS_NULL_PTR;

    pstMsg = (NAS_ERABM_TIMER_INFO_STRU*)NAS_ERABM_MEM_ALLOC(sizeof(NAS_ERABM_TIMER_INFO_STRU));
    if (VOS_NULL_PTR == pstMsg)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndOmErabmTimerStatus: mem alloc fail!.");
        return;
    }

    pstMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID;
    pstMsg->stMsgHeader.ulSenderPid     = PS_PID_RABM;
    pstMsg->stMsgHeader.ulReceiverPid   = PS_PID_RABM;
    pstMsg->stMsgHeader.ulLength        = sizeof(NAS_ERABM_TIMER_INFO_STRU) - 20;

    pstMsg->stMsgHeader.ulMsgName       = enTimerId + PS_MSG_ID_ERABM_TO_ERABM_OM_BASE;
    pstMsg->enTimerStatus               = enTimerStatus;
    pstMsg->enTimerId                   = enTimerId;

    pstMsg->ulTimerRemainLen            = ulTimerRemainLen;

    (VOS_VOID)LTE_MsgHook((VOS_VOID*)pstMsg);

    NAS_ERABM_MEM_FREE(pstMsg);

}
Example #3
0
/*****************************************************************************
 Function Name  : IMSA_IntraMsgProcess()
 Description    : IMSA内部消息处理函数
 Input          : VOS_VOID
 Output         : VOS_VOID
 Return Value   : VOS_VOID

 History        :
      1.sunbing 49683      2013-06-20  Draft Enact
*****************************************************************************/
VOS_VOID IMSA_IntraMsgProcess(VOS_VOID)
{
    VOS_UINT8                          *pucMsg              = VOS_NULL_PTR;

    /* 获取一条内部消息 */
    pucMsg = IMSA_GetNextIntraMsg();

    while(VOS_NULL_PTR != pucMsg)
    {
        /*勾取消息,便于HSO显示*/
        (VOS_VOID)LTE_MsgHook(pucMsg);

        /*消息处理*/
        IMSA_MsgHandle((VOS_VOID *)pucMsg);

        /* 寻找下一条内部消息 */
        pucMsg = IMSA_GetNextIntraMsg();
    }

}
VOS_VOID NAS_ESM_OmMsgDistr
(
    VOS_VOID                           *pRcvMsg
)
{
    PS_MSG_HEADER_STRU         *pOmMsg = VOS_NULL_PTR;

    /*打印进入该函数*/
    NAS_ESM_INFO_LOG("NAS_ESM_SmMsgDistr is entered.");
    TLPS_PRINT2LAYER_INFO(NAS_ESM_OmMsgDistr_ENUM, LNAS_ENTRY);

    pOmMsg = (PS_MSG_HEADER_STRU*)pRcvMsg;

    /*根据消息名,调用相应的消息处理函数*/
    switch(pOmMsg->ulMsgName)
    {
        /*如果收到的是ID_SM_ESM_PDP_CONTEXT_INFO_IND消息*/
        case ID_OM_ESM_INFO_REPORT_REQ:
            (VOS_VOID)LTE_MsgHook((VOS_VOID*)pRcvMsg);
            NAS_ESM_OmInfoIndMsgProc(pRcvMsg );
            break;

        case ID_APP_ESM_DT_INQ_PDP_INFO_REQ:
            NAS_ESM_AppQueryActPdpInfoMsgProc(pRcvMsg);
            break;

        #if (FEATURE_PTM == FEATURE_ON)
        case ID_OM_FTM_CTRL_IND:
            (VOS_VOID)NAS_ESM_RevOmFtmCtrlMsg((MsgBlock *)pRcvMsg);
            break;
        #endif

        default:
            /*打印异常信息*/
            NAS_ESM_WARN_LOG("NAS_ESM_OmMsgDistr:WARNING:OM->ESM Message name non-existent!");
            TLPS_PRINT2LAYER_WARNING(NAS_ESM_OmMsgDistr_ENUM, 1);
            break;
    }
}
VOS_VOID NAS_ESM_ReportActPdpInfo( VOS_VOID)
{
    APP_ESM_INQ_PDP_INFO_IND_STRU    *pAppIndMsg;
    NAS_OM_ACT_PDP_INFO_STRU          *pstActPdpInfo = (VOS_VOID*)NAS_ESM_MEM_ALLOC(sizeof(NAS_OM_ACT_PDP_INFO_STRU));

    if (VOS_NULL_PTR == pstActPdpInfo)
    {
        NAS_ESM_ERR_LOG("NAS_ESM_ReportActPdpInfo: mem alloc fail!.");
        TLPS_PRINT2LAYER_ERROR(NAS_ESM_ReportActPdpInfo_ENUM, LNAS_EMM_ALLOC_FAIL);
        return;
    }

    if (APP_ESM_DT_REPORT_STATUS_CLOSE == g_ulRptPdpStatus)
    {
        NAS_ESM_MEM_FREE(pstActPdpInfo);
        return;
    }

    /*分配空间并检验分配是否成功*/
    pAppIndMsg = (VOS_VOID*)NAS_ESM_ALLOC_MSG(sizeof(APP_ESM_INQ_PDP_INFO_IND_STRU));

    /*检测是否分配成功*/
    if (VOS_NULL_PTR == pAppIndMsg)
    {
        /*打印异常信息*/
        NAS_ESM_ERR_LOG("NAS_ESM_AppReportActPdpInfo:ERROR:ESM->APP ,Memory Alloc FAIL!");
        TLPS_PRINT2LAYER_ERROR(NAS_ESM_ReportActPdpInfo_ENUM, 1);
        NAS_ESM_MEM_FREE(pstActPdpInfo);
        return;
    }

    /*清空*/
    NAS_ESM_MEM_SET_S(  pstActPdpInfo,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU),
                        0,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU));


    /*填写消息头*/
    NAS_ESM_WRITE_APP_DT_IND_MSG_HEAD(pAppIndMsg,ID_APP_ESM_DT_INQ_PDP_INFO_IND,\
                              NAS_ESM_NULL,\
                              NAS_ESM_NULL,\
                              NAS_ESM_NULL);

    pAppIndMsg->ulOpId = DIAG_CMD_EMM_APP_PDP_INFO_IND;

    /*获取激活承载的信息 */
    NAS_ESM_GetActPdpInfo(pstActPdpInfo);

    NAS_ESM_MEM_CPY_S(  &pAppIndMsg->stActPdpInfo,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU),
                        pstActPdpInfo,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU));

    NAS_ESM_MEM_CPY_S(  &g_stEsmDtInfo.stActPdpInfo,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU),
                        pstActPdpInfo,
                        sizeof(NAS_OM_ACT_PDP_INFO_STRU));

#if (VOS_OS_VER != VOS_WIN32)
    if (1 == g_ulNasEsmOmMsgHookFlag)
    {
        (VOS_VOID)LTE_MsgHook((VOS_VOID *)pAppIndMsg);
    }
#endif
    /*调用消息发送函数 */
    NAS_ESM_SND_MSG(pAppIndMsg);
    NAS_ESM_MEM_FREE(pstActPdpInfo);

}
Example #6
0
VOS_VOID  NAS_ESM_TaskEntry(MsgBlock * pMsg)
{
    /* 定义消息头指针*/
    PS_MSG_HEADER_STRU          *pHeader = VOS_NULL_PTR;

    /* 判断入口参数是否合法*/
    if( VOS_NULL_PTR == pMsg)
    {
        NAS_ESM_WARN_LOG("NAS_ESM_TaskEntry:ERROR: No Msg!");
        return;
    }

    /* 获取消息头指针*/
    pHeader = (PS_MSG_HEADER_STRU *) pMsg;

    NAS_ESM_PrintEsmRevMsg(pHeader,NAS_COMM_GET_ESM_PRINT_BUF());

    switch(pHeader->ulSenderPid)
    {
    /*如果是EMM消息,调用EMM处理函数*/
    case PS_PID_MM:
        NAS_ESM_EmmMsgDistr(pMsg);
        break;

    /*如果是RABM消息,调用RABM处理函数*/
    case PS_PID_RABM:
        NAS_ESM_RabmMsgDistr(pMsg);
        break;

    /*如果是APP消息,调用APP处理函数*/
    case PS_PID_APP:
        NAS_ESM_AppMsgDistr(pMsg);
        break;
    case WUEPS_PID_TAF:
        NAS_ESM_SmMsgDistr(pMsg);
        break;

    case MSP_PID_DIAG_APP_AGENT:
        (VOS_VOID)LTE_MsgHook((VOS_VOID*)pMsg);
        NAS_ESM_OmMsgDistr(pMsg);
        break;

    /*如果是Timer消息,调用Timer溢出处理函数*/
    case VOS_PID_TIMER:
        NAS_ESM_TimerMsgDistr(pMsg);
        break;
        /* xiongxianghui00253310 add fot errlog 20131212 begin */
        /*如果是OM消息,调用OM处理函数*/
#if (FEATURE_PTM == FEATURE_ON)
    case ACPU_PID_OM:
        NAS_ESM_OmMsgDistrForAcpuPidOm(pMsg);
        break;
#endif
    /* xiongxianghui00253310 add fot errlog 20131212 end */
    /*发送对象错误,报警*/
    default:
        NAS_ESM_WARN_LOG("NAS_ESM_TaskEntry:NORM: Error SenderPid!");
        break;
    }
    if (OM_ESM_REPORT_INFO_OPEN == g_NasEsmOmInfoIndFlag)
    {
        if (NAS_ESM_FAILURE == NAS_ESM_CompareEsmInfo())
        {
            /* 通过DIAG上报 */
#if (VOS_WIN32 != VOS_OS_VER)
            (VOS_VOID)DIAG_ReportCommand(DIAG_CMD_ESM_APP_ESM_INFO_IND, (sizeof(OM_ESM_STATE_INFO_STRU))*OM_ESM_MAX_EPSB_NUM, (VOS_VOID*)g_stEsmOmInfo);
#endif

        }
    }

    NAS_ESM_DtJudgeifNeedRpt();

    /* xiongxianghui00253310 modify for ftmerrlog begin */
#if (FEATURE_PTM == FEATURE_ON)
    NAS_ESM_OmInfoIndProc();
#endif
    /* xiongxianghui00253310 modify for ftmerrlog end   */
}