VOS_VOID MTC_RcvGsmCellInfoInd(VOS_VOID *pMsg) { RRC_MTC_GSM_CELL_INFO_IND_STRU *pstGsmInfoInd = VOS_NULL_PTR; MTC_RRC_GSM_CELL_INFO_IND_STRU *pstGsmCellInfo = VOS_NULL_PTR; VOS_UINT32 ulReceiverPid; /* 如果当前已经关机,则停止发送信息 */ if (MTC_MODEM_POWER_OFF == MTC_GetModemPowerState(MODEM_ID_0)) { return; } /* 判断当前主模状态, 为TDS/LTE时发送 */ if (MTC_RATMODE_TDS == MTC_GetModemRatMode(MODEM_ID_0)) { ulReceiverPid = TPS_PID_RRC; } else if (MTC_RATMODE_LTE== MTC_GetModemRatMode(MODEM_ID_0)) { ulReceiverPid = PS_PID_ERRC; } else { return; } /* 分配消息空间 */ pstGsmCellInfo = (MTC_RRC_GSM_CELL_INFO_IND_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN( UEPS_PID_MTC, sizeof(MTC_RRC_GSM_CELL_INFO_IND_STRU)); if (VOS_NULL_PTR == pstGsmCellInfo) { MTC_ERROR_LOG("MTC_RcvGsmCellInfoInd: Alloc Msg Fail!"); return; } pstGsmCellInfo->stMsgHeader.ulReceiverPid = ulReceiverPid; pstGsmCellInfo->stMsgHeader.ulMsgName = ID_MTC_RRC_GSM_CELL_INFO_IND; pstGsmInfoInd = (RRC_MTC_GSM_CELL_INFO_IND_STRU *)pMsg; PS_MEM_CPY(&pstGsmCellInfo->stGsmCellInfo, &pstGsmInfoInd->stGsmCellInfo, sizeof(RRC_MTC_GSM_CELL_INFO_STRU)); /* 发送消息 */ if (VOS_OK != PS_SEND_MSG(UEPS_PID_MTC, pstGsmCellInfo)) { MTC_ERROR_LOG("MTC_RcvGsmCellInfoInd: Snd Msg Err!"); } return; }
VOS_VOID MTC_ProcCurrCampPlmnInfoForSvlte(VOS_VOID) { MTC_MODEM_POWER_STATE_ENUM_UINT8 enModem1PowerState; MTC_MODEM_NETWORK_INFO_STRU *pstModem0NetworkInfo = VOS_NULL_PTR; MTC_PS_TRANSFER_ENUM_UINT8 enPsTransferSolution; MTC_RATMODE_ENUM_UINT8 enModem0RateMode; VOS_UINT8 ucUsimValidFlag; MTC_PS_TRANSFER_CTX_STRU *pstPsTransferCtx = VOS_NULL_PTR; pstPsTransferCtx = MTC_GetPsTransferCtxAddr(); enModem1PowerState = MTC_GetModemPowerState(MODEM_ID_1); pstModem0NetworkInfo = MTC_GetModemNetworkInfoAddr(MODEM_ID_0); enPsTransferSolution = MTC_GetPsTransferCfg(); enModem0RateMode = MTC_GetModemRatMode(MODEM_ID_0); /* Modem1关机,国外模式无需PS域迁移 */ if (MTC_MODEM_POWER_OFF == enModem1PowerState) { return; } ucUsimValidFlag = MTC_GetModemUsimValidFlag(MODEM_ID_0); /* 1、modem1处于开机状态 2、当前驻留网络接入技术为T/L(OscarTL通过主卡的G重选回T/L) 3、当前驻留网络非禁止plmn 4、单待模式modem0的ps是detach状态,上报PS域迁移指示 */ if ( ( (MTC_RATMODE_LTE == enModem0RateMode) || (MTC_RATMODE_TDS == enModem0RateMode) ) && (VOS_FALSE == pstModem0NetworkInfo->ucIsForbiddenPlmnFlag) && (VOS_TRUE == ucUsimValidFlag) && (VOS_FALSE == pstModem0NetworkInfo->stPsDomainInfo.ucPsAttachAllowFlg) && (VOS_TRUE == pstModem0NetworkInfo->stPsDomainInfo.ucPsSupportFlg) ) { /* PS域迁移策略脱网重选,上报网络恢复指示AT命令 */ if (MTC_PS_TRANSFER_LOST_AREA == enPsTransferSolution) { MTC_SndModem0MtaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); MTC_SndModem0MmaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } /* PS域迁移策略离网重选,上报网络恢复指示AT命令 */ if ((MTC_PS_TRANSFER_OFF_AREA == enPsTransferSolution) && (MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE == pstPsTransferCtx->enRrcCause)) { MTC_SndModem0MtaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); MTC_SndModem0MmaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } //MTC_SndModem0MmaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } return; }
VOS_VOID MTC_DEBUG_SendTLBandSetReq( VOS_UINT8 ucBand ) { if (MTC_RATMODE_LTE == MTC_GetModemRatMode(MODEM_ID_0)) { MTC_DEBUG_SendLBandSetReq(ucBand); MTC_DEBUG_SendTBandSetReq(ucBand); } else { MTC_DEBUG_SendTBandSetReq(ucBand); MTC_DEBUG_SendLBandSetReq(ucBand); } return; }
VOS_VOID MTC_SndTdsLteIntrusionBandSetReq( RRC_MTC_MS_BAND_INFO_STRU *pstForbiddenBandInfo ) { /* 判断当前主模状态, 并分别给TDS及LTE接入层发送禁用B39指示 */ if (MTC_RATMODE_LTE == MTC_GetModemRatMode(MODEM_ID_0)) { #if (FEATURE_ON == FEATURE_LTE) /* 判断当前接入技术是否支持LTE */ if (VOS_TRUE == MTC_IsSupportRatType(MODEM_ID_0, MTC_RATMODE_LTE)) { MTC_SndRrcIntrusionBandSetReq(PS_PID_ERRC, pstForbiddenBandInfo); } #endif #if (FEATURE_ON == FEATURE_UE_MODE_TDS) /* 判断当前接入技术是否支持TDS */ if (VOS_TRUE == MTC_IsSupportRatType(MODEM_ID_0, MTC_RATMODE_TDS)) { MTC_SndRrcIntrusionBandSetReq(TPS_PID_RRC, pstForbiddenBandInfo); } #endif } else { #if (FEATURE_ON == FEATURE_UE_MODE_TDS) /* 判断当前接入技术是否支持TDS */ if (VOS_TRUE == MTC_IsSupportRatType(MODEM_ID_0, MTC_RATMODE_TDS)) { MTC_SndRrcIntrusionBandSetReq(TPS_PID_RRC, pstForbiddenBandInfo); } #endif #if (FEATURE_ON == FEATURE_LTE) /* 判断当前接入技术是否支持LTE */ if (VOS_TRUE == MTC_IsSupportRatType(MODEM_ID_0, MTC_RATMODE_LTE)) { MTC_SndRrcIntrusionBandSetReq(PS_PID_ERRC, pstForbiddenBandInfo); } #endif } return; }
VOS_VOID MTC_ProcCurrCampPlmnInfoForLC(VOS_VOID) { MTC_MODEM_NETWORK_INFO_STRU *pstModem0NetworkInfo = VOS_NULL_PTR; MTC_PS_TRANSFER_ENUM_UINT8 enPsTransferSolution; MTC_RATMODE_ENUM_UINT8 enModem0RateMode; MTC_PS_TRANSFER_CTX_STRU *pstPsTransferCtx = VOS_NULL_PTR; pstPsTransferCtx = MTC_GetPsTransferCtxAddr(); pstModem0NetworkInfo = MTC_GetModemNetworkInfoAddr(MODEM_ID_0); enPsTransferSolution = MTC_GetPsTransferCfg(); enModem0RateMode = MTC_GetModemRatMode(MODEM_ID_0); /* 1、当前驻留网络非禁止plmn 2、单待模式modem0的ps是detach状态,上报PS域迁移指示 */ if ( (MTC_RATMODE_LTE == enModem0RateMode) && (VOS_FALSE == pstModem0NetworkInfo->ucIsForbiddenPlmnFlag) && (VOS_FALSE == pstModem0NetworkInfo->stPsDomainInfo.ucPsAttachAllowFlg)) { /* PS域迁移策略脱网重选,上报网络恢复指示AT命令 */ if (MTC_PS_TRANSFER_LOST_AREA == enPsTransferSolution) { MTC_SndModem0MtaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } /* PS域迁移策略离网重选,上报网络恢复指示AT命令 */ if ((MTC_PS_TRANSFER_OFF_AREA == enPsTransferSolution) && (MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE == pstPsTransferCtx->enRrcCause)) { MTC_SndModem0MtaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } MTC_SndModem0MmaPsTransferInd(MTC_PS_TRANSFER_CAUSE_AREA_AVALIABLE); } return; }