コード例 #1
0
 public static void MockUrbanTypeAndKValues(this Mock<IBroadcastModel> model, UrbanType utype)
 {
     model.SetupGet(x => x.UrbanType).Returns(utype);
     switch (utype)
     {
         case UrbanType.Middle:
         case UrbanType.Large:
             model.SetupGet(x => x.K1).Returns(69.55);
             model.SetupGet(x => x.K4).Returns(44.9);
             break;
         default:
             model.SetupGet(x => x.K1).Returns(85.83);
             model.SetupGet(x => x.K4).Returns(60);
             break;
     }
 }
コード例 #2
0
 private void TestDifferentFrequenciesWithUrbanType(UrbanType utype, double distance)
 {
     model = new BroadcastModel(utype: utype);
     double d1 = model.CalculatePathLoss(distance, 40);
     model = new BroadcastModel(FrequencyBandType.Uplink2100, utype);
     double d2 = model.CalculatePathLoss(distance, 40);
     model = new BroadcastModel(FrequencyBandType.Downlink1800, utype);
     double d3 = model.CalculatePathLoss(distance, 40);
     model = new BroadcastModel(FrequencyBandType.Uplink1800, utype);
     double d4 = model.CalculatePathLoss(distance, 40);
     model = new BroadcastModel(FrequencyBandType.Tdd2600, utype);
     double d5 = model.CalculatePathLoss(distance, 40);
     Assert.IsTrue(d5 > d1);
     Assert.IsTrue(d1 > d2);
     Assert.IsTrue(d2 > d3);
     Assert.IsTrue(d3 > d4);
 }
コード例 #3
0
ファイル: LinkBudget.cs プロジェクト: dongdong-2009/LteTools
        public void SetKvalue(UrbanType utype)
        {
            _urbanType = utype;
            switch (utype)
            {
            case UrbanType.Middle:
            case UrbanType.Large:
                K1 = 69.55;
                K4 = 44.9;
                break;

            default:
                K1 = 85.83;
                K4 = 60;
                break;
            }
        }
コード例 #4
0
        private void TestDifferentFrequenciesWithUrbanType(UrbanType utype, double distance)
        {
            model = new BroadcastModel(utype: utype);
            double d1 = model.CalculatePathLoss(distance, 40);

            model = new BroadcastModel(FrequencyBandType.Uplink2100, utype);
            double d2 = model.CalculatePathLoss(distance, 40);

            model = new BroadcastModel(FrequencyBandType.Downlink1800, utype);
            double d3 = model.CalculatePathLoss(distance, 40);

            model = new BroadcastModel(FrequencyBandType.Uplink1800, utype);
            double d4 = model.CalculatePathLoss(distance, 40);

            model = new BroadcastModel(FrequencyBandType.Tdd2600, utype);
            double d5 = model.CalculatePathLoss(distance, 40);

            Assert.IsTrue(d5 > d1);
            Assert.IsTrue(d1 > d2);
            Assert.IsTrue(d2 > d3);
            Assert.IsTrue(d3 > d4);
        }
コード例 #5
0
        private void TestDifferentFrequenciesWithUrbanType(UrbanType utype, double distance)
        {
            model.MockUrbanTypeAndKValues(utype);
            model.MockFrequencyType(FrequencyBandType.Downlink2100);
            double d1 = model.Object.CalculatePathLoss(distance, 40);

            model.MockFrequencyType(FrequencyBandType.Uplink2100);
            double d2 = model.Object.CalculatePathLoss(distance, 40);

            model.MockFrequencyType(FrequencyBandType.Downlink1800);
            double d3 = model.Object.CalculatePathLoss(distance, 40);

            model.MockFrequencyType(FrequencyBandType.Uplink1800);
            double d4 = model.Object.CalculatePathLoss(distance, 40);

            model.MockFrequencyType(FrequencyBandType.Tdd2600);
            double d5 = model.Object.CalculatePathLoss(distance, 40);

            Assert.IsTrue(d5 > d1);
            Assert.IsTrue(d1 > d2);
            Assert.IsTrue(d2 > d3);
            Assert.IsTrue(d3 > d4);
        }
