VOS_UINT32 TAF_CBA_IsNeedActAsCbs(VOS_VOID)
{
    TAF_CBA_CBSTATUS_ENUM_UINT8         enCbsStatus;
    TAF_CBA_NET_RAT_TYPE_ENUM_UINT8     enNetMode;

    /* 获取当前CBS消息是否激活标志 */
    enCbsStatus = TAF_CBA_GetCbsStatus();

    enNetMode   = TAF_CBA_GetNetRatType();

    /* 必须满足NV中该模式CBS激活同时该模式宏开关已打开才默认CBS激活 */
#if (FEATURE_ON == FEATURE_WCBS)
    if (((TAF_CBA_CBSTATUS_W_ENABLE  == enCbsStatus)
            || (TAF_CBA_CBSTATUS_WG_ENABLE == enCbsStatus))
            && (TAF_CBA_NET_RAT_TYPE_WCDMA == enNetMode))
    {
        return VOS_TRUE;
    }
#endif

#if (FEATURE_ON == FEATURE_GCBS)
    if (((TAF_CBA_CBSTATUS_G_ENABLE  == enCbsStatus)
            || (TAF_CBA_CBSTATUS_WG_ENABLE == enCbsStatus))
            && (TAF_CBA_NET_RAT_TYPE_GSM == enNetMode))
    {
        return VOS_TRUE;
    }
#endif

#if  (FEATURE_ON == FEATURE_ETWS)
    /* W模下T定时器使能状态需要向BMC发送Active Req */
    /* todo:如果G支持ETWS了这里需要修改 */
    if ((VOS_TRUE == MN_MSG_IsTimerStarting(TI_TAF_CBA_RCV_ETWS_TEMP_ENABLE_CBS))
            && (TAF_CBA_NET_RAT_TYPE_WCDMA == enNetMode))
    {
        return VOS_TRUE;
    }

#endif

    return VOS_FALSE;
}
Ejemplo n.º 2
0
VOS_VOID TAF_CBA_RcvMmcNetModeInd(
    VOS_UINT8                           ucCurrNet
)
{
    TAF_CBA_NET_RAT_TYPE_ENUM_UINT8     enNetType;

    /* 接入技术进行转换 */
    TAF_CBA_ConvertMnNetModeToCbaFormat(ucCurrNet, &enNetType);

    /* 如果模式无效,直接返回,不更改*/
    if ( TAF_CBA_NET_RAT_TYPE_BUTT == enNetType )
    {
        TAF_INFO_LOG(WUEPS_PID_TAF, "TAF_CBA_RcvMmcNetModeInd:INVALID Mode ");
        return;
    }

    /* 如果模式未发生改变,则不需要通知AS */
    if ( enNetType == TAF_CBA_GetNetRatType() )
    {
        TAF_INFO_LOG(WUEPS_PID_TAF, "TAF_CBA_RcvMmcNetModeInd:Same Mode ");
        return;
    }

    /* 记录新的接入模式 */
    TAF_CBA_SetNetRatType(enNetType);

    /* 当前宏开关未打开或CBS未激活,则直接返回  */
    if ( VOS_FALSE == TAF_CBA_IsNeedActAsCbs())
    {
        TAF_INFO_LOG(WUEPS_PID_TAF, "TAF_CBA_RcvMmcNetModeInd:CBS Disable ");
        return;
    }

    /* 查询是否从USIM中获取到CBS ID相关内容,如果当前未获取则不进行任何处理直接返回
        等待USIM初始化完成后,在继续下发相关消息进行处理 */

    /* 激活列表不为空时激活AS的CBS功能 */
    if (VOS_FALSE == TAF_CBA_IsCbsActiveListEmpty())
    {
        TAF_CBA_SndAsActiveCbsReq(TAF_CBS_CFG_ACTIVE);
    }
}
VOS_VOID TAF_CBA_SndAsActiveCbsReq(
    TAF_CBS_CFG_ENUM_UINT32             enCfgFlg
)
{
    TAF_CBA_NET_RAT_TYPE_ENUM_UINT8     enNetMode;
    CBS_BMC_CFG_REQ_STRU               *pstMsg;
    TAF_CBS_MSG_TYPE_ENUM_UINT16        enMsgId;
    VOS_UINT32                          ulRet;
    VOS_UINT32                          ulReceiverPid;

    enNetMode   = TAF_CBA_GetNetRatType();

    if ( TAF_CBA_NET_RAT_TYPE_WCDMA == enNetMode)
    {
        enMsgId = ID_CBS_BMC_CFG_REQ;
        ulReceiverPid = WUEPS_PID_BMC;
    }
    else if (TAF_CBA_NET_RAT_TYPE_GSM == enNetMode)
    {
        enMsgId = ID_CBS_GAS_CFG_REQ;
        ulReceiverPid = UEPS_PID_GAS;
    }
    else
    {
        /* L模不需要激活CBS功能 */
        TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_CBA_SndAsActiveCbsReq: invalid network mode!" );

        return;
    }

    pstMsg = (CBS_BMC_CFG_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_TAF, sizeof(CBS_BMC_CFG_REQ_STRU));

    if (VOS_NULL_PTR == pstMsg)
    {
        /* ERR LOG */
        TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_CBA_SndAsActiveCbsReq: alloc memory fail!" );

        return;
    }

    PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH,
               0x00,
               sizeof(CBS_BMC_CFG_REQ_STRU) - VOS_MSG_HEAD_LENGTH);

    pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID;
    pstMsg->ulSenderPid     = WUEPS_PID_TAF;
    pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID;
    pstMsg->ulReceiverPid   = ulReceiverPid;
    pstMsg->ulLength        = sizeof(CBS_BMC_CFG_REQ_STRU) - VOS_MSG_HEAD_LENGTH;

    pstMsg->enMsgId         = enMsgId;

    pstMsg->enCbsActive     = enCfgFlg;


    ulRet = PS_SEND_MSG(WUEPS_PID_TAF, pstMsg);
    if (VOS_OK != ulRet)
    {
        TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_CBA_SndAsActiveCbsReq: To send CBS Config message failed!" );
    }
}