tbf/TBF/Rig/RegisterReaders/FrequencyMeterFromUniCB/FrequencyRegisterReader.cs

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() { }
}
}