Ejemplo n.º 1
0
 public void Init()
 {
     m_ModelList = GSMPointAnalysisMock.MockModelList();
     RxPowerAndLinkLossModel modelimage = new RxPowerAndLinkLossModel();
     modelimage.RxPower = -90;
     Site site = GSMMock.MockSite();
     Transceiver transceiver = new Transceiver();
     transceiver.Parent = site;
     modelimage.Cell = new GSMTRX();
     modelimage.Cell.Parent = transceiver;
     modelimage.Cell.ID = 2;
     modelimage.DownLinkLoss = 112;
     modelimage.UpLinkLoss = 112;
     m_ModelList.Add(modelimage);
     m_Point = GSMPointAnalysisMock.MockGeoXYPoint();
     m_TargetPara = new TargetPara();
     m_TargetPara.TargetCIR = 9;
     m_TargetPara.TargetRxPower = -110;
     m_TargetPara.TargetThroughput = 12;
     m_Terminal = new Terminal();
     GSMTerminal gsmTerminal = new GSMTerminal();
     gsmTerminal.NetType = NetWorkType.GSM;
     m_Terminal.NetTerminalList.Add(gsmTerminal);
     m_Service = new UnionCsService();
     m_Service.CommonType = CommonServiceType.CSService;
     //modify by lyt 6.23
     GSMService gsmservice = new GSMService();
     ((UnionCsService)m_Service).CSServiceDic.Add(NetWorkType.GSM, gsmservice);
     m_ULDetail = (GSMULDetail)(cellCalc.CalculateUpLinkDetail(m_ModelList, point, m_Service, m_Terminal, m_mobility));
     //m_ULDetail = new GSMULDetail(m_ModelList, m_TargetPara, m_Service, m_Terminal);
 }
Ejemplo n.º 2
0
 public static List<RxPowerAndLinkLossModel>  MockModelList()
 {   
     List<RxPowerAndLinkLossModel> model = new List<RxPowerAndLinkLossModel>();
     RxPowerAndLinkLossModel[] modelimage = new RxPowerAndLinkLossModel[3];
     for(int i=0;i<3;i++)
     {
         modelimage[i].Cell = new GSMTRX();
         Site site = GSMMock.MockSite();
         Transceiver transceiver = GSMMock.MockTranceiver();
         transceiver.Parent=site;
         modelimage[i].Cell.Parent = transceiver;
         modelimage[i].RxPower = -108;
         modelimage[i].UpLinkLoss = -110;
         modelimage[i].DownLinkLoss = -110;
     }
     modelimage[0].Cell.ID = 12;
     modelimage[1].Cell.ID = 34;
     modelimage[2].Cell.ID = 23;
     model.Add(modelimage[0]);
     model.Add(modelimage[1]);
     model.Add(modelimage[2]);
     return model;
 }
