VOS_VOID MTC_SetModemRatMode( MODEM_ID_ENUM_UINT16 enModemId, MTC_RATMODE_ENUM_UINT8 enRatMode ) { MTC_GetModemCtxAddr(enModemId)->enRatMode = enRatMode; return; }
VOS_VOID MTC_ResetModemInfo(MODEM_ID_ENUM_UINT16 enModemId) { MTC_MODEM_INFO_STRU *pstModemInfo = VOS_NULL_PTR; pstModemInfo = MTC_GetModemCtxAddr(enModemId); PS_MEM_SET(&pstModemInfo->stSerCellBandInfo, 0, sizeof(RRC_MTC_MS_BAND_INFO_STRU)); PS_MEM_SET(&pstModemInfo->stCurBandInfo, 0, sizeof(RRC_MTC_MS_BAND_INFO_STRU)); PS_MEM_SET(&pstModemInfo->stSrvInfo, 0, sizeof(MTC_MODEM_SERVICE_INFO_STRU)); pstModemInfo->enRatMode = MTC_RATMODE_BUTT; PS_MEM_SET(&pstModemInfo->stConnStateInfo, 0, sizeof(MTC_MODEM_CONN_STATE_INFO_STRU)); PS_MEM_SET(&pstModemInfo->stGsmCellInfoEx, 0, sizeof(MTC_GSM_CELLINFO_EX_STRU)); return; }
VOS_VOID MTC_InitModemCtx(VOS_VOID) { VOS_UINT32 ulRet; VOS_UINT16 usIndex; PLATAFORM_RAT_CAPABILITY_STRU stModemPlatFormRat; MTC_MODEM_INFO_STRU *pastModemCtxAddr = VOS_NULL_PTR; MTC_OUTSIDE_MODEM_INFO_STRU *pstOutModemCtxAddr = VOS_NULL_PTR; for (usIndex = 0; usIndex < MODEM_ID_BUTT; usIndex++) { PS_MEM_SET(&stModemPlatFormRat, 0, sizeof(stModemPlatFormRat)); /* 获取Modem上下文 地址 */ pastModemCtxAddr = MTC_GetModemCtxAddr(usIndex); PS_MEM_SET(pastModemCtxAddr, 0, sizeof(MTC_MODEM_INFO_STRU)); /* 读取Modem当前接入技术nv项 */ ulRet = NV_ReadEx(usIndex, en_NV_Item_Platform_RAT_CAP, &stModemPlatFormRat, sizeof(PLATAFORM_RAT_CAPABILITY_STRU)); if (VOS_OK != ulRet) { MTC_WARNING_LOG("MTC_InitIntrusionCtx: Read Nv Fail."); continue; } MTC_ParsePlatFormRat(&(pastModemCtxAddr->ucRatCap), &stModemPlatFormRat); pastModemCtxAddr->enRatMode = MTC_RATMODE_BUTT; } /* 初始化外部modem上下文件信息 */ for (usIndex = MTC_OUTSIDE_MODEM_CDMA; usIndex < MTC_OUTSIDE_MODEM_BUTT; usIndex++ ) { pstOutModemCtxAddr = MTC_GetOutSideModemCtxAddr(usIndex); PS_MEM_SET(pstOutModemCtxAddr, 0x0, sizeof(MTC_OUTSIDE_MODEM_INFO_STRU)); } return; }
VOS_VOID MTC_DEBUG_ShowModemInfo(VOS_VOID) { MTC_MODEM_INFO_STRU *pstModemInfo = VOS_NULL_PTR; MODEM_ID_ENUM_UINT16 enModemId; for (enModemId = 0; enModemId < MODEM_ID_BUTT; enModemId++) { pstModemInfo = MTC_GetModemCtxAddr(enModemId); (VOS_VOID)vos_printf("Modem[%d] RatCap : 0x%02X \r\n", enModemId, pstModemInfo->ucRatCap); (VOS_VOID)vos_printf("Modem[%d] Power state : %d \r\n", enModemId, pstModemInfo->enPowerState); (VOS_VOID)vos_printf("Modem[%d] Rat Mode : %d \r\n", enModemId, pstModemInfo->enRatMode); (VOS_VOID)vos_printf("Modem[%d] Call Srv : %d \r\n", enModemId, pstModemInfo->stSrvInfo.ucCallSrvExistFlg); (VOS_VOID)vos_printf("Modem[%d] Sms Srv : %d \r\n", enModemId, pstModemInfo->stSrvInfo.ucSmsSrvExistFlg); (VOS_VOID)vos_printf("Modem[%d] Ss Srv : %d \r\n", enModemId, pstModemInfo->stSrvInfo.ucSsSrvExistFlg); (VOS_VOID)vos_printf("Modem[%d] Band info[0] : 0x%08X \r\n", enModemId, pstModemInfo->stCurBandInfo.aulBandInfo[0]); (VOS_VOID)vos_printf("Modem[%d] Band info[1] : 0x%08X \r\n", enModemId, pstModemInfo->stCurBandInfo.aulBandInfo[1]); } return; }
VOS_UINT32 MTC_IsSupportRatType( MODEM_ID_ENUM_UINT16 enModemId, MTC_RATMODE_ENUM_UINT8 enRatMode ) { if (enRatMode >= MTC_RATMODE_BUTT) { return VOS_FALSE; } /* 判断modemId是否有效 */ if (enModemId >= MODEM_ID_BUTT) { return VOS_FALSE; } if (0 != (MTC_GetModemCtxAddr(enModemId)->ucRatCap & MTC_SET_BIT(enRatMode))) { return VOS_TRUE; } return VOS_FALSE; }
VOS_VOID MTC_RcvIntrusionBandInfoInd(VOS_VOID * pMsg) { MODEM_ID_ENUM_UINT16 enModemId; MTC_MODEM_INFO_STRU *pstModemInfo; RRC_MTC_INTRUSION_BAND_INFO_IND_STRU *pstModemBandInfo; MTC_CFG_ENUM_UINT8 enIntrusionCfg; MTC_CFG_ENUM_UINT8 enNotchCfg; #if 0 MTC_CFG_ENUM_UINT8 enNarrowDcsCfg; #endif pstModemBandInfo = (RRC_MTC_INTRUSION_BAND_INFO_IND_STRU*)pMsg; enModemId = VOS_GetModemIDFromPid(pstModemBandInfo->stMsgHeader.ulSenderPid); /* 检查ModemID有效性,并更新本地全局变量 */ if (enModemId >= MODEM_ID_BUTT) { MTC_ERROR1_LOG("MTC_RcvIntrusionBandInfoInd: Err ModemId ", enModemId); return; } pstModemInfo = MTC_GetModemCtxAddr(enModemId); PS_MEM_CPY(&pstModemInfo->stCurBandInfo, &pstModemBandInfo->stCurBandInfo, sizeof(RRC_MTC_MS_BAND_INFO_STRU)); PS_MEM_CPY(&pstModemInfo->stSerCellBandInfo, &pstModemBandInfo->stSerCellBandInfo, sizeof(RRC_MTC_MS_BAND_INFO_STRU)); enIntrusionCfg = MTC_GetIntrusionCfg(); enNotchCfg = MTC_GetNotchCfg(); /* 将当前MTC上下文上报到SDT */ MTC_DEBUG_TraceCtxInfo(); if (MTC_CFG_ENABLE == enIntrusionCfg) { /* 更新频段信息后,触发干扰控制裁决 */ MTC_ProcIntrusionStrategy(); } if (MTC_CFG_ENABLE == enNotchCfg) { /* 更新频段信息后,触发notch控制裁决 */ MTC_ProcNotchStrategy(); } #if 0 /* 判断Narrow band dcs裁决是否使能 */ enNarrowDcsCfg = MTC_GetNarrowBandDcsCfg(); if (MTC_CFG_ENABLE == enNarrowDcsCfg) { /* 执行Narrow band dcs裁决 */ MTC_ProcNarrowDcsStrategy(); } #endif /* TL射频控制开关开启时, 触发干扰控制裁决 */ if ( (MTC_CFG_ENABLE == MTC_GetTlRfCtrlCfg()) && (MODEM_ID_0 == enModemId) ) { MTC_ProcB39B32Intrusion(); } return; }
MTC_MODEM_MIPICLK_BITMAP_STRU* MTC_GetRfCellInfoAddr( MODEM_ID_ENUM_UINT16 enModemId ) { return &(MTC_GetModemCtxAddr(enModemId)->stRfCellInfo); }
VOS_UINT8 MTC_GetModemUsimValidFlag(MODEM_ID_ENUM_UINT16 enModemId) { return MTC_GetModemCtxAddr(enModemId)->ucUsimValidFlag; }
MTC_MODEM_POWER_STATE_ENUM_UINT8 MTC_GetModemPowerState(MODEM_ID_ENUM_UINT16 enModemId) { return MTC_GetModemCtxAddr(enModemId)->enPowerState; }