public void GetPacketClosestTo_returns_packet_closest_to_supplied_packet()
        {
            var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType");
            tLap.AddPacket(new TelemetryPacket{ LapDistance = 0.529f});
            tLap.AddPacket(new TelemetryPacket { LapDistance = 1.875f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 3.221f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 4.567f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 5.931f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 7.262f });  // should be closest to this
            tLap.AddPacket(new TelemetryPacket { LapDistance = 8.611f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 9.961f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 11.311f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 12.661f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 14.013f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 15.365f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 16.715f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 18.067f });
            tLap.AddPacket(new TelemetryPacket { LapDistance = 19.419f });

            var tPacketCompare = new TelemetryPacket { LapDistance = 7.811f };

            var foundPacket = tLap.GetPacketClosestTo(tPacketCompare);

            Assert.AreEqual(7.262f,foundPacket.LapDistance);
        }
        private void LoadLap(TelemetryLap lap,String lapTypeName, Color color)
        {
            GraphPane myPane = zedGraphControl1.GraphPane;
            var fastestLap = lap;
            var packets = fastestLap.Packets;

            double[] x = new double[packets.Count];
            double[] y = new double[packets.Count];

            for (int i = 0; i < packets.Count; i++)
            {
                x[i] = packets[i].GetFieldValue(Xlabel);
                y[i] = packets[i].GetFieldValue(Ylabel);
            }

            // PointPairList holds the data for plotting, X and Y arrays
            PointPairList spl1 = new PointPairList(x, y);

            // Add curves to myPane object
            LineItem myCurve1 = null;
            myCurve1 = myPane.AddCurve(lapTypeName, spl1, color, SymbolType.None);
            myCurve1.Line.Width = 3.0F;

            // Set the Titles
            myPane.Title.Text = Xlabel + " " + Ylabel;
            myPane.XAxis.Title.Text = Xlabel;
            myPane.YAxis.Title.Text = Ylabel;

            // I add all three functions just to be sure it refeshes the plot.
            zedGraphControl1.AxisChange();
            zedGraphControl1.Invalidate();
        }
Example #3
0
 protected void OnRemovedLap(TelemetryLap lap)
 {
     if (RemovedLap != null)
     {
         RemovedLap(this, new LapEventArgs {
             Lap = lap
         });
     }
 }
Example #4
0
 protected void OnStartedLap(TelemetryLap lap)
 {
     if (StartedLap != null)
     {
         StartedLap(this, new LapEventArgs {
             Lap = lap
         });
     }
 }
Example #5
0
 protected void OnReturnedToGarage(TelemetryLap lap)
 {
     if (ReturnedToGarage != null)
     {
         ReturnedToGarage(this, new LapEventArgs {
             Lap = lap
         });
     }
 }
Example #6
0
 protected void OnFinishedOutLap(TelemetryLap lap)
 {
     if (FinishedOutLap != null)
     {
         FinishedOutLap(this, new LapEventArgs {
             Lap = lap
         });
     }
 }
        public void AddPacket_adds_packets()
        {
            var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType");
            var origCount = tLap.Packets.Count();

            tLap.AddPacket(new TelemetryPacket());
            var newCount = tLap.Packets.Count();

            Assert.AreEqual(origCount + 1, newCount);
        }
