Пример #1
0
        public void MyTestInitialize()
        {
            User lteuser = new User();
            m_User = new SimulationUser();
            m_Carrier = new SimulationCarrier();
            m_Carrier.AdmissionCarrierTag = new AdmissionCellTag();
            m_DlAdmission = new DlAdmissionControl();
            m_ISimulationCarrierList = new List<ISimulationCarrier>();
            

            SimulationCarrier carrier1 = new SimulationCarrier();
            m_ISimulationCarrierList.Add(carrier1);
            carrier1.DlUserList.Add(m_User);
            carrier1.DLHandOverDataUserList.Add(m_User);
            carrier1.DLHandOverVoiceUserList.Add(m_User);
            m_User.LTEUser = lteuser;

            m_GBRUserList = new List<ISimulationUser>();
            m_NonGBRUserList = new List<ISimulationUser>();
            
            SimulationUser user1 = new SimulationUser();
            m_GBRUserList.Add(user1);
            m_NonGBRUserList.Add(user1);
            //m_Carrier.DlVoiceWaitUserList.Add(m_User);

            

        }
Пример #2
0
        //构造使用PS业务的用户
        public static User CreateUser_PS()
        {
            Mobility mobility = new Mobility("mobility", 30);
            int Priority = 1;
            #region 业务参数
            UnionPsService unionPsService = new UnionPsService();
            Dictionary<NetWorkType, Service> PSServiceDic = new Dictionary<NetWorkType, Service>();
            UMTSPsService umtsPsService = new UMTSPsService();
            umtsPsService.UmtsR99Bearer = new UMTSR99Bearer();
            PSServiceDic.Add(NetWorkType.UMTS, umtsPsService);
            unionPsService.PSServiceDic = PSServiceDic;
            #endregion

            #region 终端参数
            Terminal terminal = new Terminal();
            List<NetworkTerminal> NetterminalList = new List<NetworkTerminal>();
            UMTSTerminal tempTerminal = new UMTSTerminal();
            tempTerminal.NoiseFigure = 2;
            tempTerminal.NetType = NetWorkType.UMTS;
            NetterminalList.Add(tempTerminal);
            terminal.NetTerminalList = NetterminalList;
            User user = new User(mobility, unionPsService, terminal, LinkType.Uplink, Priority);
            return user;
            #endregion
        }
Пример #3
0
        public void Init()
        {
            ProjectSingleton.CurrentProject = MockProject.Instance;
            ProjectSingleton.CurrentProject.AppContext.RegisterService(new MockPLCalcDataVstr());
            ProjectSingleton.CurrentProject.AppContext.RegisterService(new MockGeoProvider());
            List<User> m_UserList = new List<User>();

            List<IACell> m_CellList = new List<IACell>();

            Service Ser1 = new UnionPsService();
            Terminal Ter1 = new Terminal();
            User user1 = new User();
            user1.Id = 1;
            user1.X = 100;
            user1.Y = 100;
            user1.Service = Ser1;
            user1.Terminal = Ter1;
            User user2 = new User();
            user2.Id = 2;
            user2.X = 100;
            user2.Y = 100;
            user2.Service = Ser1;
            user2.Terminal = Ter1;
            m_UserList.Add(user1);
            m_UserList.Add(user2);

            IACell cell1;
            IACell cell2;
            InitCell(out cell1, out cell2);
            m_CellList.Add(cell1);
            m_CellList.Add(cell2);
            ICalcGain calcGain = new MockCalcGain();
            m_LinkLossGet = new LinkLossGet(m_UserList, m_CellList, calcGain, ProjectSingleton.CurrentProject.AppContext,75);
            
        }
Пример #4
0
 private List<User> CreateBlankUser(int userNumber, List<GeoXYRect> rects, CellServiceContext ctx)
 {
     List<User> list = new List<User>();
     while (true)
     {
         double num;
         double num2;
         if (userNumber <= 0)
         {
             return list;
         }
         User user = new User();
         ClutterInfo info = new ClutterInfo(-1);
         int num3 = this.m_Random.Next(0, rects.Count);
         this.GenUserXY(user, out num, out num2, rects[num3]);
         GeoXYPoint geoXYPoint = new GeoXYPoint(num, num2);
         if (this.m_CellRectHelper.IsPoiontIsPolyRegion(geoXYPoint))
         {
             user.Clutter = info;
             user.Service = ctx.Service;
             user.LinkType = ctx.LinkType;
             user.Priority = 1;
             list.Add(user);
             if (userNumber == list.Count)
             {
                 return list;
             }
         }
     }
 }
