Exemplo n.º 1
0
/*****************************************************************************
 Function Name  : NAS_LMM_FSM_PopStackCombine()
 Discription    : 出栈综合操作,包括3个操作:
                                    状态出栈,
                                    定时器出栈,
                                    全局变量出栈,
                  目前只有启动MRRC的RRC连接建立和释放两个过程涉及此操作,
                  后续鉴权过程会涉及到;
 Input          : 并行状态机ID, UE1.0中固定填NAS_LMM_PARALLEL_FSM_EMM
 Output         : None
 Return         : None
 History:
      1.  hanlufeng 41410  Draft Enact
*****************************************************************************/
VOS_VOID    NAS_LMM_FSM_PopStackCombine(
                NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId)
{

    /* 入口检查 */
    if ( NAS_LMM_PARA_FSM_ID_INVALID(enParalFsmId))
    {
        NAS_LMM_PUBM_LOG1_ERR("RRC_FSM_BeginProcess, FsmId error, FsmId",
                            enParalFsmId);

        return;
    }


    /***************出栈前环境打印操作***************/
#if 0
    /* 打印出栈前的状态 */
    NAS_LMM_PrintFsmState(enParalFsmId);

    /* 打印当前状态涉及到的定时器状态 */
    NAS_LMM_PrintFsmTimer(enParalFsmId);
#endif
    /* 打印当前状态涉及到的全局变量的值 */




    /***************出栈操作***************/

    /* 状态机出栈操作 */
    NAS_LMM_FSM_PopState(enParalFsmId);

    /* 定时器状态出栈*/
    NAS_LMM_FSM_PopTimer(enParalFsmId);

    /* 相关全局变量出栈*/
    NAS_LMM_FSM_PopGlobPar();



    /***************出栈后环境打印操作***************/
    NAS_LMM_PUBM_LOG_NORM("======================================================================================");
    NAS_LMM_PUBM_LOG_NORM("======NAS_EMM Pop State To:======");

    /* 打印当前状态 */
    NAS_LMM_PrintFsmState(enParalFsmId);
    NAS_LMM_PUBM_LOG_NORM("======================================================================================");
    /* 打印当前状态涉及到的定时器状态 */
   /* NAS_LMM_PrintFsmTimer(enParalFsmId);
    */
    /* 打印当前状态涉及到的全局变量的值 */


    return;
}
Exemplo n.º 2
0
VOS_VOID  NAS_LMM_FSM_ClearStackCombine( NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId)
{

    /* 入口检查 */
    if ( NAS_LMM_PARA_FSM_ID_INVALID(enParalFsmId))
    {
        NAS_LMM_PUBM_LOG1_ERR("RRC_FSM_BeginProcess, FsmId error, FsmId",
                            enParalFsmId);

        return;
    }


    /***************出栈前环境打印操作***************/
    /* 打印出栈前的状态 */
    NAS_LMM_PrintFsmState(enParalFsmId);

    /* 打印当前状态涉及到的定时器状态 */
    NAS_LMM_PrintFsmTimer(enParalFsmId);

    /* 打印当前状态涉及到的全局变量的值 */




    /***************出栈操作***************/

    /* 状态机出栈操作 */
    NAS_LMM_FSM_ClearState(enParalFsmId);

    /* 定时器状态出栈*/
    NAS_LMM_FSM_ClearTimer(enParalFsmId);

    /* 相关全局变量出栈*/
    NAS_LMM_FSM_ClearGlobPar();



    /***************出栈后环境打印操作***************/
    /* 打印当前状态 */
    NAS_LMM_PrintFsmState(enParalFsmId);

    /* 打印当前状态涉及到的定时器状态 */
    NAS_LMM_PrintFsmTimer(enParalFsmId);

    /* 打印当前状态涉及到的全局变量的值 */


    return;
}
VOS_UINT32  NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf(  VOS_UINT32  ulMsgId,
                                                         VOS_VOID   *pMsg )
{
    USIMM_AUTH_CNF_STRU      *pstUsimAuthCnf = VOS_NULL_PTR;

    (VOS_VOID)ulMsgId;
    NAS_EMM_SECU_LOG_INFO("NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf entered!");
    NAS_LMM_PrintFsmState(NAS_LMM_PARALLEL_FSM_EMM);

    pstUsimAuthCnf = (USIMM_AUTH_CNF_STRU *)pMsg;
    /* 如果OpId不同,说明在这个鉴权CNF之前又收到了网侧的鉴权请求 ,继续等待USIM回复*/
    if(pstUsimAuthCnf->ucOpId != NAS_EMM_GetSecuAuthOpId())
    {
        return NAS_LMM_MSG_HANDLED;
    }

    /* 鉴权成功,清空OpId */
    NAS_EMM_GetSecuAuthOpId() = 0;
    /*根据 USIM_AUTH_CNF中的结果进行不同处理*/
    switch(pstUsimAuthCnf->enResult)
    {
             /*USIM鉴权成功*/
        case USIMM_AUTH_UMTS_SUCCESS:
             NAS_EMM_UsimAuthSucc(pstUsimAuthCnf);
             break;

             /*USIM鉴权失败:MAC FAIL*/
        case USIMM_AUTH_MAC_FAILURE:
             NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_MAC_FAILURE);
             NAS_EMM_UsimAuthFail(NAS_EMM_AUTH_MAC_FAILURE);
             break;

             /*USIM鉴权失败:SYNCFAIL*/
        case USIMM_AUTH_SYNC_FAILURE:
             NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_SYNC_FAILURE);

             /*获取USIM_AUTH_CNF携带的AUTS:pstUsimAuthCnf->u.aucAuts第一个字节为Auts的长度*/
             NAS_LMM_MEM_CPY( NAS_EMM_GetSecuAuthAutsAddr(),
                            &(pstUsimAuthCnf->cnfdata.stTELECnf.aucAuts[NAS_EMM_USIM_CNF_AUTS_V_POS]),
                              pstUsimAuthCnf->cnfdata.stTELECnf.aucAuts[NAS_EMM_USIM_CNF_AUTS_L_POS]);

             /*调用失败处理函数*/
             NAS_EMM_UsimAuthFail(NAS_EMM_AUTH_SYNC_FAILURE);
             break;

        default:
             NAS_EMM_SECU_LOG_ERR("NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf: USIM CNF RSLT ERR.");
             NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_OTHER);
             break;
    }

    return NAS_LMM_MSG_HANDLED;
}
Exemplo n.º 4
0
/*lint -e961*/
VOS_VOID    NAS_LMM_FSM_PushStackCombine(NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId)
{

    /* 入口检查 */
    if ( enParalFsmId >= NAS_LMM_PARALLEL_FSM_BUTT )
    {
        NAS_LMM_PUBM_LOG1_ERR("NAS_LMM_FSM_PushStackCombine, FsmId error, FsmId",
                            enParalFsmId);

        return;
    }


    /***************入栈前环境打印操作***************/
#if 0
    /* 打印入栈前的状态 */
    NAS_LMM_PrintFsmState(enParalFsmId);

    /* 打印当前状态涉及到的定时器状态 */
    NAS_LMM_PrintFsmTimer(enParalFsmId);

    /* 打印当前状态涉及到的全局变量的值 */
#endif

    /***************入栈操作***************/

    /* 状态机压栈操作 */
    NAS_LMM_FSM_PushState(enParalFsmId);

    /* 定时器状态入栈 */
    NAS_LMM_FSM_PushTimer(enParalFsmId);

    /* 相关全局变量入栈 */
    NAS_LMM_FSM_PushGlobPar(enParalFsmId);

    return;
}