/// /// Copyright (c) 2017 Sensus Metering Systems /// using System.Collections.Generic; using log4net; using Config.Entities; using TBF.UiBridge; namespace TBF.BenchControl.TestMethods.LiveStream { public class LiveStreamSeq : Sequences.SequenceBase { private static readonly ILog log = LogManager.GetLogger(typeof(LiveStreamSeq)); public IList Execute(Test test, bool hiResolution) { IList e = new List(); /// Events from currently running operations Event retVal = Event.Done; /// Operations checkUiOp = new Operations.CheckUIOp(true); IList cameras = new List(); IList liveStreamOps = new List(); foreach (var rr in sensPath.RegisterReaders) { if (rr is GenericDevices.IRoi) { GenericDevices.ICamera camera = (rr as GenericDevices.IRoi).Camera; if (!cameras.Contains(camera)) { cameras.Add(camera); liveStreamOps.Add(camera.LiveStreamOp(hiResolution)); } } } TestProgressEventArgs.SetEstimatedTimes(new int[] { 60, 0, 0, 0, 0, 0, 60, 0 }); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.JustStarted)); //------------------------------------------------ Bridge.OnActivity(this, "Live image"); //------------------------------------------------ State.Create("LiveStreamSeq : Live image") .AddOperation(checkUiOp) .AddOperations(liveStreamOps) .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.Test)); if (e.Contains(Event.Error)) { break; } if (TestAndLogUiCmdStop(test,e)) { break; } } while (true); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.Completed)); /// Create a list with one item 'retVal' (default is Event.Done) and return it IList retList = new List(1); retList.Add(retVal); return retList; } } }