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; }
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!" ); } }