Exemplo n.º 1
0
VOS_UINT32  NAS_EMM_PreProcMsgEmmStatus( NAS_EMM_CN_MSG_STRU_UNION  * pCnMsg )
{
    NAS_EMM_CN_EMM_STATU_STRU           *pstTmpRcvMsg       = NAS_EMM_NULL_PTR;

    NAS_LMM_PUBM_LOG_NORM("NAS_EMM_PreProcMsgEmmStatus enter!");

    /*结构化消息,取出消息体*/
    pstTmpRcvMsg                 = (NAS_EMM_CN_EMM_STATU_STRU *)pCnMsg;

    NAS_LMM_PUBM_LOG1_NORM("NAS_EMM_PreProcMsgEmmStatus: EMM ERROR CAUSE ",pstTmpRcvMsg->ucEmmCause);

    return NAS_LMM_MSG_HANDLED;
}
/*lint -e961*/
VOS_UINT32  NAS_LMM_GetPlmnExactlyComparaFlg( VOS_VOID )
{
    NAS_LMM_PUBM_LOG1_NORM("NAS_LMM_GetPlmnExactlyComparaFlg:NAS_MML_GetPlmnExactlyComparaFlg() =",
                        NAS_MML_GetPlmnExactlyComparaFlg());
    #ifndef __PS_WIN32_RECUR__
    if (VOS_TRUE == NAS_MML_GetPlmnExactlyComparaFlg())
    {
        NAS_LMM_LogPlmnexactlyCmpFlag(VOS_TRUE);
        return NAS_LMM_SUCC;
    }
    NAS_LMM_LogPlmnexactlyCmpFlag(VOS_FALSE);
    return NAS_LMM_FAIL;
    #else
    if (VOS_TRUE == Stub_NAS_MML_GetPlmnExactlyComparaFlg())
    {
        return NAS_LMM_SUCC;
    }
    return NAS_LMM_FAIL;

    #endif
}
Exemplo n.º 3
0
VOS_VOID  NAS_LMM_PrintFsmTimer(NAS_LMM_PARALLEL_FSM_ENUM_UINT16         enParallelFsmId)
{
    NAS_LMM_FSM_STATE_STRU              *pstCurFsm;          /* 状态机地址 */
    NAS_LMM_TIMER_CTRL_STRU             *pstTimerSta;        /* 状态定时器 */
    NAS_LMM_TIMER_CTRL_STRU             *pstTimerPtl;        /* 协议定时器 */
    VOS_UINT16                          usPtlTid;


    /* 入口检查 */
    if ( NAS_LMM_PARA_FSM_ID_INVALID(enParallelFsmId))
    {
        NAS_LMM_PUBM_LOG1_ERR("NAS_LMM_FSM_PushTimer, The input is illegal! enParalFsmId",
                             enParallelFsmId);

        return;
    }

    pstCurFsm      = NAS_LMM_GetCurFsmAddr(NAS_LMM_PARALLEL_FSM_EMM);
    pstTimerSta    = NAS_LMM_GetMmTimerStaCtrlAddrByIdx(pstCurFsm->enStaTId);

    /*判断当前状态定时器状态为停止和挂起*/
    if(VOS_NULL_PTR == pstTimerSta->psthTimer)
    {
        /*状态定时器处于挂起状态*/
        if((NAS_LMM_TIMER_SS_SUSPENDING == pstTimerSta->ucTimerSs)
           && (NAS_LMM_TIMER_RS_RUNNING == pstTimerSta->ucTimerRs))
        {
            NAS_LMM_PUBM_LOG1_WARN("NAS_LMM_PrintFsmTimer: State Timer is suspended! enStaTId:",
                                  pstCurFsm->enStaTId);
        }
        /*状态定时器处于停止状态*/
        else
        {
            NAS_LMM_PUBM_LOG1_WARN("NAS_LMM_PrintFsmTimer: State Timer is stoped! enStaTId:",
                                  pstCurFsm->enStaTId);
        }

    }
    /*状态定时器处于运行状态*/

    /*协议定时器*/
    for(usPtlTid = TI_NAS_LMM_PTL_TI_PUB_BOUNDARY_START+1; usPtlTid < NAS_LMM_PTL_TI_BUTT; usPtlTid++)
    {
        pstTimerPtl    = NAS_LMM_GetMmTimerPtlCtrlAddrByIdx(usPtlTid);

        /*协议定时器处于运行状态*/
        if(VOS_NULL_PTR != pstTimerPtl->psthTimer)
        {
            NAS_LMM_PUBM_LOG1_NORM("NAS_LMM_PrintFsmTimer: Ptl Timer is running! PtlTid:",
                                  usPtlTid);
        }
        /*协议定时器处于停止状态*/
        else
        {
            NAS_LMM_PUBM_LOG1_NORM("NAS_LMM_PrintFsmTimer: Ptl Timer is stoped! PtlTid:",
                                  usPtlTid);
        }
    }

    return;
}
VOS_UINT32 NAS_LMM_OutMsgFromQue( NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId,
                                        VOS_UINT32         ulBufPriLevel,
                                        NAS_LMM_BUFF_MSG_STRU   *pstGetMsg)
{
    VOS_UINT32                          ulLoop;
    VOS_UINT8                           *pucMsgCnt          = NAS_LMM_NULL_PTR;
    NAS_LMM_BUFF_MSG_STRU				*pstBuffer          = NAS_LMM_NULL_PTR;
    NAS_LMM_FSM_MSG_BUF_STRU             *pstFsmMsgBuffAddr  = NAS_LMM_NULL_PTR;
    VOS_UINT32                          ulRslt              = NAS_LMM_NOT_TRAVEL_BUFFER_MSG;


    /* 参数检查*/
    if (enParalFsmId != NAS_LMM_PARALLEL_FSM_EMM )
    {
        NAS_LMM_PUBM_LOG1_WARN("NAS_LMM_OutMsgFromQue: FsmId error, FsmId:", enParalFsmId);
        return ulRslt;
    }

    if (NAS_LMM_NULL_PTR == pstGetMsg)
    {
        NAS_LMM_PUBM_LOG_WARN("NAS_LMM_OutMsgFromQue: pstGetMsg is null");
        return ulRslt;
    }

    /* 获取缓存FSM Buffer的地址 */

    pstFsmMsgBuffAddr                   = NAS_LMM_GetFsmBufAddr( enParalFsmId );
    if(NAS_LMM_NULL_PTR                  == pstFsmMsgBuffAddr)
    {
        NAS_LMM_PUBM_LOG_WARN(           "NAS_LMM_OutMsgFromQue, Get pstFsmMsgBuffAddr Fail!");
        return  ulRslt;

    }

    /* 依据优先级取相关参数*/

    if (NAS_LMM_STORE_HIGH_PRIO_MSG == ulBufPriLevel)
    {
        NAS_LMM_PUBM_LOG_NORM("NAS_LMM_OutMsgFromQue: high prio buff");
        pstBuffer = pstFsmMsgBuffAddr->astHighPrioBufQue;
        pucMsgCnt = &(pstFsmMsgBuffAddr->ucHighPrioCnt);

    }
    else if (NAS_LMM_STORE_LOW_PRIO_MSG == ulBufPriLevel)
    {

        NAS_LMM_PUBM_LOG_NORM("NAS_LMM_OutMsgFromQue: low prio buff");
        pstBuffer = pstFsmMsgBuffAddr->astLowPrioBufQue;
        pucMsgCnt = &(pstFsmMsgBuffAddr->ucLowPrioCnt);
    }
    else
    {
        NAS_LMM_PUBM_LOG_WARN("NAS_LMM_OutMsgFromQue is entered");
        return ulRslt;
    }


    /* 队列中有消息存在 */

    if ((*pucMsgCnt > 0) && (*pucMsgCnt <= NAS_EMM_BUF_MSG_MAX_NUM))
    {
        NAS_LMM_PUBM_LOG1_NORM("NAS_LMM_OutMsgFromQue: ucMsgCnt valid, *pucMsgCnt = ",*pucMsgCnt);

        /* 将第一个发送出来 */
        pstGetMsg->ulEvtType = pstBuffer[0].ulEvtType;
        pstGetMsg->pBuffMsg = pstBuffer[0].pBuffMsg;

        /* 后面的依次前移 */
        for (ulLoop = 1; ulLoop < *pucMsgCnt; ulLoop++)
        {
            pstBuffer[ulLoop - 1].pBuffMsg  = pstBuffer[ulLoop].pBuffMsg;
            pstBuffer[ulLoop - 1].ulEvtType = pstBuffer[ulLoop].ulEvtType;
        }

        /* 将消息缓存指针置空 */
        pstBuffer[*pucMsgCnt - 1].pBuffMsg = VOS_NULL_PTR;
        pstBuffer[*pucMsgCnt - 1].ulEvtType = 0;

        /* 数目-1 */
        (*pucMsgCnt) --;

        ulRslt = NAS_LMM_TRAVEL_BUFFER_MSG;

    }
    else
    {
        NAS_LMM_PUBM_LOG_NORM("NAS_LMM_OutMsgFromQue: *pucMsgCnt is invalid");
    }

    return ulRslt;
}