/// /// Copyright (c) 2017-2022 Sensus Slovensko a.s. /// using System.Collections.Generic; using log4net; using Common; using Config.Entities; using TBF.UiBridge; namespace TBF.Rig.TestMethods.LiveStream { public class LiveStreamSeq : Sequences.SequenceBase { private static readonly ILog log = LogManager.GetLogger(typeof(LiveStreamSeq)); /// /// Check capabilities of devces in the output path required for this test method /// /// Devices /// true when capabilities of devices are OK public static bool CheckDeviceCaps(Config.Entities.Test test, OutputPath devices, out string message) { message = string.Empty; return true; } public IList Execute(Test test, LiveStreamCfg cfg) { 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.IRegReaderStillCamera) { GenericDevices.ICamera camera = (rr as GenericDevices.IRegReaderStillCamera).Camera; if (!cameras.Contains(camera)) { if (cfg.TestParams != null && cfg.TestParams.ShowOverlayRect) { camera.ShowOverlayRect = true; camera.OverlayRect = new System.Drawing.Rectangle(cfg.TestParams.OverlayLeft, cfg.TestParams.OverlayTop, cfg.TestParams.OverlayWidth, cfg.TestParams.OverlayHeight); camera.OverlayThickness = cfg.TestParams.OverlayThickness; } cameras.Add(camera); liveStreamOps.Add(camera.LiveStreamOp(cfg.HiResolution)); } } } //------------------------------------------------ Bridge.OnActivity(this, test.Method); //------------------------------------------------ State.Create(string.Format("{0}({1}) : Live stream", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperation(new Operations.MessageBoxOp(TBF.Resources.Strings.Camera)) .AddOperations(liveStreamOps) .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Progress.Test)); if (e.Contains(Event.Error)) { retVal = Event.Error; break; } if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; } } while (!e.Contains(Event.OK)); /// Turn the overlay in live images off foreach (var rr in sensPath.RegisterReaders) { if (rr is GenericDevices.IRegReaderStillCamera) { (rr as GenericDevices.IRegReaderStillCamera).Camera.ShowOverlayRect = false; } } Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Progress.Completed)); return new List { retVal }; } } }