public void TestLinkBudgetsAlongAPath() { var Frequency = 14500000000.0; var Power = 1000.0; var DataRate = 16000000.0; var Bandwidth = 20000000.0; var request = new CommunicationData(); request.OutputUnits = OutputUnit.Decibels; // Transmitter var td = new TransmitterData(); var sd = new SiteData(); sd.Location = new ServiceCartographic(42.0, -105.0, 2000.0); sd.MeanSeaLevel = true; td.Path = sd; td.PathRouteType = RouteTypes.FixedSite; td.Frequency = Frequency; td.Power = Power; td.DataRate = DataRate; request.Transmitter = td; // Interference Sources var jammer1 = new TransmitterData(); var jammer1Path = new SiteData(); jammer1Path.Location = new ServiceCartographic(42.001, -105.0, 1900); jammer1Path.MeanSeaLevel = true; jammer1.Path = jammer1Path; jammer1.PathRouteType = RouteTypes.FixedSite; jammer1.Frequency = Frequency; jammer1.Power = Power; jammer1.DataRate = DataRate; var jammer2 = new TransmitterData(); var jammer2Path = new SiteData(); jammer2Path.Location = new ServiceCartographic(41.997, -105.0, 1900); jammer2Path.MeanSeaLevel = true; jammer2.Path = jammer1Path; jammer2.PathRouteType = RouteTypes.FixedSite; jammer2.Frequency = Frequency; jammer2.Power = Power; jammer2.DataRate = DataRate; request.InterferenceSources = new List <TransmitterData>(); request.InterferenceSources.Add(jammer1); request.InterferenceSources.Add(jammer2); // Receiver var receiver = new ReceiverData(); var receiverPath = new GreatArcRouteData(2); receiverPath.Waypoints[0].Position = new ServiceCartographic(41, -105.0, 2000.0); receiverPath.Waypoints[0].Time = new DateTimeOffset(2016, 02, 23, 4, 44, 0, new TimeSpan(0)); receiverPath.Waypoints[1].Position = new ServiceCartographic(43, -104.0, 2000.0); receiverPath.Waypoints[1].Time = new DateTimeOffset(2016, 02, 23, 5, 44, 0, new TimeSpan(0)); receiverPath.OutputSettings.Step = 900; receiverPath.OutputSettings.TimeFormat = TimeRepresentation.UTC; receiverPath.OutputSettings.CoordinateFormat.Coord = CoordinateRepresentation.LLA; receiverPath.OutputSettings.CoordinateFormat.Frame = FrameRepresentation.Fixed; receiver.Path = receiverPath; receiver.PathRouteType = RouteTypes.GreatArc; receiver.TargetFrequency = Frequency; receiver.Bandwidth = Bandwidth; receiver.AmplifierGain = 100; receiver.NoiseFactor = 2.0; receiver.ReferenceTemperature = 16.85; request.Receiver = receiver; // Other settings request.UseTirem = true; request.TiremSettings.SurfaceHumidity = 10.0; request.TiremSettings.SurfaceRefractivity = 200.0; // dump the request to see the JSON created //File.WriteAllText(@".\CommRequest.json",request.ToString()); var commResult = CommunicationServices.GetLinkBudget(request).Result; Assert.That(commResult != null); Assert.That(commResult.LinkBudgets != null); Assert.That(commResult.LinkBudgets.Count == 5); Assert.AreEqual(0.499, commResult.LinkBudgets[0].BitErrorRate, 1e-3); }
/** * This is triggered as a result of an *incoming* LVC update event triggered by an LVC Game * external to this one. Transmitter update events are currently not handled by this * implementation, and simply ignored. * * @param data data associated with the event * @return true if the event was handled successfully */ public bool UpdateTransmitter( ref TransmitterData data ) { // currently ignored return true; }