VOS_UINT32 TAF_MMA_SndMmcNetScanMsgReq( TAF_MMA_NET_SCAN_REQ_STRU *pstNetScanReq ) { VOS_UINT32 ulRet; MMA_MMC_NET_SCAN_REQ_STRU *pstMsg = VOS_NULL_PTR; MMA_UE_SUPPORT_FREQ_BAND_STRU stUeBand; /* UE支持的用户设置的频段 */ VOS_UINT32 ulBand; MMA_USER_BAND_SET_UN uUserSetBand; /* 申请消息内存 */ pstMsg = (MMA_MMC_NET_SCAN_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_MMA, sizeof(MMA_MMC_NET_SCAN_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { /* 内存申请失败 */ MN_ERR_LOG("TAF_MMA_SndNetScanMsgReq():ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET(pstMsg, 0x00, sizeof(MMA_MMC_NET_SCAN_REQ_STRU)); pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_NET_SCAN_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_NET_SCAN_REQ; /* GU频带设置参数填写 */ /* 将pstNetScanReq->stGuBand 从64位转换为32位 */ MN_MMA_Convert64BitBandTo32Bit(&pstNetScanReq->stBand, &ulBand); MN_MMA_ConvertGUFrequencyBand(&ulBand); uUserSetBand.ulPrefBand = ulBand; MMA_SwitchUserSetBand2UESupportBand(uUserSetBand, &stUeBand); pstMsg->stBand.unGsmBand.ulBand = stUeBand.unGsmBand.ulBand; pstMsg->stBand.unWcdmaBand.ulBand = stUeBand.unWcdmaBand.ulBand; pstMsg->sCellPow = pstNetScanReq->sCellPow; pstMsg->usCellNum = pstNetScanReq->usCellNum; pstMsg->ucRat = pstNetScanReq->ucRat; /*消息发送*/ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg); if (VOS_OK != ulRet) { MN_ERR_LOG("TAF_MMA_SndMmcNetScanMsgReq():ERROR: Send Msg Fail."); return VOS_ERR; } return VOS_OK; }
VOS_VOID TAF_MMA_UpdateUeBandNvim() { TAF_USER_SET_PREF_BAND64 stOrigUserSetGuBand; TAF_PH_PREF_BAND ulBand; MMA_USER_BAND_SET_UN uUserSetBand; MMA_UE_SUPPORT_FREQ_BAND_STRU stSetBand; MMA_UE_SUPPORT_FREQ_BAND_STRU stUeOrigSupportFreqBand; MMA_USER_BAND_SET_UN uUeOrigSupportFreqBand; PS_MEM_SET(&stOrigUserSetGuBand, 0x00, sizeof(stOrigUserSetGuBand)); PS_MEM_SET(&ulBand, 0x00, sizeof(ulBand)); PS_MEM_SET(&uUserSetBand, 0x00, sizeof(uUserSetBand)); PS_MEM_SET(&stSetBand, 0x00, sizeof(stSetBand)); PS_MEM_SET(&stUeOrigSupportFreqBand, 0x00, sizeof(stUeOrigSupportFreqBand)); PS_MEM_SET(&uUeOrigSupportFreqBand, 0x00, sizeof(uUeOrigSupportFreqBand)); /* 读NV8265到stOrigUserSetGuBand中 */ TAF_MMA_ReadUserSettedBandNvim(); MN_MMA_Convert64BitBandTo32Bit(&gstMmaValue.stLastSyscfgSet.stUserSetBand.stOrigUserSetGuBand, &ulBand); MN_MMA_ConvertGUFrequencyBand(&ulBand); uUserSetBand.ulPrefBand = ulBand; /* 读NV8229到stUeOrigSupportFreqBand中 */ TAF_MMA_ReadFreqBandNvim(); /*将当前系统设置的频段转换为用户设置的格式*/ MMA_SwitchUESupportBand2UserSetBand(gstMmaValue.stLastSyscfgSet.stUserSetBand.uUserSetUeFormatGuBand, &uUeOrigSupportFreqBand); /* 如果用户设置频段、射频频段交集与NV 8229值相同,则直接返回不需要写NV */ if (uUserSetBand.ulPrefBand != uUeOrigSupportFreqBand.ulPrefBand) { MMA_SwitchUserSetBand2UESupportBand(uUserSetBand, &stSetBand); /* 写NV:en_NV_Item_Support_Freqbands,更新全局变量 */ TAF_MMA_UpdateSupportFreqBand(&stSetBand); } /*若ForbBandNV激活,进行频段检查和 更新NV项*/ if (NV_ITEM_ACTIVE == gstMmaForbBand.ucActiveFlag) { if (VOS_FALSE == gstMmaForbBand.ucForbStatus) { /*根据禁止频段的信息更新FreqBandNV和UsersetBandNV*/ MMA_UpdateBandNvRefForbBand(); /*更新禁止频段的Status为TRUE 1*/ MMA_UpdateForbBandStatusToNV(); } } return; }
VOS_UINT32 TAF_MMA_SndMmcSysCfgReq( TAF_MMA_SYS_CFG_PARA_STRU *pSysCfgReq, MMA_SYS_CFG_SET_FLG usSetFlg ) { VOS_UINT32 ulRet; MMA_MMC_SYS_CFG_SET_REQ_STRU *pMsg = VOS_NULL_PTR; MMA_USER_BAND_SET_UN uUserSetBand; MMA_UE_SUPPORT_FREQ_BAND_STRU stUeBand; /* UE支持的用户设置的频段 */ VOS_UINT32 ulBand; VOS_UINT32 i; /* 申请消息内存 */ pMsg = (MMA_MMC_SYS_CFG_SET_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_MMA, sizeof(MMA_MMC_SYS_CFG_SET_REQ_STRU)); if (VOS_NULL_PTR == pMsg) { /* 内存申请失败 */ MN_ERR_LOG("TAF_MMA_SndMmcSysCfgReq():ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } pMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pMsg->MsgHeader.ulMsgName = ID_MMA_MMC_SYS_CFG_SET_REQ; pMsg->ucOnlyRoamParaChanged = VOS_FALSE; /*漫游参数填写*/ pMsg->enRoamCapability = pSysCfgReq->ucRoam; /*接入模式pMsg->stRatPrioList参数填写*/ #if (FEATURE_ON == FEATURE_LTE) if (pSysCfgReq->stRatOrder.ucRatOrderNum > TAF_PH_MAX_GUL_RAT_NUM) { pSysCfgReq->stRatOrder.ucRatOrderNum = TAF_PH_MAX_GUL_RAT_NUM; } #else if (pSysCfgReq->stRatOrder.ucRatOrderNum > TAF_PH_MAX_GU_RAT_NUM) { pSysCfgReq->stRatOrder.ucRatOrderNum = TAF_PH_MAX_GU_RAT_NUM; } #endif /* 如果UE不支持GSM,当设置包含G模去掉G模 */ if (MMA_TRUE == MMA_IsGsmForbidden()) { pMsg->stRatPrioList.ucRatNum = 0; for ( i = 0 ; i < pSysCfgReq->stRatOrder.ucRatOrderNum; i++ ) { if ( TAF_PH_RAT_GSM == pSysCfgReq->stRatOrder.aenRatOrder[i]) { continue; } pMsg->stRatPrioList.aucRatPrio[pMsg->stRatPrioList.ucRatNum] = pSysCfgReq->stRatOrder.aenRatOrder[i]; pMsg->stRatPrioList.ucRatNum++; } } else { PS_MEM_CPY(&(pMsg->stRatPrioList), &(pSysCfgReq->stRatOrder), sizeof(MMA_MMC_PLMN_RAT_PRIO_STRU)); } /* GU频带设置参数填写*/ /*将pSysCfgReq->stGuBand 从64位转换为32位*/ MN_MMA_Convert64BitBandTo32Bit(&pSysCfgReq->stGuBand, &ulBand); MN_MMA_ConvertGUFrequencyBand(&ulBand); uUserSetBand.ulPrefBand = ulBand; MMA_SwitchUserSetBand2UESupportBand(uUserSetBand, &stUeBand); pMsg->stBand.unGsmBand.ulBand = stUeBand.unGsmBand.ulBand; pMsg->stBand.unWcdmaBand.ulBand = stUeBand.unWcdmaBand.ulBand; /* L频段设置参数填写 */ pMsg->stBand.stLteBand.aulLteBand[0] = pSysCfgReq->stLBand.ulBandLow; pMsg->stBand.stLteBand.aulLteBand[1] = pSysCfgReq->stLBand.ulBandHigh; if ((MMA_SYS_CFG_MODE_SET != (usSetFlg & MMA_SYS_CFG_MODE_SET)) && (MMA_SYS_CFG_BAND_SET != (usSetFlg & MMA_SYS_CFG_BAND_SET)) && (MMA_SYS_CFG_ROAM_SET == (usSetFlg & MMA_SYS_CFG_ROAM_SET))) { pMsg->ucOnlyRoamParaChanged = VOS_TRUE; } /*消息发送*/ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pMsg); if (VOS_OK != ulRet) { MN_ERR_LOG("TAF_MMA_SndMmcSysCfgReq():ERROR: Send Msg Fail."); return VOS_ERR; } return VOS_OK; }