96 lines
3.7 KiB
C#
96 lines
3.7 KiB
C#
///
|
|
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Common;
|
|
using log4net;
|
|
using TBF.Resources;
|
|
using TBF.UiBridge;
|
|
using Config.Entities;
|
|
|
|
namespace TBF.Rig.TestMethods.Evacuation
|
|
{
|
|
public class EvacuationSeq : Sequences.SequenceBase
|
|
{
|
|
private static readonly ILog log = LogManager.GetLogger(typeof(EvacuationSeq));
|
|
|
|
/// <summary>
|
|
/// Fixed start mass collection method sequence
|
|
/// </summary>
|
|
/// <param name="test">Test entity</param>
|
|
/// <returns>
|
|
/// Event.Done . . . . . . . OK
|
|
/// Event.MakeSecondPass . . OK, 2nd pass (=evaluation) required
|
|
/// Event.UiCmdStop . . . . Stopped by the user using the on-screen button STOP
|
|
/// Event.OpArgumentError . Target flow is out of range
|
|
/// Event.Error . . . . . . Unspecified error
|
|
/// </returns>
|
|
public IList<Event> Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,
|
|
DebugMode debugLevel)
|
|
{
|
|
//------------------------------------------------
|
|
Bridge.OnActivity(this, Strings.Test_in_progress);
|
|
//------------------------------------------------
|
|
|
|
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.JustStarted));
|
|
|
|
TransitionSequence purgeEnd = StateMachine.TransitionSequences
|
|
.FirstOrDefault<TransitionSequence>(x => x.Name == StateMachine.Procedure.TransitionEnd);
|
|
|
|
TestStartTime = DateTime.Now;
|
|
Event retVal = (purgeEnd != null) ? Transition(purgeEnd, TransitionContext.PurgeEnd) : Event.OK;
|
|
bool passed = (retVal == Event.Done);
|
|
TestEndTime = DateTime.Now;
|
|
|
|
//------------------------------------------------
|
|
Bridge.OnActivity(this, Strings.Test_completed);
|
|
//------------------------------------------------
|
|
|
|
///
|
|
/// Populate TestResult data entity with data
|
|
///
|
|
string testName = Common.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
|
|
Results.Entities.TestRslt tstRslt = BatchRslts.GetTestRslt(testName, test.Part);
|
|
|
|
if (tstRslt != null)
|
|
{
|
|
Results.Utils.GetCounterStates(tstRslt, Program.LocalSettings.Counters);
|
|
UpdateTempPressDensAmb(tstRslt);
|
|
|
|
/// Main results
|
|
tstRslt.MethodClass = TbfComponents.FindComponent(test.Method).ClassName;
|
|
tstRslt.StartTime = TestStartTime;
|
|
tstRslt.EndTime = TestEndTime;
|
|
tstRslt.TestTime = Math.Max(1.0, EndTime - StartTime); /// [s] measurement time, at least 1 to prevent division by zero
|
|
tstRslt.TestDone = passed;
|
|
tstRslt.ErrorFlags = 0;
|
|
tstRslt.InfoFlags = 0;
|
|
|
|
///
|
|
/// Single meters
|
|
///
|
|
for (int i = 0; i < BatchRslts.WMPositionsCount; i++)
|
|
{
|
|
Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.Single);
|
|
GenericDevices.IRegReader regReader = sensPath.RegisterReaders[i];
|
|
|
|
if (meterRslt != null && regReader != null)
|
|
{
|
|
meterRslt.TestDone = passed;
|
|
meterRslt.Passed = passed;
|
|
}
|
|
}
|
|
|
|
/// Update results
|
|
Bridge.OnTestCompleted(this, new TestCompletedEventArgs(testName, tstRslt));
|
|
}
|
|
|
|
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.TransitionAfter));
|
|
|
|
return new List<Event> { retVal };
|
|
}
|
|
}
|
|
}
|