public void OnPostDataEventTest() { //Test to make sure the data processor recieved the data, converted the data to a coordinate, //created an entry if needed in the intruder list, and then added the coordinate to the //intruders data buffer. IDataProcessor dataProcessor = new DataProcessor (); TransponderData data1 = new TransponderData ("00:00", "1A23", 1, 0, 0, "1200"); TransponderData data2 = new TransponderData ("00:00", "1B35", 2, 0, 0, "1200"); TransponderData data3 = new TransponderData ("00:00", "9C23", 3, 0, 0, "1200"); TransponderData data4 = new TransponderData ("00:00", "1A23", 2, 0, 0, "1200"); dataProcessor.OnPostDataEvent (data1); Assert.AreEqual (1, dataProcessor.Intruders [0].DataBuffer [0] [0]); dataProcessor.OnPostDataEvent (data2); Assert.AreEqual (2, dataProcessor.Intruders [1].DataBuffer [0] [0]); dataProcessor.OnPostDataEvent (data3); Assert.AreEqual (3, dataProcessor.Intruders [2].DataBuffer [0] [0]); //Added a second transponder data to the first intruder dataProcessor.OnPostDataEvent (data4); Assert.AreEqual (2, dataProcessor.Intruders [0].DataBuffer [1] [0]); }
/** * Given the name of the directory * Build a list of TransponderData from the test files in that directory */ public List<TransponderData> buildTransporterDataList(String testDirName) { var files = streamReaders (testDirName); var dataList = new List<TransponderData> (); String line = ""; int count = 1; while (files.Any()) { for (int i = 0; i < files.Count; i++) { if ((line = (files [i]).ReadLine ()) == null) { files.Remove (files [i]); } else if (line.StartsWith ("#") || line.Equals ("")) { printComment (line); i--; } else { count++; //Console.WriteLine (line + " " + count / 2); // prints line + the line number, ignores lines with #'s string[] splitData = line.Split (','); if (splitData.Length == 6) { TransponderData tData = new TransponderData (splitData [0], splitData [1], double.Parse (splitData [2]), double.Parse (splitData [3]), double.Parse (splitData [4]), splitData [5]); dataList.Add (tData); } } } } return dataList; }
/** * Add a new intruder to the list */ private void AddNewIntruder(TransponderData data) { if(WithinRadarRange(data)){ Aircraft newIntruder = new Aircraft (data.Icao); Intruders.Add (newIntruder); UpdateAircraftFromData (data, newIntruder); } }
public void TransponderData() { TransponderData td = new TransponderData ("14:00:00Z.000 T", "12345F", 100.5, -15.9, 6000, "GW400"); //TODO: need to figure out date stuff Assert.AreEqual ("12345F", td.Icao); Assert.AreEqual (100.5, td.Latitude); Assert.AreEqual (-15.9, td.Longitude); Assert.AreEqual (6000, td.Altitude); Assert.AreEqual ("GW400", td.SquawkCode); }
public void transponderData2String() { TransponderData td = new TransponderData ("14:00:00Z.253 T", "12345F", -7200000, -1000005.3333, 6000, "GW400"); String tdString = td.ToString (); Console.WriteLine ("tdata to string --" + tdString); Assert.True (tdString.Contains("ICAO:12345F")); Assert.True (tdString.Contains("Latitude:-7200000")); Assert.True (tdString.Contains("Longitude:-1000005.3333")); Assert.True (tdString.Contains("Altitude:6000")); }
public void testBadDataCantParse() { TransponderData td = new TransponderData ("10:00Z.253 T", "12345F", 100.5, -15.9, 6000, "GW400"); Assert.IsNull (td.PingTimestamp); Assert.AreEqual ("12345F", td.Icao); Assert.AreEqual (100.5, td.Latitude); Assert.AreEqual (-15.9, td.Longitude); Assert.AreEqual (6000, td.Altitude); Assert.AreEqual ("GW400", td.SquawkCode); }
public void testOutOfRangeLong() { TransponderData td = new TransponderData ("14:00:00Z.253 T", "12345F", -7200000, -1000005.3333, 6000, "GW400"); DateTime time = DateTime.Parse("14:00:00.253"); Console.WriteLine (time.Millisecond); Assert.AreEqual (time, td.PingTimestamp); Assert.AreEqual ("12345F", td.Icao); Assert.AreEqual (-7200000, td.Latitude); Assert.AreEqual (-1000005.3333, td.Longitude); Assert.AreEqual (6000, td.Altitude); Assert.AreEqual ("GW400", td.SquawkCode); }
public void testBadDataCantParse() { TransponderData td = new TransponderData ("10:00Z.253 T", "12345F", 100.5, -15.9, 6000, "GW400"); DateTime time = DateTime.Parse("14:00:00.253"); Console.WriteLine (time.Millisecond); Assert.AreEqual (time, td.PingTimestamp); Assert.AreEqual ("12345F", td.Icao); Assert.AreEqual (100.5, td.Latitude); Assert.AreEqual (-15.9, td.Longitude); Assert.AreEqual (6000, td.Altitude); Assert.AreEqual ("GW400", td.SquawkCode); }
public void OnPostDataEventTest2() { //Test to make sure the data processor recieved the data, converted the data to a coordinate, //created an entry if needed in the intruder list, and then added the coordinate to the //intruders data buffer. IDataProcessor dataProcessor = new DataProcessor (); IAudioHandler audioHandler = new AudioHandler (); IRadarHandler radarHandler = new RadarHandler (); dataProcessor.AircraftDidEnterRadarRangeEvent += radarHandler.AircraftDidEnterRadarRangeEvent; dataProcessor.AircraftWillIntersectInTimeEvent += audioHandler.OnAircraftWillIntersectInTimeEvent; TransponderData thisAircraftData1 = new TransponderData ("00:00", "B1E24F", 90, 0, 8247.7, "1200"); TransponderData thisAircraftData2 = new TransponderData ("00:00", "B1E24F", 89.9986, 0, 8247.8, "1200"); TransponderData thisAircraftData3 = new TransponderData ("00:00", "B1E24F", 89.98212, 0, 8248, "1200"); TransponderData thisAircraftData4 = new TransponderData ("00:00", "B1E24F", 89.97318, 0, 8248.4, "1200"); TransponderData thisAircraftData5 = new TransponderData ("00:00", "B1E24F", 89.96423, 0, 8248.9, "1200"); TransponderData intruderData1 = new TransponderData ("00:00", "1A23", 89.92847, 0, 8252.7, "1200"); TransponderData intruderData2 = new TransponderData ("00:00", "1A23", 89.93741, 0, 8251.5, "1200"); TransponderData intruderData3 = new TransponderData ("00:00", "1A23", 89.94635, 0, 8250.5, "1200"); TransponderData intruderData4 = new TransponderData ("00:00", "1A23", 89.95529, 0, 8249.6, "1200"); TransponderData intruderData5 = new TransponderData ("00:00", "1A23", 89.96423, 0, 8248.9, "1200"); dataProcessor.ThisAircraft.DataBuffer.Add(Vector<double>.Build.DenseOfArray(new double[3]{0, 0, 6365})); var list1 = new List<TransponderData> (); var list2 = new List<TransponderData> (); var list3 = new List<TransponderData> (); var list4 = new List<TransponderData> (); var list5 = new List<TransponderData> (); list1.Add (thisAircraftData1); list1.Add (intruderData1); list2.Add (thisAircraftData2); list2.Add (intruderData2); list3.Add (thisAircraftData3); list3.Add (intruderData3); list4.Add (thisAircraftData4); list4.Add (intruderData4); list5.Add (thisAircraftData5); list5.Add (intruderData5); dataProcessor.OnPostDataEvent (list1); dataProcessor.OnPostDataEvent (list2); dataProcessor.OnPostDataEvent (list3); dataProcessor.OnPostDataEvent (list4); dataProcessor.OnPostDataEvent (list5); }
/** * Update given aircraft with latest transponder data */ private void Update(TransponderData tdata){ if (tdata.Icao == ThisAircraft.Identifier) { UpdateAircraftFromData(tdata, ThisAircraft); } else { bool found = false; foreach (var intruder in Intruders) { if (intruder.Identifier == tdata.Icao) { UpdateAircraftFromData (tdata, intruder); found = true; } } if (!found) { AddNewIntruder (tdata); } } }
public void ReceiveData(TransponderData data) { //check valid data and drop it if invalid PrepareDataForPost(data); }
public void PrepareDataForPost(TransponderData data) { //Do some stuff PostDataEvent(data); //Call event, anything attached to this event delegate will be executed. }
//calls update aircraft //to be decided public void OnPostDataEvent(TransponderData data) { //case statement to update ourselves or another aircraft //UpdateAircraftFromData (data); throw new NotImplementedException(); }
// convert to cordinates // look for air craft and list and update if in list, else create new public void UpdateAircraftFromData(TransponderData data) { //DetermineProximityOfEachIntruder(aircraft) throw new NotImplementedException(); }
public void GotSendDataEvent(TransponderData td) { this.broadedCastedData = true; }
//Sends event with transponder data this is the one the //transponder receiver is listening to void BroadcastDataEvent(TransponderData data) { SendDataEvent (data); }
//Sends event with transponder data this is the one the //transponder receiver is listening to void BroadcastDataEvent(TransponderData data) { SendDataEvent(data); }
/** * Update Aircrafts with newest data */ private void UpdateAircraftFromData (TransponderData data, Aircraft aircraft) { // convert tdata to cordinates var coordinate = MathUtility.CalculateCoordinate (data.Latitude, data.Longitude, data.Altitude); aircraft.DataBuffer.Insert (0, coordinate); //calc velocity if (aircraft.DataBuffer.Count > 1) { aircraft.Velocity = MathUtility.CalculateVector (aircraft.DataBuffer [1], aircraft.DataBuffer [0]); } //remove the last data entry (clean up old data) if (aircraft.DataBuffer.Count > 20) { aircraft.DataBuffer.RemoveAt (aircraft.DataBuffer.Count - 1); } }
/** * Determine if given Transponder data is within radar range * * return true if it is, else false. */ private bool WithinRadarRange(TransponderData data){ if (ThisAircraft.DataBuffer.Count > 0) { var intruderCoordinate = MathUtility.CalculateCoordinate (data.Latitude, data.Longitude, data.Altitude); var distance = MathUtility.Distance (intruderCoordinate, ThisAircraft.DataBuffer [0]); //if distance is less than 6.1 NM return true if (distance < RADAR_RANGE_NM) { return true; } } return false; }
/** * create a transponder data object * or null if it cannot be parsed */ private TransponderData createTransponderDataObj(String [] splitData) { try{ TransponderData tData = new TransponderData (splitData [0], splitData [1], double.Parse (splitData [2]), double.Parse (splitData [3]), double.Parse (splitData [4]), splitData [5]); return tData; } catch (Exception e) { Trace.WriteLine ("ERROR: could not parse numbers to doubles"); return null; } }
public void PrepareDataForPost(TransponderData data) { //Do some stuff PostDataEvent (data); //Call event, anything attached to this event delegate will be executed. }
public void ReceiveData(TransponderData data) { //check valid data and drop it if invalid PrepareDataForPost (data); }
// convert to cordinates // look for air craft and list and update if in list, else create new private void UpdateAircraftFromData(TransponderData data, Aircraft aircraft) { var coordinate = MathUtility.CalculateCoordinate (data.Latitude, data.Longitude, data.Altitude); aircraft.DataBuffer.Insert (0, coordinate); if (aircraft.DataBuffer.Count > 1) { aircraft.Velocity = MathUtility.CalculateVector (aircraft.DataBuffer [1], aircraft.DataBuffer [0]); } //remove the last data entry if (aircraft.DataBuffer.Count > 20) { aircraft.DataBuffer.RemoveAt (aircraft.DataBuffer.Count - 1); } // if (aircraft != ThisAircraft && aircraft.Velocity != null) { // Console.WriteLine("our aircraft: " + ThisAircraft ); // Console.WriteLine("intruder aircraft" + aircraft); // DetermineProximityOfIntruder (aircraft); // } }