/// <summary> /// 计算BCCH信道受到一个GSM邻载波的干扰 /// </summary> /// <param name="user">用户</param> /// <param name="interfTRX">干扰载波</param> public void CalcGsmBCCHInterf(GSMSimUser user,GSMSimTRX interfTRX,InterfCalcPara interfPara,TotalLossCalc totalLinkLoss,IInterfCalc interfCalc) { m_TotalLossCalc = totalLinkLoss; m_IsCalcDLBCCH = true; m_InterfPara = interfPara; m_User = user; m_IsUserCsService = user.IsCs; m_InterfCalc = interfCalc; GSMSimTRX userTRX = FindUsefulTrx(user, true, true); m_IsSyn = interfTRX.NeTRX.SynchroRank == userTRX.NeTRX.SynchroRank; m_IsOtherSignalDTX = interfTRX.NeTRX.IsUseDTX; CalcHopFactor(interfTRX, userTRX, interfPara); if ((base.scHopFactor==0)&(base.adjHopFactor==0)&(base.adj2HopFactor==0)) return ; //创建信号 Signal userSignal = BuildGsmSignal(userTRX, true); Signal source = BuildGsmSignal(interfTRX, true); float sourcePwr = float.NegativeInfinity; float loss = totalLinkLoss.GetAllLoss(user, interfTRX, NetWorkType.GSM, true); CalcBcchInterf(interfTRX, userSignal, source, ref sourcePwr, loss); }
/// <summary> /// GSM小区对GSM用户的干扰(邻小区) /// </summary> /// <param name="user"></param> /// <param name="isDL"></param> /// <param name="interfCell"></param> /// <param name="interfPara"></param> /// <param name="totalLinkLoss"></param> public void CalcTCHInterf(GSMSimUser user, bool isDL, GSMSimTRX interfCell, InterfCalcPara interfPara, TotalLossCalc totalLinkLoss, IInterfCalc interfCalc) { m_IsDL = isDL; m_TotalLossCalc = totalLinkLoss; m_InterfCalc = interfCalc; m_InterfPara = interfPara; m_User = user; m_IsCalcDLBCCH = false; m_IsUserCsService = user.IsCs; GSMSimTRX userTrx = FindUsefulTrx(user, false, isDL); m_IsSyn = interfCell.NeTRX.SynchroRank == userTrx.NeTRX.SynchroRank; CalcHopFactor(interfCell, userTrx,interfPara); if ((scHopFactor == 0) & (adjHopFactor == 0) & (adj2HopFactor == 0)) return; Signal userSignal = BuildGsmSignal(userTrx, isDL); Signal source = BuildGsmSignal(interfCell, isDL); float sourcePwr = float.NegativeInfinity; List<GSMTimeSlot> userTSs = FindUserTSs(user, isDL); source.Frequency = CommonCalc.GSMFreqPointToFrequency(interfCell.NeTRX.FreqBand.DLFrequency, interfCell.NeTRX.FreqBand.BandWidth, interfCell.NeTRX.FreqBand.StartChIndex, interfCell.NeTRX.ChannelIndex, isDL); float loss = totalLinkLoss.GetAllLoss(user, interfCell, NetWorkType.GSM, isDL); sourcePwr = CalcTchInterf(user, isDL, interfCell, userSignal, source, sourcePwr, userTSs, loss); }