Пример #5
0
 private double CalcAntennaGain(LTECell carrier, User user)
 {
     double num = 0.0;
     num = ((user.X - carrier.Parent.X) == 0.0) ? 90.0 : ((Math.Atan2(user.X - carrier.Parent.X, user.Y - carrier.Parent.Y) / 3.1415926535897931) * 180.0);
     num = ((num - carrier.Parent.AntConfiguration[0].Azimuth) + 360.0) % 360.0;
     num = (num > 180.0) ? (num - 360.0) : num;
     return (18.0 - Math.Min((double) ((12.0 * (num / 70.0)) * (num / 70.0)), (double) 20.0));
 }
Пример #6
0
 public double CalcAntGain(LTECell carrier, User user)
 {
     if (!SimulationConstant.USE_PlatFormAntenna)
     {
         return this.CalcAntennaGain(carrier, user);
     }
     return this.CalcAntGain3D(carrier, user);
 }
Пример #7
0
 public float TryUserAssignLoadStatus(User user)
 {
     UMTSTerminal terminal= (UMTSTerminal)user.Terminal.GetNetWorkTerminal(NetWorkType.UMTS);
     JudgeUserType(user.Service,terminal);
     FindPreAccessCells(m_PreAccessCellList, user);
     CalcVirtualLoad(user, m_CelltobeAssignedList);
     m_RateLoad = FindBestPreAccessCell(m_CelltobeAssignedList);
     return m_RateLoad;
 }
Пример #8
0
 /// <summary>
 /// 构建TD用户
 /// </summary>
 /// <param name="index"></param>
 /// <param name="tfMatrix"></param>
 /// <param name="pg"></param>
 /// <returns></returns>
 public User ConstructUser(int index, TrueFalseMatrix tfMatrix)
 {
     User user = new User();
     user.X = tfMatrix.GetXYPoint(index).X;
     user.Y = tfMatrix.GetXYPoint(index).Y;
     user.Terminal = m_Terminal;
     user.Service = m_Service;
     return user;
 }
Пример #9
0
 public static List<NetWorkType> JudgeUserSupportNetwork(User usr)
 {
     NetWorkType serviceSupNets = GetServiceSupportNets(usr.Service);
     NetWorkType terminalSupNets = GetTerminalSupportNets(usr.Terminal);
     NetWorkType sameSupNets = serviceSupNets & terminalSupNets;
     List<NetWorkType> nets = new List<NetWorkType>();
     //nets.Add(sameSupNets);
     nets = getNets(sameSupNets);
     return nets;
 }
Пример #10
0
 private float CalculateDlEquipmentLoss(LTECell carrier, User user)
 {
     double num = 0.0;
     float lineValue = 0f;
     foreach (AntConfig config in carrier.Parent.AntConfiguration)
     {
         lineValue += (config.Tma != null) ? (config.TxPowerRatio * SimulationTools.ConvertdBToLine(((config.DlJumpLossTmaToBs + config.DlJumpLossTmaToAnt) + config.DlTotalLoss) + config.Tma.DlLoss)) : (config.TxPowerRatio * SimulationTools.ConvertdBToLine((config.DlJumpLossTmaToBs + config.DlJumpLossTmaToAnt) + config.DlTotalLoss));
     }
     num = (((SimulationTools.ConvertLineTodB(lineValue) - this.CalcAntGain(carrier, user)) + SimulationTools.GetLTEServiceBodyLoss(user.Service)) + user.Terminal.NetTerminalList[0].Loss) - user.Terminal.Gain;
     return (float) num;
 }
Пример #11
0
        public void TestServiceException()
        {
            User user = new User();
            Service service = new MockService();
            user.Service = service;
            Terminal terminal = new Terminal();
            terminal.Technology = NetWorkType.UMTS;
            user.Terminal = terminal;

            List<NetWorkType> res = UserAssist.JudgeUserSupportNetwork(user);
           
        }