Example #8
0
        protected void OnSetFastestLap(LapEventArgs e, TelemetryLap oldFastestLap)
        {
            logger.Info(string.Format("Set new Fastest Lap.  (old={0}.  new={1})",
                                      oldFastestLap != null ? oldFastestLap.LapTime.AsTimeString() : "Nothing",
                                      e.Lap.LapTime.AsTimeString()));

            if (SetFastestLap != null)
            {
                SetFastestLap(this, e);
            }
        }
        public void HasStartLinePacket_is_true_when_first_packet_time_is_less_than_one_sixtieth_of_second()
        {
            const float cutoff = (1000 / 60000f) + 0.001f;

            // Samples are taken 60 times per second, so first sample must be < 0.018 into the lap.
            // time differs slightly because last sample of last lap might have been nearly 0.017 before end of that lap.
            var tPacket = new TelemetryPacket() {LapTime = cutoff * 0.95f };
            var tLap = new TelemetryLap(Circuit.NullCircuit, "LapType");
            tLap.AddPacket(tPacket);

            Assert.IsTrue(tLap.IsFirstPacketStartLine);
        }
        public static TelemetryLap CreatePopulatedLap(float lapNumber, bool completeLap)
        {
            var tLap = new TelemetryLap(Circuit.NullCircuit, "Test");
            const float SampleRate = (1000/60000f);

            for (var index = 0; index < lapDistances.Length; index++)
            {
                if (completeLap || index > 0)
                    tLap.AddPacket(new TelemetryPacket { Lap = lapNumber, LapDistance = lapDistances[index], Speed = speeds[index], LapTime=(SampleRate*(index+1) - 0.0001f) });
            }

            return tLap;
        }
        public static TelemetryLap CreateOutLap()
        {
            var tLap = new TelemetryLap(Circuit.NullCircuit, "Test");
            const float SampleRate = (1000 / 60000f);

            for (var index = 0; index < lapDistances.Length; index++)
            {
                if (index > 0)
                    tLap.AddPacket(new TelemetryPacket { Lap = 0f, LapDistance = -((20 - lapDistances[index])/20), Speed = speeds[lapDistances.Length - 1 - index], LapTime = (SampleRate * (index + 1) - 0.0001f) });
            }

            return tLap;
        }
Example #12
0
 public void SetReferenceLap(TelemetryLap referenceLap)
 {
     ReferenceLap = referenceLap;
     if (referenceLap != null)
     {
         logger.Info("Reference lap loaded for " + referenceLap.CircuitName + " '" + referenceLap.LapType + "'");
         ComparisonMode = ComparisonModeEnum.Reference;
     }
     else
     {
         logger.Info("Reference lap cleared");
         ComparisonMode = ComparisonModeEnum.FastestLap;
     }
 }
 protected void OnStartedOutLap(TelemetryLap lap)
 {
     if (StartedOutLap != null)
         StartedOutLap(this, new LapEventArgs { Lap = lap });
 }
        protected void OnSetFastestLap(LapEventArgs e, TelemetryLap oldFastestLap)
        {
            logger.Info(string.Format("Set new Fastest Lap.  (old={0}.  new={1})",
                           oldFastestLap != null ? oldFastestLap.LapTime.AsTimeString() : "Nothing",
                           e.Lap.LapTime.AsTimeString()));

            if (SetFastestLap != null)
                SetFastestLap(this, e);
        }
 protected void OnReturnedToGarage(TelemetryLap lap)
 {
     if (ReturnedToGarage != null)
         ReturnedToGarage(this, new LapEventArgs { Lap = lap });
 }
 protected void OnRemovedLap(TelemetryLap lap)
 {
     if (RemovedLap != null)
         RemovedLap(this, new LapEventArgs { Lap = lap });
 }
 protected void OnFinishedOutLap(TelemetryLap lap)
 {
     if (FinishedOutLap != null)
         FinishedOutLap(this, new LapEventArgs { Lap = lap });
 }
 public void SetReferenceLap(TelemetryLap referenceLap)
 {
     ReferenceLap = referenceLap;
     if (referenceLap != null)
     {
         logger.Info("Reference lap loaded for " + referenceLap.CircuitName + " '" + referenceLap.LapType + "'");
         ComparisonMode = ComparisonModeEnum.Reference;
     }
     else
     {
         logger.Info("Reference lap cleared");
         ComparisonMode = ComparisonModeEnum.FastestLap;
     }
 }
 public void SetFastest(TelemetryLap FastestLap)
 {
     this.FastestLap = FastestLap;
     if (FastestLap != null)
     {
     #if DEBUG
         logger.Info("FastestLap loaded for " + FastestLap.CircuitName + " '" + FastestLap.LapType + "'");
     #endif
         ComparisonMode = ComparisonModeEnum.FastestLap;
     }
     else
     {
     #if DEBUG
         logger.Info("FastestLap cleared");
     #endif
     }
 }