using System;
using System.Collections.Generic;
using TBF.BenchControl.Generic;
using TBF.Boxes;
namespace TBF.BenchControl.GenericDevices
{
public interface IRegulValve : IComponent
{
///
/// Regulation valve position 0.0 .. 100.0 %
///
float Position { get; }
///
/// Dictionary for position re-use
///
IDictionary Dict { get; }
///
/// Operation to set the water flow within tolerances
/// Events: Event.None, Event.FlowReached, Event.FlowTimeOut
///
/// Lower limit of the required flow [m3/h]
/// Higher limit of the required flow [m3/h]
/// Measured flow [m3/h]
/// Timeout in [s]
/// SetFlowOp instance
IOperation SetFlowOp(IFlowMeter flowMeter, float requiredFlowLo, float requiredFlowHi, FloatBox measuredFlow, int timeout);
///
/// Operation to set the water flow within tolerances. Leave the measurement running.
/// Events: Event.None, Event.FlowReached, Event.FlowTimeOut
///
/// Lower limit of the required flow [m3/h]
/// Higher limit of the required flow [m3/h]
/// Measured flow [m3/h]
/// Timeout in [s]
/// Passed to SendCommand() as argument filterContant
/// SetFlowOp instance
IOperation SetFlowAndMeasureOp(IFlowMeter flowMeter, float requiredFlowLo, float requiredFlowHi, FloatBox measuredFlow, int timeout, float filter);
///
/// Operation to set the regulation valve to a required position
/// Events: Event.None
///
/// Lower limit of the required valve position in %
/// Higher limit of the required valve position in %
/// Timeout in [s]
/// SetPositionOp instance
IOperation SetRegulValvePositionOp(float posLoPct, float posHiPct, int timeout);
///
/// Operation to set the regulation valve to a required position
/// Events: Event.None
///
/// Time pulse in sec
/// SetPositionOp instance
IOperation ChangeRegulValvePositionOp(float timePulseSec);
}
}