Пример #12
0
        public void TestPolyMode()
        {
            User  user = new User();
            Service service = new MockService();
            service.Technology = (NetWorkType.GSM | NetWorkType.UMTS);
            Terminal terminal = new Terminal();
            terminal.Technology = (NetWorkType.GSM | NetWorkType.UMTS);
            user.Service = service;
            user.Terminal = terminal;

            List<NetWorkType> res = UserAssist.JudgeUserSupportNetwork(user);
            Assert.AreEqual(2, res.Count);
        }
Пример #13
0
 private float CalculateDlTotalLoss(IACell carrier, User user, LinkLossStruct ulLinkLossStruct, bool isLTECell)
 {
     if (isLTECell)
     {
         LTECell lteCarrier = carrier as LTECell;
         return CalculateDlTotalLoss(lteCarrier, user, ulLinkLossStruct);
     }
     else
     {
         RelayCell relayCarrier = carrier as RelayCell;
         return CalculateDlTotalLoss(relayCarrier, user, ulLinkLossStruct);
     }
 }
Пример #14
0
 private double CalcAntGain3D(LTECell carrier, User user)
 {
     Transceiver parent = carrier.Parent;
     StructAntennaParam calAntennaParam = new StructAntennaParam();
     calAntennaParam.AntConfigSetUp = parent.AntConfiguration[0];
     calAntennaParam.CellX = parent.X;
     calAntennaParam.CellY = parent.Y;
     calAntennaParam.IsSimple = false;
     calAntennaParam.MsX = user.X;
     calAntennaParam.MsY = user.Y;
     calAntennaParam.AntHeight = 0;
     calAntennaParam.MsHeight = 0;
     return (double) this.m_CalculateGain.CalculateAntennaGain(calAntennaParam);
 }
Пример #15
0
 private void GenUserXY(User user)
 {
     while (true)
     {
         double x = this.RandomGen(this.m_Rect.Left, this.m_Rect.Right);
         double y = this.RandomGen(this.m_Rect.Bottom, this.m_Rect.Top);
         GeoXYPoint geoXYPoint = new GeoXYPoint(x, y);
         if (this.m_Poly.IsPointInRegion(geoXYPoint))
         {
             user.X = x;
             user.Y = y;
             return;
         }
     }
 }
Пример #16
0
 public void Excute(List<TDSimCell> bestCellsInCalcRadius,ref TDSimCell bestCell,User user)
 {
     float rscp = 0;
     TDSimCell tempCell = null;
     foreach (TDSimCell cell in bestCellsInCalcRadius)
     {
         float linkLoss = m_Param.CalcLinkLoss.GetLinkLoss(NetWorkType.TDSCDMA,
          cell.Cell.ID, user.Id, LinkType.Downlink);
         float bchAntGain = m_SmartAntGainCalc.CalcSingleAntGain(cell, user);
         if (rscp >= (cell.PccpchPower - linkLoss + bchAntGain) && rscp > m_Param.TdUIParam.RSCPThreshold)
         {
             tempCell = cell;
         }
     }
     bestCell = tempCell;
 }
Пример #17
0
 private void CreateUserCollection(EnvUserContext uc, float indoorRate)
 {
     List<GeoXYPoint> clutterUserPts = uc.ClutterUserPts;
     int index = 0;
     int threshold = (int) ((clutterUserPts.Count * indoorRate) / 100f);
     foreach (GeoXYPoint point in clutterUserPts)
     {
         User user = new User(uc.UsrMobBind.Mobility, uc.SvcUsg.Service, uc.SvcUsg.Terminal, uc.LinkType, uc.UsrMobBind.UserProfile.Priority) {
             X = point.X,
             Y = point.Y,
             UserProfile = uc.UsrMobBind.UserProfile.Name,
             Clutter = uc.ClutterInfo
         };
         this.setUserIndoorProperty(index, threshold, user);
         index++;
         this.m_UserCollection.Add(user);
     }
 }
