private Terminal ReadTable() { string commandText = "SELECT * FROM 4GTerminals"; using (DataTable table = m_AccessHelper.ExecuteDataset(commandText, null)) { for (int i = 0; i < table.Rows.Count; i++) { if (ConvertCheckedToBool(table.Rows[i]["IsRelayTerminal"])) { Terminal item = new Terminal(); LTETerminal terminal2 = new LTETerminal(); terminal2.NetType = NetWorkType.LTE; terminal2.Name = table.Rows[i]["NAME"].ToString(); terminal2.DlSmSupported = ConvertCheckedToBool(table.Rows[i]["DL_SM_SUPPORTED"]); terminal2.Gain = ConvertToFloat(table.Rows[i]["GAIN"]); terminal2.Loss = ConvertToFloat(table.Rows[i]["LOSS"]); terminal2.MaxTxPower = ConvertToFloat(table.Rows[i]["PMAX"]); terminal2.MinTxPower = ConvertToFloat(table.Rows[i]["PMIN"]); terminal2.NoiseFigure = ConvertToFloat(table.Rows[i]["NOISE_FACTOR"]); terminal2.Reception = this.FindReceptionEquipmentByName(table.Rows[i]["RX_EQUIP"].ToString()); terminal2.RxAntNumber = ConvertToInt(table.Rows[i]["RX_ANTENNAS"]); terminal2.NetType = NetWorkType.LTE; terminal2.TxAntNumber = ConvertToInt(table.Rows[i]["TX_ANTENNAS"]); terminal2.UlSmSupported = ConvertCheckedToBool(table.Rows[i]["UL_SM_SUPPORTED"]); terminal2.IsRelayTerminal = ConvertCheckedToBool(table.Rows[i]["IsRelayTerminal"]); item.NetTerminalList.Add(terminal2); item.Gain = terminal2.Gain; item.DownLinkBearer = 29; item.UpLinkBearer = 29; item.Technology = NetWorkType.LTE; item.Attenuation = 0f; item.Reception = this.FindReceptionEquipmentByName(table.Rows[i]["RX_EQUIP"].ToString()); item.Technology = NetWorkType.LTE; item.Name = table.Rows[i]["NAME"].ToString(); //返回第一个匹配的对象 return item; } } return null; } }
/// <summary> /// 如果不能使用RB时的信噪比 /// </summary> /// <param name="bestServerCarrierEx"></param> /// <param name="index"></param> /// <param name="terminal"></param> /// <param name="RbNum"></param> /// <param name="loT_Actual_UL"></param> /// <param name="gain"></param> private void GetPuschSinr(int index, LTETerminal terminal, int RbNum, double loT_Actual_UL, double gain) { Mobility trafficMobility = this.m_DataManager.Group.TrafficMobility; double ulLinkLoss = ((float)this.m_ULBestServerLinkLoss[index]) * LteConst.TIMES_TO_FLOAT; double linkDlLoss = this.GetLinkDlLoss(index); List<Demodulation> uLDemodulationTable = m_bestServer.ULDemodulationTable; double pul = 0.0; this.CircleRB(index, RbNum, ulLinkLoss, linkDlLoss, uLDemodulationTable, true, gain, ref pul); if (this.m_OneBinValueTemp.RPUSCHMCS < this.m_LowMCS) { pul = this.m_MaxPower; this.CircleRB(index, RbNum, ulLinkLoss, linkDlLoss, uLDemodulationTable, false, gain, ref pul); } this.m_OneBinValueTemp.RPUSCH_SINR = Math.Min(this.m_OneBinValueTemp.RPUSCH_SINR, this.m_HighMCSSinr); }
/// <summary> /// 得到如果使用RB的信噪比 /// </summary> /// <param name="bestServerCarrierEx"></param> /// <param name="index"></param> /// <param name="terminal"></param> /// <param name="RbNum"></param> /// <param name="loT_Actual_UL"></param> /// <param name="gain"></param> private void GetPushSinrByFixedRB(int index, LTETerminal terminal, int RbNum, double gain) { double linkUlLoss = ((float)this.m_ULBestServerLinkLoss[index]) * LteConst.TIMES_TO_FLOAT; double linkDlLoss = this.GetLinkDlLoss(index); double powerOfPUSCH = Math.Min(this.CalcTxPower(index, linkDlLoss, RbNum), (double)this.m_MaxPower); double rscpPUSCH = powerOfPUSCH - linkDlLoss;//接收功率 double ulNoisePower = this.CalculateUlNoisePower(RbNum); double highPowerOfPUSCH = ((((this.m_AcutalHighSinrGate + linkUlLoss) - this.m_OneBinValueTemp.m_ModelShadowMargin) + m_ulActualIoT) + ulNoisePower) + this.m_OneBinValueTemp.m_C_i_nShadowMargin; powerOfPUSCH = Math.Min(powerOfPUSCH, highPowerOfPUSCH); double sinr = (rscpPUSCH + this.m_OneBinValueTemp.m_ModelShadowMargin) - ((ulNoisePower + m_ulActualIoT) + this.m_OneBinValueTemp.m_C_i_nShadowMargin); if (!m_isFDD) { double dlInterf = 0; //double dlInterf = (double)this.m_DLInterfMatrix[index]; sinr -= dlInterf; } sinr = Math.Min(this.m_AcutalHighSinrGate, sinr); List<Demodulation> uLDemodulationTable = m_bestServer.ULDemodulationTable; McsParas paras = this.m_ITrafficMCS.GetMCSByDemodulationAndSINR(uLDemodulationTable, Convert.ToSingle((double)(sinr + gain)), this.m_AcutalHighMcsIndex, LinkType.Uplink); if ((paras.BearEff != 0f) && (paras.BearEff != -1f)) { double powerOfRePUSCH = powerOfPUSCH - UnitTrans.todB((int)(12 * RbNum)); this.m_OneBinValueTemp.RPUSCH_Level = (short)((powerOfRePUSCH - linkUlLoss) * 100.0); double bearEff = paras.BearEff; if (sinr > double.MinValue) { this.m_OneBinValueTemp.RPUSCH_SINR = Convert.ToInt16((double)(sinr * 100.0)); this.m_OneBinValueTemp.RPUSCHMCS = Convert.ToInt16(paras.McsIndex); double ulThroughput = this.GetUlThroughput(RbNum, bearEff); if (ulThroughput >= 0.0) { this.m_OneBinValueTemp.RULPEAK = Convert.ToInt32((double)(ulThroughput * 1000.0)); double uLAPPLICATIONPEAK = (ulThroughput * this.m_UlTxEff) - this.m_OffSet; if (uLAPPLICATIONPEAK < 0.0) { uLAPPLICATIONPEAK = 0.0; } this.m_OneBinValueTemp.RULAPPLICATIONPEAK = Convert.ToInt32((double)(uLAPPLICATIONPEAK * 1000.0)); } } } }
public void MyTestInitialize() { m_DlHOService = new DlHandOverService(m_CurretTti,m_Sfth ); m_ISourceCarrier = new SimulationCarrier(); m_ITargetCarrier = new SimulationCarrier(); m_NgbCaiirer = new SimulationCarrier(); m_Carrier = new SimulationCarrier(); m_User = new SimulationUser(); m_User.LTEUser = new User(); Service serv = new UnionPsService(); m_User.LTEUser.Service = serv; m_NgbCarrierList = new List<ISimulationCarrier>(); m_ISourceCarrier.AdmissionCarrierTag = new AdmissionCellTag(); AdmissionCellTag adCellTag = m_ISourceCarrier.AdmissionCarrierTag as AdmissionCellTag; adCellTag.ULSourceOutThroughput = 100; m_Carrier.AdmissionCarrierTag = new AdmissionCellTag(); m_NgbCaiirer.AdmissionCarrierTag = new AdmissionCellTag(); AdmissionCellTag ngbCellTag = m_NgbCaiirer.AdmissionCarrierTag as AdmissionCellTag; ngbCellTag.ULTotalHOThroughput = 50; SimulationCarrier temp = m_NgbCaiirer as SimulationCarrier; temp.Carrier = new LTECell(); m_LbUserList = new List<ISimulationUser>(); SimulationUser user1 = new SimulationUser(); SimulationUser user2 = new SimulationUser(); m_LbUserList.Add(user1); m_LbUserList.Add(user2); m_NgbCarrierList.Add(m_NgbCaiirer); m_DlHOVoiceUserList = new List<ISimulationUser>(); SimulationUser VUser1 = new SimulationUser(); SimulationUser VUser2 = new SimulationUser(); m_DlHOVoiceUserList.Add(VUser1); m_DlHOVoiceUserList.Add(VUser2); CarrierTotalLoss a=new CarrierTotalLoss (); SimulationCarrier carrier = new SimulationCarrier(); carrier.IsLTECell = true; LTECell lteCell = new LTECell(); lteCell.RSPower = 15f; carrier.Carrier = lteCell; CarrierTotalLoss b = new CarrierTotalLoss(carrier, 100f, 100f); //SimulationCarrier carrier1 = new SimulationCarrier(); //b.Carrier = carrier1; List<CarrierTotalLoss> listCarrier = new List<CarrierTotalLoss>(); listCarrier.Add(a); listCarrier.Add(b); a.Carrier = new SimulationCarrier(); carrier.IsLTECell = false; RelayCell relayCell1 = new RelayCell(); relayCell1.RSPower = 16f; a.Carrier.Carrier = relayCell1; b.Carrier = new SimulationCarrier(); carrier.IsLTECell = false; RelayCell relayCell2 = new RelayCell(); relayCell1.RSPower = 17f; b.Carrier.Carrier = relayCell2; m_User.BestServiceCellBeforeHandOver = a; m_User.StroNbrBeforeHandOver = b; user1.BestServiceCellBeforeHandOver = a; user1.StroNbrBeforeHandOver = b; user2.BestServiceCellBeforeHandOver = a; user2.StroNbrBeforeHandOver = b; user1.CarrierListInComputeArea = listCarrier.ToArray(); user2.CarrierListInComputeArea = listCarrier.ToArray(); m_User.CarrierListInComputeArea = listCarrier.ToArray(); List<ISimulationUser> list = new List<ISimulationUser>(); list.AddRange(m_LbUserList); RelayCell relaycarrier = new RelayCell(); ((SimulationCarrier)m_NgbCaiirer).Carrier = relaycarrier; ((SimulationCarrier)m_ISourceCarrier).Carrier = relaycarrier; ((SimulationCarrier)m_ITargetCarrier).Carrier = relaycarrier; user1.CarrierListInComputeArea[0].Carrier = carrier; user1.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; user2.CarrierListInComputeArea[0].Carrier = carrier; user2.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; m_User.CarrierListInComputeArea[0].Carrier = carrier; m_User.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier; user1.CarrierListInComputeArea[1].Carrier = carrier; user1.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; user2.CarrierListInComputeArea[1].Carrier = carrier; user2.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; m_User.CarrierListInComputeArea[1].Carrier = carrier; m_User.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier; //m_User.StroNbrBeforeHandOver.Carrier = carrier; relaycarrier.RSPower = 100; //m_User.StroNbrBeforeHandOver.Carrier = carrier; //m_User.BestServiceCellBeforeHandOver.Carrier = carrier; Huawei.UNet.Traffic.Map.Interface.User lteuser = new Huawei.UNet.Traffic.Map.Interface.User(); user1.LTEUser = lteuser; user1.ID = 1; Huawei.UNet.Traffic.Interface.Terminal terminal = new Huawei.UNet.Traffic.Interface.Terminal(); user1.LTEUser.Terminal = terminal; List<Huawei.UNet.Traffic.Interface.NetworkTerminal> netterminallist = new List<NetworkTerminal>(); NetworkTerminal networkTerminal = new NetworkTerminal(); LTETerminal lteterminal = new LTETerminal(); netterminallist.Add(lteterminal); user1.LTEUser.Terminal.NetTerminalList = netterminallist; user1.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); user2.LTEUser = lteuser; user2.LTEUser.Terminal = terminal; user2.ID = 2; netterminallist.Add(lteterminal); user2.LTEUser.Terminal.NetTerminalList = netterminallist; user2.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); m_User.LTEUser = lteuser; m_User.ID = 0; m_User.LTEUser.Terminal = terminal; netterminallist.Add(lteterminal); m_User.LTEUser.Terminal.NetTerminalList = netterminallist; m_User.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>(); ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService()); //Service service = new Service(); //UnionPsService psservice = SimulationTools.GetUnionPsService(service); //psservice.DlOffset = 0; //psservice.DlTxEff = 1; //psservice.DlMinThroughputDemand = 0; //user1.LTEUser.Service = psservice; }
public LteTerminalDesc(LTETerminal ntTerminal) { this.m_LteTerminal = ntTerminal; }
/// <summary> /// 从context里获取数据 /// </summary> /// <param name="context"></param> private void GetDataFromContext(Context context) { m_Group = (CoPredicGroup)context[ContextKeys.Group]; m_appContext = (IBaseService)context[ContextKeys.ApplicationContext]; IProjectManager projectManager = ServiceHelper.Lookup<IProjectManager>(m_appContext); m_ProjectPath = projectManager.CurrentProjectLossPath; //获得Cell列表 m_CellList = (List<IACell>)context[ContextKeys.CellList]; //获得接收功率矩阵 m_GSMBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoGSMBestServerRSCP]; m_UMTSBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoUMTSBestServerRSCP]; m_TDBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoTDSCDMABestServerRSCP]; m_LTEBestServerRSCP = (ValueMatrixShort)context[ContextKeys.CoLTEBestServerRSCP]; m_GSMBestServerID = (ValueMatrixDouble)context[ContextKeys.CoGSMBestServerID]; m_UMTSBestServerID = (ValueMatrixDouble)context[ContextKeys.CoUMTSBestServerID]; m_TDBestServerID = (ValueMatrixDouble)context[ContextKeys.CoTDBestServerID]; m_LTEBestServerID = (ValueMatrixDouble)context[ContextKeys.CoLTEBestServerID]; //获得干扰矩阵 m_GSMInterf = (ValueMatrixDouble)context[ContextKeys.CoGSMInterf]; m_UMTSInterf = (ValueMatrixDouble)context[ContextKeys.CoUMTSInterf]; m_TDInterf = (ValueMatrixDouble)context[ContextKeys.CoTDInterf]; m_LTEInterf = (ValueMatrixDouble)context[ContextKeys.CoLTEInterf]; m_UMTSTerminal = (UMTSTerminal)m_Group.CoUMTSGroup.Terminal.GetNetWorkTerminal(NetWorkType.UMTS); m_TDTerminal = (TDTerminal)m_Group.CoTDSCDMAGroup.Terminal.GetNetWorkTerminal(NetWorkType.TDSCDMA); m_LTETerminal = (LTETerminal)m_Group.CoLTEGroup.Terminal.GetNetWorkTerminal(NetWorkType.LTE); }