コード例 #6
0
 private void AssertTest(UrbanType type, double frequnecy, double height)
 {
     model.MockUrbanTypeAndKValues(type);
     model.SetupGet(x => x.Frequency).Returns(frequnecy);
     TestDifferentDistancesWithBsHeight(height);
 }
コード例 #7
0
        public static void MockUrbanTypeAndKValues(this Mock <IBroadcastModel> model, UrbanType utype)
        {
            model.SetupGet(x => x.UrbanType).Returns(utype);
            switch (utype)
            {
            case UrbanType.Middle:
            case UrbanType.Large:
                model.SetupGet(x => x.K1).Returns(69.55);
                model.SetupGet(x => x.K4).Returns(44.9);
                break;

            default:
                model.SetupGet(x => x.K1).Returns(85.83);
                model.SetupGet(x => x.K4).Returns(60);
                break;
            }
        }
コード例 #8
0
 private void AssertTest(UrbanType type, double frequnecy, double height)
 {
     model.MockUrbanTypeAndKValues(type);
     model.SetupGet(x => x.Frequency).Returns(frequnecy);
     TestDifferentDistancesWithBsHeight(height);
 }
コード例 #9
0
ファイル: LinkBudget.cs プロジェクト: dongdong-2009/LteTools
 public LinkBudget(IOutdoorCell cell, UrbanType utype = UrbanType.Large)
     : this(new BroadcastModel(cell.Frequency, utype), cell.RsPower, cell.AntennaGain)
 {
 }
コード例 #10
0
ファイル: LinkBudget.cs プロジェクト: dongdong-2009/LteTools
        private static double CalculateModifiedFactor(this IBroadcastModel model, double mobileHeight, UrbanType urbanType)
        {
            switch (urbanType)
            {
            case UrbanType.Middle:
                return((1.1 * Math.Log10(model.Frequency) - 0.7) * mobileHeight - 1.56 * Math.Log10(model.Frequency) + 0.8);

            case UrbanType.Large:
                return(8.29 * Math.Log10(1.54 * model.Frequency) * Math.Log10(1.54 * model.Frequency) - 1.1);

            default:
                return(3.2 * Math.Log10(11.75 * model.Frequency) * Math.Log10(11.75 * model.Frequency) - 4.97);
            }
        }
コード例 #11
0
ファイル: LinkBudget.cs プロジェクト: dongdong-2009/LteTools
 public BroadcastModel(int fcn, UrbanType utype = UrbanType.Large)
 {
     SetEarfcn(fcn);
     _urbanType = utype;
     SetKvalue(utype);
 }
コード例 #12
0
ファイル: LinkBudget.cs プロジェクト: dongdong-2009/LteTools
 public BroadcastModel(FrequencyBandType ftype = FrequencyBandType.Downlink2100, UrbanType utype = UrbanType.Large)
 {
     SetFrequencyBand(ftype);
     _urbanType = utype;
     SetKvalue(utype);
 }
コード例 #13
0
 private void TestDifferentFrequenciesWithUrbanType(UrbanType utype, double distance)
 {
     model.MockUrbanTypeAndKValues(utype);
     model.MockFrequencyType(FrequencyBandType.Downlink2100);
     double d1 = model.Object.CalculatePathLoss(distance, 40);
     model.MockFrequencyType(FrequencyBandType.Uplink2100);
     double d2 = model.Object.CalculatePathLoss(distance, 40);
     model.MockFrequencyType(FrequencyBandType.Downlink1800);
     double d3 = model.Object.CalculatePathLoss(distance, 40);
     model.MockFrequencyType(FrequencyBandType.Uplink1800);
     double d4 = model.Object.CalculatePathLoss(distance, 40);
     model.MockFrequencyType(FrequencyBandType.Tdd2600);
     double d5 = model.Object.CalculatePathLoss(distance, 40);
     Assert.IsTrue(d5 > d1);
     Assert.IsTrue(d1 > d2);
     Assert.IsTrue(d2 > d3);
     Assert.IsTrue(d3 > d4);
 }