Пример #18
0
        public static GSMSimUser MockGsmPsSimUser()
        {
            User trafficUser = new User();
            trafficUser.Service = new MockService();
            trafficUser.Service.CommonType = CommonServiceType.PSService;
            GSMSimUser user = new GSMSimUser(trafficUser);

            GSMSimTRX trx1 = MockGsmSimTrx();
            user.BestServer = trx1;
            user.BestServer.NeTRX.TRXType = TRXType.BCCH;

            user.BestServer.CellUsers = new List<GSMSimUser>();

            GSMPsService gsmPsService = new GSMPsService();
            UnionPsService psService = new UnionPsService();
            psService.PSServiceDic.Add(NetWorkType.GSM, gsmPsService);
            user.TrafficUser.Service = psService;

            GSMTerminal gsmTerminal = new GSMTerminal();
            gsmTerminal.NetType = NetWorkType.GSM;
            Terminal terminal = new Terminal();
            terminal.Technology = NetWorkType.GSM;
            terminal.NetTerminalList.Add(gsmTerminal);
            user.TrafficUser.Terminal = terminal;


            Site site = MockSite();
            Transceiver tran = new Transceiver();
            user.BestServer.Parent = tran;
            user.BestServer.Parent.Parent = site;

            //Dictionary<GSMTimeSlot, float> dlInterf = new Dictionary<GSMTimeSlot, float>();     
            //Dictionary<GSMTimeSlot, float> dlcirs = new Dictionary<GSMTimeSlot, float>();
            ////Dictionary<GSMTimeSlot, float> preUlTxPower = new Dictionary<GSMTimeSlot, float>();
            //for (int i = 0; i < 8; i++)
            //{
            //    dlcirs.Add(TSes[i], 15 + i * 2);              
            //}
            //user.DlCirs = dlcirs;
            //user.PreULTxPower = preUlTxPower;


            return user;
        }
Пример #19
0
        public void MyTestInitialize()
        {
            m_SimUser1=MockTDSimUser.CreatTDSimUser_CSDL();
            m_SimUser2 = MockTDSimUser.CreatTDSimUser_CSUL();
            m_IntefUser = MockTDSimUser.CreatTDSimUser_PSDL();
            m_Param = new TDCalcCommonParam();
            m_Param.SmartAntGain = new MockSmartAntCalcGain();
            m_Cell = MockTDSimCell.CreatTDSimCell();
            m_User = MockTDSimUser.CreatUser_CSDL();
            m_SmartAntGain = new SmartAntGain(m_Param.SmartAntGain);

            //LinkLossAssist.Init();
            //m_TDCalcCommonParam = new TDCalcCommonParam();
            //m_TDCalcCommonParam.SmartAntGain = new MockSmartAntCalcGain();
            //m_TDSimUser = MockTDSimUser.CreatTDSimUser_CS();
            //m_IntefUser = MockTDSimUser.CreatTDSimUser_PS();
            //m_TDSimCell = MockTDSimCell.CreatTDSimCell();
            //m_SmartAntGain = new SmartAntGain(m_TDCalcCommonParam.SmartAntGain);
        }
Пример #20
0
 //构造使用PS业务的用户
 public static User CreatUser_PS()
 {
     Mobility mobility = new Mobility("mobility", 30);
     //构造业务参数
     UnionPsService unionPsService = new UnionPsService();
     Dictionary<NetWorkType, Service> PSServiceDic = new Dictionary<NetWorkType, Service>();
     TDPsService tdPsService = new TDPsService();
     tdPsService.TDR99Bearer = new TDR99Bearer();
     PSServiceDic.Add(NetWorkType.TDSCDMA, tdPsService);
     unionPsService.PSServiceDic = PSServiceDic;
     //构造终端参数
     Terminal terminal = new Terminal();
     List<NetworkTerminal> terminalList = new List<NetworkTerminal>();
     TDTerminal tempTerminal = new TDTerminal();
     tempTerminal.NoiseFigure = 2;
     tempTerminal.NetType = NetWorkType.TDSCDMA;
     tempTerminal.MinTxPower = 24;
     tempTerminal.MaxTxPower = 36;
     terminalList.Add(tempTerminal);
     terminal.NetTerminalList = terminalList;
     User user = new User(mobility, unionPsService, terminal, LinkType.Uplink, 1);
     user.Id = 1;
     return user;
 }
