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;
        }
Beispiel #3
0
		/**
		 * 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);
        }
Beispiel #10
0
		/**
		 * 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);
				}
			}

		}
Beispiel #11
0
        public void ReceiveData(TransponderData data)
        {
            //check valid data and drop it if invalid

            PrepareDataForPost(data);
        }
Beispiel #12
0
        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);
 }
Beispiel #18
0
		/**
		 * 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);
			}
				
		}
Beispiel #19
0
		/**
		 * 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);
        }
Beispiel #23
0
        // 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);
            //			}
        }