コード例 #1
0
ファイル: RNCollection.cs プロジェクト: xiaoyj/Space
 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;
     }
 }
コード例 #2
0
ファイル: RPUSCH_SINRCase.cs プロジェクト: xiaoyj/Space
 /// <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);
 }
コード例 #3
0
ファイル: RPUSCH_SINRCase.cs プロジェクト: xiaoyj/Space
 /// <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));
             }
         }
     }
 }
コード例 #4
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;

        }
コード例 #5
0
ファイル: LteTerminalDesc.cs プロジェクト: xiaoyj/Space
 public LteTerminalDesc(LTETerminal ntTerminal)
 {
     this.m_LteTerminal = ntTerminal;
 }
コード例 #6
0
ファイル: CovByCir.cs プロジェクト: xiaoyj/Space
        /// <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);
        }