Пример #21
0
        private ILoadStatus Load(List<NetWorkType> nets, User user, out NetWorkType choiceNet)
        {
            ILoadStatus loadQuery = null;
            //ILoadStatus temploadQuery = null;
            choiceNet = 0;
            float afterUseAddLoad = float.MaxValue;
            float tempLoad = float.MinValue;
            //从下面的判断挪出来的
            ExcludeLTE(nets);
            foreach (NetWorkType net in nets)
            {
                //if (net == NetWorkType.LTE)
                //{
                //    continue;
                //}

                ILoadStatus temploadQuery = m_Load[net];
                tempLoad = temploadQuery.TryUserAssignLoadStatus(user);
                //load的定义:用请求速率除以频带宽度
                FindMinLoad(ref choiceNet, ref loadQuery, ref afterUseAddLoad, tempLoad, net, temploadQuery);
                //SaveFile(0, tempLoad, net);
            }
            //SaveFile(1, afterUseAddLoad, choiceNet);
            return loadQuery;
        }
Пример #22
0
 private void AddUser(NetWorkType net, User user)
 {
     m_Load[net].TryUserAssignLoadStatus(user);
     m_PreAccessUserDic[net].Add(user);
     m_Load[net].Update();
 }
Пример #23
0
        private void AddDownLinkUser(User user)
        {
            if ((user.Service as UnionPsService).DlAveThroughputDemand < m_WideBandDemand)
            {
                AddUser(m_NarrowBandNet, user);
            }
            else
            {
                AddUser(m_WideBandNet, user);

            }
        }
Пример #24
0
        private void AssignPSUsers(User user)
        {
            if (user.LinkType == LinkType.Downlink)
            {
                AddDownLinkUser(user);
            }
            else
            {
                AddUpLinkUser(user);

            }

        }
Пример #25
0
 private void AssignCsPsUsers(User user)
 {
     if (user.Service.CommonType == CommonServiceType.CSService)
     {
         m_Load[m_VoiceNet].TryUserAssignLoadStatus(user);
         m_PreAccessUserDic[m_VoiceNet].Add(user);
         m_Load[m_VoiceNet].Update();
     }
     else
     {
         AssignPSUsers(user);
     }
 }
Пример #26
0
 private void AddUserToPreDic(User user, List<NetWorkType> supportNets)
 {
     if (m_PreAccessUserDic.ContainsKey(supportNets[0]))
     {
         m_PreAccessUserDic[supportNets[0]].Add(user);
     }
 }
Пример #27
0
 private List<NetWorkType> AssignUsers(List<NetWorkType> netTypes, User user)
 {
     netTypes = UserAssist.JudgeUserSupportNetwork(user);
     //找出多模用户
     if (netTypes.Count > 1)
     {
         m_PolyModeUsers.Add(user);
     }
     else if (netTypes.Count == 1)//找出单模用户
     {
         m_SingleModeUsers.Add(user);
     }
     return netTypes;
 }
