54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Common;
|
|
using log4net;
|
|
using TBF.Rig.GenericDevices;
|
|
|
|
namespace TBF.Rig.RegisterReaders.FrequencyMeterFromUniCB
|
|
{
|
|
public class FrequencyRegisterReader : ComponentBase, GenericDevices.IRegReader
|
|
{
|
|
private static readonly ILog log = LogManager.GetLogger(typeof(FrequencyRegisterReader));
|
|
|
|
public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(-1)); }
|
|
|
|
readonly RRCfg rrCfg;
|
|
readonly TBF.Rig.ControlBoard.IControlBoard cb;
|
|
|
|
public int Position { get{ return rrCfg.Position; } }
|
|
public Common.RegisterReaderType RegisterReaderType { get { return Common.RegisterReaderType.Pulses; } }
|
|
|
|
public double PulsesPerLtr
|
|
{
|
|
get { return rrCfg.ProcParams.PulsesPerLtr; }
|
|
set { rrCfg.ProcParams.PulsesPerLtr = value; }
|
|
}
|
|
public double LtrsPerPulse { get { return (PulsesPerLtr <= float.Epsilon) ? 1.0 : (1 / PulsesPerLtr); } }
|
|
public string QuantityUnits { get; set; }
|
|
|
|
public int Filter { get { return rrCfg.ProcParams.Filter; } }
|
|
|
|
public int WMPulses { get { return cb.PulsesWM(Position); } }
|
|
public int WMRefPulses { get { return cb.RefPulsesWM(Position); } }
|
|
public double WMVolume { get { return LtrsPerPulse * Convert.ToDouble(WMPulses); } }
|
|
|
|
public double BeginWMState { get { return 0; } } /// Always 0
|
|
public double EndWMState { get { return WMVolume; } } /// Derived from WMVolume
|
|
|
|
|
|
public FrequencyRegisterReader() { }
|
|
|
|
public FrequencyRegisterReader(Generic.IComponentCfg cfg, IList<Generic.IComponent> components)
|
|
: base(cfg)
|
|
{
|
|
rrCfg = cfg as RRCfg;
|
|
|
|
cb = TbfComponents.FindComponent(cfg.ParentName, components) as TBF.Rig.ControlBoard.IControlBoard;
|
|
if (cb == null) throw new Exception("Cannot find " + Name + " parent");
|
|
|
|
log.Warn(this.ToString());
|
|
}
|
|
|
|
public override void Initialize() { }
|
|
}
|
|
} |