VOS_VOID NAS_RABM_VoicePreferActivateJudgeStepOne(VOS_VOID)
{
    VOS_UINT32      ulVpActMatch;
    VOS_UINT32      ulOldVpStatus;

    ulVpActMatch = NAS_RABM_IsVpActivateMatchInStepOne();
    ulOldVpStatus = NAS_RABM_VoicePreferGetVpStatus();

    /* 不满足初步激活条件*/
    if (VOS_FALSE == ulVpActMatch)
    {
        /* 定时器超时事件可能在队列中,就处理了AP 下发的停止VoicePrefer ,延迟超时处理中需要判断该标志 */
        NAS_RABM_VoicePreferSetStopVpFlag(VOS_TRUE);
        /* 把延迟激活和重试查询GMM定时器停止,函数里面会判断定时器是否启动 */
        NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY);
        NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_REQRY_GMM_DELAY);

        /* 当前已经处于激活状态*/
        if (VOS_TRUE == ulOldVpStatus)
        {
            /* 使VP去激活,并通知其他模块*/
            NAS_RABM_VoicePreferSetVpStatus(VOS_FALSE);
            NAS_RABM_SendVpActIndToOtherModule(VOS_FALSE);
        }
        /* 当前不处于激活状态,前面已经处理,这里不再进行任何操作*/
    }
    /* 满足初步激活条件 */
    else
    {   /*满足初步激活条件并且已经处于激活态不需要任何操作*/
        if(VOS_TRUE == ulOldVpStatus)
        {
            NAS_NORMAL_LOG(WUEPS_PID_RABM,
                           "NAS_RABM_VoicePreferActivateJudgeStepOne: VP Already Activated");
        }
        /* 满足初步激活条件但是当前并没有处于激活状态 */
        else
        {
            /* 如果延迟定时器没有启动,启动延迟定时器*/
            if(NAS_RABM_TIMER_STATUS_STOP
                    == NAS_RABM_CheckTimerStatus(RABM_TIMER_NAME_COMMON,RABM_TIMER_VOICEPREFER_DELAY))
            {
                NAS_RabmStartTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY);
                /* 延迟激活定时器启动时应停止延迟查询GMM定时器 */
                NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_REQRY_GMM_DELAY);

                NAS_RABM_VoicePreferSetStopVpFlag(VOS_FALSE);
            }
            /* 如果延迟定时器已经启动,保持原来定时器不重新启动*/
        }
    }

    return;
}
VOS_VOID NAS_RABM_VoicePreferDelayExpired(VOS_VOID)
{
    /* 停止定时器 */
    NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY);
    /* 定时器超时事件可能在队列中,就处理了AP 下发的停止VoicePrefer ,这种
        场景不再激活VP */
    if (VOS_TRUE == NAS_RABM_VoicePreferGetStopVpFlag())
    {
        NAS_NORMAL_LOG(WUEPS_PID_RABM,
                       "NAS_RABM_VoicePreferDelayExpired: Have Receive AP Stop VoicePrefer,So Donot Send Gmm Qry!");
        return;
    }
    /* 查询是否存在GMM专有流程 */
    NAS_RABM_SndGmmMmlProcStatusQryReq(RABM_VOICEPREFER_ENUM);
    /* 初次查询清重试查询次数*/
    NAS_RABM_VoicePreferClrReQryGmmCnt();

    return;
}
VOS_VOID NAS_RABM_VoicePreferActivateJudgeStepTwo(VOS_VOID)
{
    VOS_UINT32      ulVpActMatchInStepOne;

    ulVpActMatchInStepOne = NAS_RABM_IsVpActivateMatchInStepOne();

    /* 初步激活条件不再满足不激活VP */
    if (VOS_FALSE == ulVpActMatchInStepOne)
    {
        NAS_NORMAL_LOG(WUEPS_PID_RABM,
                       "NAS_RABM_VoicePreferActivateJudgeStepTwo: ulVpActStepOne Not Matched,So Cannot Act VP");
    }
    /* 初步激活条件仍然满足需要激活VP */
    else
    {
        NAS_RABM_VoicePreferSetVpStatus(VOS_TRUE);
        /*给其他模块发送VP激活指示*/
        NAS_RABM_SendVpActIndToOtherModule(VOS_TRUE);
    }
    return;
}
Пример #4
0
VOS_UINT32  NAS_MMC_RcvLmmMmcStatusInd_SysCfg_WaitEpsConnRelInd(
    VOS_UINT32                          ulEventType,
    struct MsgCB                       *pstMsg
)
{

    MMA_MMC_SYS_CFG_SET_REQ_STRU        *pstSysCfgMsg       = VOS_NULL_PTR;

    NAS_MMC_ENTRY_MSG_STRU             *pstEntryMsg        = VOS_NULL_PTR;
    LMM_MMC_STATUS_IND_STRU            *pstLmmStatusIndMsg = VOS_NULL_PTR;

    NAS_MML_NET_RAT_TYPE_ENUM_UINT8     enNextRat;

    pstLmmStatusIndMsg = (LMM_MMC_STATUS_IND_STRU*)pstMsg;

    /* 获取SYSCFG状态机的入口消息信息 */
    pstEntryMsg  = NAS_MMC_GetCurrEntryMsg();

    pstSysCfgMsg = (MMA_MMC_SYS_CFG_SET_REQ_STRU*)(pstEntryMsg->aucEntryMsgBuffer);

    if ( VOS_FALSE == pstLmmStatusIndMsg->bitOpConnState)
    {
        NAS_NORMAL_LOG(WUEPS_PID_MMC, "NAS_MMC_RcvLmmMmcStatusInd_SysCfg_WaitEpsConnRelInd:bitOpConnState IS VOS_FALSE");
        return VOS_TRUE;
    }

    /* 更新LMM的链接状态 */
    switch (pstLmmStatusIndMsg->ulConnState)
    {
        case MMC_LMM_CONN_ESTING:
        case MMC_LMM_CONNECTED_SIG:
            NAS_MML_SetEpsSigConnStatusFlg(VOS_TRUE);
            NAS_MML_SetEpsServiceConnStatusFlg(VOS_FALSE);
            break;

        case MMC_LMM_CONNECTED_DATA:
            NAS_MML_SetEpsServiceConnStatusFlg(VOS_TRUE);
            break;

        case MMC_LMM_CONN_IDLE:
            NAS_MML_SetEpsSigConnStatusFlg(VOS_FALSE);
            NAS_MML_SetEpsServiceConnStatusFlg(VOS_FALSE);
            break;

        default:
            break;
    }

    /* 如果存在信令连接,则继续等待 */
    if (VOS_TRUE == NAS_MML_IsRrcConnExist())
    {
        return VOS_TRUE;
    }

    /* 停止等待链接释放定时器 */
    NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_EPS_CONN_REL_IND);


    /* 取得目标模的接入技术,并发送SYSCFG请求 */
    enNextRat           = NAS_MMC_GetNextSettingRat_SysCfg();
    NAS_MMC_SetRatModeSysCfgReq_SysCfg(enNextRat, pstSysCfgMsg);

    return VOS_TRUE;
}