Пример #28
0
        ///// <summary>
        ///// backhaul链路上下行损耗 未完成
        ///// </summary>
        ///// <param name="cell"></param>
        ///// <param name="user"></param>
        ///// <returns></returns>
        //private LinkLossStruct[] GetBackhaulUlAndDlLinkLoss(Transceiver cell, User relayUser)
        //{
        //    LinkLossStruct[] structArray = new LinkLossStruct[2];
        //    this.m_StructAntennaParam.MsX = relayUser.X;
        //    this.m_StructAntennaParam.MsY = relayUser.Y;
        //    this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(relayUser.X, relayUser.Y, DemDataType.Height);
        //    float[][] numArray = this.m_iplCalDataVstr.GetPointBackhaulPathLoss(cell, relayUser.X, relayUser.Y);
        //    float penetrationLoss = 0f;
        //    if ((user.Clutter != null) && user.IsIndoor)
        //    {
        //        short buildHeight = 0;
        //        buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
        //        penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
        //    }


        //    //int key = tranceiver.ID;
        //    //float loss = 0f;
        //    //if (!m_TranceiverClutterloss.TryGetValue(key, out loss))
        //    //{
        //    //    ClutterParamsResult clutterParam = ConfingClutter(tranceiver);

        //    //    loss += GetShadowloss(clutterParam.ShadowStd, isShadow, coverageProb);
        //    //    loss += GetIndoorloss(isIndoorCov, clutterParam);

        //    //    m_TranceiverClutterloss.Add(key, loss);
        //    //}
        //    //return loss;


        //    ////relay一侧设备损耗
        //    //relayUser.Terminal.Reception;
        //    //BtsEquipment btsEquipment = relayCell.ParentRN.Equipment;
        //    //List<AntConfig> antConfigs = new List<AntConfig>();
        //    //antConfigs.Add(relayCell.CellToUEAnt);
        //    double noiseFigureOfBts = 0;// Transceiver.CalculateNoiseFigureOfBts(antConfigs, (double)btsEquipment.NoiseFigure);
        //    float num7 = (float)noiseFigureOfBts + penetrationLoss;
        //    structArray[0].pathLoss = numArray[0][0];
        //    structArray[0].otherTotalLoss = num7;
        //    structArray[1].pathLoss = numArray[0][1];
        //    structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
        //    return structArray;
        //}

        /// <summary>
        /// access链路上下行损耗
        /// </summary>
        /// <param name="cell"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private LinkLossStruct[] GetAccessUlAndDlLinkLoss(RelayCell cell, User user)
        {
            LinkLossStruct[] structArray = new LinkLossStruct[2];
            this.m_StructAntennaParam.MsX = user.X;
            this.m_StructAntennaParam.MsY = user.Y;
            this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Height);
            float[][] numArray = m_iGetRelayUEPathLoss.GetRelayUEPointPathLoss(cell, user.X, user.Y);
            float penetrationLoss = 0f;
            if ((user.Clutter != null) && user.IsIndoor)
            {
                short buildHeight = 0;
                buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
                penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
            }
            float bodyLoss = (user.Service as UnionPsService).BodyLoss;
            float loss = user.Terminal.NetTerminalList[0].Loss;
            float attenuation = user.Terminal.Attenuation;
            float gain = user.Terminal.Gain;
            float num7 = (((bodyLoss + loss) + attenuation) - user.Terminal.Gain) + penetrationLoss;
            structArray[0].pathLoss = numArray[0][0];
            structArray[0].otherTotalLoss = num7;
            structArray[1].pathLoss = numArray[0][1];
            structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
            return structArray;
        }
Пример #29
0
 private LinkLossStruct[] GetMultUlAndDlLinkLoss(Transceiver cell, User user)
 {
     LinkLossStruct[] structArray = new LinkLossStruct[2];
     LinkLossStruct[] structArray2 = new LinkLossStruct[2];
     LinkLossStruct[] structArray3 = new LinkLossStruct[2];
     this.m_StructAntennaParam.MsX = user.X;
     this.m_StructAntennaParam.MsY = user.Y;
     this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Height);
     float penetrationLoss = 0f;
     if ((user.Clutter != null) && user.IsIndoor)
     {
         short buildHeight = 0;
         buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
         penetrationLoss = (float) this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
     }
     for (int i = 0; i < cell.AntConfiguration.Count; i++)
     {
         AntConfig config = cell.AntConfiguration[i];
         float[][] numArray = this.m_iplCalDataVstr.GetPointPathLoss(cell, config.AntennaID, user.X, user.Y);
         this.m_StructAntennaParam.AntConfigSetUp = config;
         float bodyLoss = (user.Service as UnionPsService).BodyLoss;
         float loss = user.Terminal.NetTerminalList[0].Loss;
         float attenuation = user.Terminal.Attenuation;
         float gain = user.Terminal.Gain;
         float num8 = (((bodyLoss + loss) + attenuation) - user.Terminal.Gain) + penetrationLoss;
         structArray[0].pathLoss = numArray[0][0];
         structArray[0].otherTotalLoss = num8;
         structArray[1].pathLoss = numArray[0][1];
         structArray[1].otherTotalLoss = num8 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
         structArray2[0].pathLoss += 1f / ((float) UnitTrans.dBto((double) (structArray[0].pathLoss + structArray[0].otherTotalLoss)));
         structArray2[1].pathLoss += cell.AntConfiguration[i].TxPowerRatio / ((float) UnitTrans.dBto((double) (structArray[1].pathLoss + structArray[1].otherTotalLoss)));
     }
     structArray3[0].pathLoss = -1f * ((float) UnitTrans.todB((double) structArray2[0].pathLoss));
     structArray3[0].otherTotalLoss = 0f;
     structArray3[1].pathLoss = -1f * ((float) UnitTrans.todB((double) structArray2[1].pathLoss));
     structArray3[1].otherTotalLoss = 0f;
     return structArray3;
 }
Пример #30
0
 public bool IsUp(User user)
 {
     return (user.LinkType == LinkType.Uplink);
 }