/// <summary> /// Processes one frame. Generally should be run once per update loop. /// </summary> public virtual void ProcessFrame() { if (SourceClock == null) { return; } pClock.ProcessFrame(); SourceClock.ProcessFrame(); LastInterpolatedTime = CurrentTime; if (!SourceClock.IsRunning) { return; } CurrentInterpolatedTime += pClock.ElapsedFrameTime * Rate; if (Math.Abs(SourceClock.CurrentTime - CurrentInterpolatedTime) > AllowableErrorMilliseconds) { // -If we've exceeded the allowable error, we should use the source clock's time value. CurrentInterpolatedTime = SourceClock.CurrentTime; } else { // - If we differ from the elapsed time of the source, let's adjust for the difference. CurrentInterpolatedTime += (SourceClock.CurrentTime - CurrentInterpolatedTime) / 8; } }
public void SourceClockShouldBe(IAWG awg, string clockNumber, SourceClock shouldBe) { string clockSource = awg.ClockSource(clockNumber); string possibleErrorString = "Checking the source for clock " + clockNumber; switch (shouldBe) { case SourceClock.Internal: Assert.AreEqual("INT", clockSource, possibleErrorString); break; case SourceClock.External: Assert.AreEqual("EXT", clockSource, possibleErrorString); break; case SourceClock.Fixed: Assert.AreEqual("EFIX", clockSource, possibleErrorString); break; case SourceClock.Variable: Assert.AreEqual("EVAR", clockSource, possibleErrorString); break; } }
// Unkown 01/01/01 /// <summary> /// /// </summary> /// <param name="awg"></param> /// <param name="clockNumber"></param> /// <param name="setValue"></param> public void SetClockSource(IAWG awg, string clockNumber, SourceClock setValue) { var clockSource = "INT"; switch (setValue) { case SourceClock.Internal: clockSource = "INT"; break; case SourceClock.External: clockSource = "EXT"; break; case SourceClock.Fixed: clockSource = "EFIX"; break; case SourceClock.Variable: clockSource = "EVAR"; break; } awg.SetClockSource(clockNumber, clockSource); }