VOS_VOID MTC_ProcIntrusionStrategy(VOS_VOID) { MTC_MODEM_POWER_STATE_ENUM_UINT8 enModem0PowerState; MTC_MODEM_POWER_STATE_ENUM_UINT8 enModem1PowerState; VOS_UINT32 ulLoop; VOS_UINT32 ulLineNum; MTC_INTRUSION_GSM_BAND_STATE_ENUM_UINT8 enGsmBandState; MTC_INTRUSION_TL_BAND_STATE_ENUM_UINT8 enTLBandState; MTC_CS_SERVICE_STATE_ENUM_UINT8 enCsSrvState; FUNC_VOID pFunc = VOS_NULL_PTR; /* 获取Modem0与Modem1的开机状态,只有在同时开机的情况下才进行裁决 */ enModem0PowerState = MTC_GetModemPowerState(MODEM_ID_0); enModem1PowerState = MTC_GetModemPowerState(MODEM_ID_1); if ( (MTC_MODEM_POWER_ON != enModem0PowerState) || (MTC_MODEM_POWER_ON != enModem1PowerState) ) { return; } /* 获取本地存储的频段信息,查询裁决策略表,执行对应操作 */ ulLineNum = sizeof(g_astMtcIntrusionRulingStrategyTbl) / sizeof(MTC_INTRUSION_RULING_STRATEGY_STRU); enGsmBandState = MTC_GetModem1GsmBandState(); enTLBandState = MTC_GetModem0TLBandState(); enCsSrvState = MTC_GetModemCsSrvExistFlg(MODEM_ID_1); for (ulLoop = 0; ulLoop < ulLineNum; ulLoop++) { if (g_astMtcIntrusionRulingStrategyTbl[ulLoop].enGsmBandState != enGsmBandState) { continue; } if (g_astMtcIntrusionRulingStrategyTbl[ulLoop].enTLBandState != enTLBandState) { continue; } if (MTC_CS_SERVICE_STATE_BUTT != g_astMtcIntrusionRulingStrategyTbl[ulLoop].enCsSrvState) { if (enCsSrvState != g_astMtcIntrusionRulingStrategyTbl[ulLoop].enCsSrvState) { continue; } } pFunc = g_astMtcIntrusionRulingStrategyTbl[ulLoop].pFunc; break; } if (VOS_NULL_PTR != pFunc) { pFunc(); } return; }
VOS_VOID MTC_RcvTafCsSrvInfoInd(VOS_VOID *pMsg) { VOS_UINT32 ulPid; MODEM_ID_ENUM_UINT16 enModemId; TAF_MTC_CS_SERVICE_INFO_IND_STRU *pstCsSrvInfo = VOS_NULL_PTR; MTC_CS_SERVICE_STATE_ENUM_UINT8 enCsSrvStateOld; MTC_CS_SERVICE_STATE_ENUM_UINT8 enCsSrvStateNew; MTC_CFG_ENUM_UINT8 enIntrusionCfg; pstCsSrvInfo = (TAF_MTC_CS_SERVICE_INFO_IND_STRU *)pMsg; ulPid = pstCsSrvInfo->stMsgHeader.ulSenderPid; enIntrusionCfg = MTC_GetIntrusionCfg(); /* 根据 Pid获取modem ID */ enModemId = VOS_GetModemIDFromPid(ulPid); if (enModemId >= MODEM_ID_BUTT) { MTC_ERROR_LOG("MTC_RcvMmaPowerStateInd: Modem ID Err."); return; } /* 先获取原CS域服务状态 */ enCsSrvStateOld = MTC_GetModemCsSrvExistFlg(enModemId); /* 更新modem 信息中CS域业务状态 */ MTC_SetModemCallSrvExistFlg(enModemId, pstCsSrvInfo->ucCallSrvExistFlg); MTC_SetModemSmsSrvExistFlg(enModemId, pstCsSrvInfo->ucSmsSrvExistFlg); MTC_SetModemSsSrvExistFlg(enModemId, pstCsSrvInfo->ucSsSrvExistFlg); /* 在获取当前CS域服务状态 */ enCsSrvStateNew = MTC_GetModemCsSrvExistFlg(enModemId); /* 可维可测信息记录 */ MTC_DEBUG_RcvCsSrvInfoInd(enModemId); /* 如果Modem1的CS域服务状态发生变化,且干扰控制特性开启,则需要触发干扰控制裁决 */ if ( (MODEM_ID_1 == enModemId) && (enCsSrvStateNew != enCsSrvStateOld) && (MTC_CFG_ENABLE == enIntrusionCfg) ) { MTC_ProcIntrusionStrategy(); } return; }