public void DataReceived(object o, RawTransponderDataEventArgs args) { //Add or update tracks foreach (var track in args.TransponderData) { TrackOperations.AddOrUpdate(track); } //Check if tracks are in airspace foreach (var track in TrackOperations.GetAll()) { track.WithinAirspace = Airspace.CalculateWithinAirspace(track.Position); } //Check for Separations if (TrackOperations.GetAll().Count > 1) { SeparationOperations.CheckForSeparations(TrackOperations.GetAll().ToList()); } //Check for outdated separations UpdateOldSeparations(); //Display everything OutputTerminal(); }
public void OutputTerminal() { Display.Clear(); if (SeparationRepository.GetAll().Count != 0) { Display.WriteRed("Separation Event(s):"); foreach (var sep in SeparationRepository.GetAll()) { Display.WriteRed(sep.Tag1 + "/" + sep.Tag2 + " Time: " + sep.Time); } } if (TrackOperations.GetAll().Count != 0) { Display.Write("Tracks:"); foreach (var track in TrackOperations.GetAll()) { if (track.WithinAirspace) { Display.Write("Tag: " + track.Tag + " CurrentPosition: " + track.Position.X + "mE," + track.Position.Y + "mN Altitude: " + track.Position.Altitude + "m Velocity: " + Math.Round(track.Velocity, 2) + "m/s Course: " + Math.Round(track.Course, 2) + "°"); } } } }
public void UpdateOldSeparations() { // Find all separations var separationEvents = SeparationRepository.GetAll(); // Find all tracks var tracks = TrackOperations.GetAll().ToList(); // Find all tracks still on separationlist var possiblyOutdatedSeparations = separationEvents .Select(separations => tracks.FirstOrDefault(t => t.Tag == separations.Tag1)).ToList(); // Find all tracks that shouldnt be on separationlist var outdatedSeparations = SeparationOperations.CheckForOutdatedSeparationEvents(possiblyOutdatedSeparations); // Now delete all of these foreach (string sep in outdatedSeparations) { var split = sep.Split(';'); var separationToRemove = SeparationRepository.Get(split[0], split[1]); if (separationToRemove != null) { SeparationRepository.DeleteSeperationEvent(separationToRemove); } } }