public void MyInitial() { m_IGetLinkloss = new MockIGetLinkloss(); m_InterfCalc = new MockIInterfCalc(); m_InterfPara = new InterfCalcPara(); }
public void Inital() { m_User = MockGSMSimUser.CreateGSMSimUser(); m_IGetLinkloss = new MockIGetLinkloss(); totalLinkLoss = new TotalLossCalc(m_IGetLinkloss); interfPara = new InterfCalcPara(); interfCalc = new MockIInterfCalc(); m_TchCalc = new TCHInterfCalc(); }
public void MyInitial() { m_IGetLinkloss = new MockIGetLinkloss(); m_TotalLossCalc = new TotalLossCalc(m_IGetLinkloss); m_InterfCalc = new MockIInterfCalc(); m_InterfPara = new InterfCalcPara(); m_DlBCCHCIR = new DLBCCHCIR(m_IGetLinkloss, m_InterfPara, m_InterfCalc); //InitialUser(); m_User = MockGSMSimUser.CreateGSMSimUser(); }
/// <summary> /// 初始化成员变量 /// </summary> /// <param name="context"></param> public void Init(SnapshotContext context) { m_InterfParam = context.Lookup<IInterfCalc>(GsmContextkey.GSMIInterfCalc); m_ServerdUsers = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMServedUsers); m_GetLinkLoss = context.Lookup<IGetLinkloss>(GsmContextkey.GSMGetLinkloss); m_InterfPara = context.Lookup<InterfCalcPara>(GsmContextkey.GSMIInterfParam); m_TchCir = new TCHCIR(m_GetLinkLoss, m_InterfPara, m_InterfParam); m_IsPowerCtrl = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).IspowerCtrl; m_PowerError = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).PowerError; m_Alpha = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).Alpha; m_Beta = context.Lookup<GSMUIParam>(GsmContextkey.GSMUIParam).Beta; }
public void Init(SnapshotContext context) { m_GetLinkLoss = context.Lookup<IGetLinkloss>(GsmContextkey.GSMGetLinkloss); m_InterfCalc = context.Lookup<IInterfCalc>(GsmContextkey.GSMIInterfCalc); m_InterfPara = context.Lookup<InterfCalcPara>(GsmContextkey.GSMIInterfParam); m_ForAccessAgain = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMForAccessAgain); m_ServerUser = context.Lookup<List<GSMSimUser>>(GsmContextkey.GSMServedUsers); m_TchCir = new TCHCIR(m_GetLinkLoss, m_InterfPara, m_InterfCalc); m_ThrptCalc = new ThroughputCalculate(); context.AddKey(GsmContextkey.KickedUsers, m_KickedUsers); m_CsTable = context.Lookup<CodeSchemeTable>(GsmContextkey.CodeSchemeTable); }
/// <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); }
public TCHCIR(IGetLinkloss gsmLinkLoss, InterfCalcPara interfPara, IInterfCalc interfCalc) { m_GetLinkLoss = gsmLinkLoss; m_InterfPara = interfPara; m_InterfCalc = interfCalc; }
/// <summary> /// 初始化干扰计算参数 /// </summary> private void InitCalcPara() { m_InterfCalcPara = new InterfCalcPara(); m_InterfCalcPara.IsCalcAdj2Freq = m_UIParam.IsCalcAdj2Freq; m_InterfCalcPara.IsCalcAdjFreq = m_UIParam.IsCalcAdjFreq; m_InterfCalcPara.IsCalcBCI = m_UIParam.IsCalcBCI; m_InterfCalcPara.IsCalcImp3 = m_UIParam.IsCalcImp3; m_InterfCalcPara.IsCalcSE = m_UIParam.IsCalcSE; m_InterfCalcPara.PwrReBack = m_UIParam.PwrReBack; m_InterfCalcPara.TrxDTXFactor = m_UIParam.TrxDTXFactor; m_InterfCalcPara.UserDTXFactor = m_UIParam.UserDTXFactor; }
/// <summary> /// 计算跳频因子 /// </summary> /// <param name="otherTrx">干扰载波</param> /// <param name="userTrx">用户载波</param> protected void CalcHopFactor(GSMSimTRX otherTrx, GSMSimTRX userTrx,InterfCalcPara interfPara) { scHopFactor = adjHopFactor = adj2HopFactor = 0; scHopFactor = m_HopFactor.CalcFactor(userTrx, otherTrx, 0); if (interfPara.IsCalcAdjFreq) adjHopFactor = m_HopFactor.CalcFactor(userTrx, otherTrx, 1); if (interfPara.IsCalcAdj2Freq) adj2HopFactor = m_HopFactor.CalcFactor(userTrx, otherTrx, 2); }