Ejemplo n.º 3
0
 private static void GetOneCellInterf(IACell bestCell, ref double totalIntef, RxPowerAndLinkLossModel model)
 {
     if (bestCell.ID == model.Cell.ID)
     {
         float rxpower = 0;
         UMTSCell currentCell = model.Cell as UMTSCell;
         rxpower = GetSourceRxPower(currentCell) - (float)model.DownLinkLoss;
         totalIntef += CalcIo(model.Cell, rxpower, bestCell);
     }
     else
     {
         float rxpower = model.Cell.MaxPower - (float)model.DownLinkLoss;
         totalIntef += CalcIo(model.Cell, rxpower, bestCell);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 画剖面图
        /// </summary>
        /// <param name="cellPoint"></param>
        /// <param name="receivePoint"></param>
        private void RefreshProfilePanel(GeoXYPoint cellPoint, GeoXYPoint receivePoint)
        {

            try
            {
                //m_TransComboBoxSetBySelf = true;
                //m_TransComboBox.Text = m_CurrentCell.Name;
                //m_TransComboBoxSetBySelf = false;
                if (IsValidateParameter(cellPoint, receivePoint)) return;
                m_ReceptionPowerLabel.Refresh();
                ChangeComboBoxValueWithoutEvent(m_TransComboBox, m_CurrentTran.Name);
                m_CarrierComboBox.Text = m_CurrentCarrier.Name;
                if (this.m_CellEdgeCoverProbility.Text == "")
                {
                    this.m_CellEdgeCoverProbility.Text = "0";
                }
                else
                {
                    this.m_CellEdgeCoverValue = Convert.ToInt32(this.m_CellEdgeCoverProbility.Text);
                }
                float cellEdgeCoverProbility = Convert.ToSingle(this.m_CellEdgeCoverValue);
                bool m_Indoor = cbIndoor.Checked;
                RxPowerAndLinkLossModel model = new RxPowerAndLinkLossModel();

                ReceptPw rPw = m_PointAnalysisCalculator.CalculateReceptPw(out model, m_CurrentCarrier, receivePoint, cellEdgeCoverProbility, m_Indoor, null, null);

                short[] heights = GetHeighsArr(cellPoint, receivePoint);
                int distance = (int)(cellPoint.Distance(receivePoint));
                int modelID = Tool.GetPropModelConfig(m_CurrentCarrier).PropModelID;
                string pwString = "";
                if (!m_CurrentTran.Active)
                {
                    pwString = PointAnalyseResource.POINTANALYSE_INFINITY;
                }
                else
                {
                    double rxPower = m_PointAnalysisCalculator.CalculateCellRxPower(receivePoint, m_CurrentCarrier, model.DownLinkLoss);
                    pwString = rxPower.ToString("0.00");
                }
                m_PwString = pwString;
                string plvString = "";
                if (!m_CurrentTran.Active || float.IsNaN(rPw.DlPathLoss))
                {
                    plvString = PointAnalyseResource.POINTANALYSE_INFINITY;
                }
                else
                {
                    plvString = rPw.DlPathLoss.ToString();
                }
                m_PlString = plvString;
                string shadowString = "";
                if (!m_CurrentTran.Active || float.IsInfinity(rPw.Shadowloss))
                {
                    shadowString = PointAnalyseResource.POINTANALYSE_INFINITY;
                }
                else
                {
                    shadowString = rPw.Shadowloss.ToString();
                }

                string temp = "Rx Power";
                m_ReceptionPowerLabel.Text = (m_ResultTypeComboBox.Text == temp ?
                pwString + "dBm (" : plvString + "dB (") +
                    GetPropModelCollection().Find(delegate(IPropagationModel Propmodel)
                    {
                        return Propmodel.PropModelID == modelID;
                    }) + ") D: " + (distance < 1000 ?
                    distance.ToString() + PointAnalyseResource.POINTANALYSE_UNITS_METER : (distance / 1000.0).ToString() + PointAnalyseResource.POINTANALYSE_UNITS_KM);

                m_shadowMagrin.Text = string.Format(PointAnalyseResource.POINTANALYSE_SHADOWING, shadowString);

                //m_ReceptionPowerLabel.Refresh();

                //IACell currentCarrier =  GetHighestPriorityCell(m_CurrentTran);
                //if (currentCarrier == null) 
                //{
                //    return;
                //}
                m_ProfilePainter.FreqInfo = m_CurrentCarrier.FreqBand.DLFrequency;
                m_ProfilePainter.HeightsInfo = heights;

                //如果挂高不包含建筑高度,那么天线高度需要加上建筑高度,Hata模型中的天线高度为天线相对地面的高度
                if (!Huawei.UNet.NE.Interface.AntConfig.IS_ANTENNA_HEIGHT_INCLUDE_BUILDING && GetGdo().IsBuildingLoaded)
                {
                    IGeoInfo geoInfo = GetGdo().GetGeoInfo;
                    m_ProfilePainter.HTxInfo += geoInfo.GetValueByGeoXYPoint(cellPoint, DemDataType.Building, false);
                }

                //m_ProfilePainter.HTxInfo = (m_CurrentTran.AntConfiguration[0]).Height;
                m_ProfilePainter.HTxInfo = Tool.GetMainAnt(m_CurrentTran).Height;
                m_ProfilePainter.HRxInfo = 1.5f;

                short top, bottom;
                top = short.MinValue;
                bottom = short.MaxValue;

                m_ProfilePainter.BorderInfo = new int[] { 0, distance, top, bottom };

                m_ProfilePainter.Draw();
            }
            catch (Exception e)
            {
                WriteLog.Logger.Error("PointAnalysis Calculate Failed", e);
                m_EventViewService.WriteLog("PointAnalysis Calculate Failed", LogLevel.Error);
            }
        }
Ejemplo n.º 5
0
 private IACell FindUlBestServer()
 {
     IACell bestCell = null;
     double rxPower = double.NegativeInfinity;
     foreach (RxPowerAndLinkLossModel model in m_ModelList)
     {
         if (model.RxPower > rxPower)
         {
             bestCell = model.Cell;
             rxPower = model.RxPower;
             m_UlBestModle = model;
         }
     }
     ulDetail.BestCell = bestCell;
     return bestCell;
 }
Ejemplo n.º 6
0
 private void CalcOneModelInterf(ref double totalInterf, RxPowerAndLinkLossModel model)
 {
     double tempInterf = double.NegativeInfinity;
     IACell cell = model.Cell;
     if (cell.ID != m_DlBestCell.ID)
     {
         Signal usefulSignal = InitSingle(m_DlBestCell);
         Signal source = InitSingle(cell);
         source.RxPower = (float)(model.RxPower);
         tempInterf = GetOneCellInf(usefulSignal, source, tempInterf);
         //转成dBm值
         tempInterf = UnitTrans.mwTodBm(tempInterf);
     }
     totalInterf = UnitTrans.AdddBm(tempInterf, totalInterf);
 }
Ejemplo n.º 7
0
 private void CalaIoOrRSCP(IACell bestServer, ref double rscp, ref double Iomw,RxPowerAndLinkLossModel model)
 {
     if (model.Cell.ID != bestServer.ID)
     {
         Iomw += CommonCalc.CalcIo(model.Cell, model.RxPower, m_BestServer);
     }
     else
     {
         rscp = model.RxPower;
     }
 }
Ejemplo n.º 8
0
 private void AddActiveSet(ref int ServiceNum, ref RxPowerAndLinkLossModel model, ref double tempEcIo)
 {
     tempEcIo = model.RxPower - Io;
     bool isMeetThreshold = ((tempEcIo > -14) && (Math.Abs(m_EcIo - tempEcIo) < 3) && ServiceNum < 4);
     if (isMeetThreshold)
     {
         m_ActiveSet.Add((UMTSCell)model.Cell);
         ServiceNum++;
     }
 }
Ejemplo n.º 9
0
 private void JudgeCellAsActiveSite(ref int ServiceNum, RxPowerAndLinkLossModel model)
 {
     double tempEcIo = double.MinValue;
     bool isNeighbouringCell = (IsSameFrequence(m_BestServer, model.Cell) && IsR99TerminalAndService());
     if (model.Cell.ID == m_BestServer.ID)
     {
         m_ActiveSet.Add((UMTSCell)model.Cell);
     }
     else if (isNeighbouringCell)
     {
         AddActiveSet(ref ServiceNum, ref model, ref tempEcIo);
     }
 }