60 lines
2.5 KiB
C#
60 lines
2.5 KiB
C#
using System;
|
|
|
|
|
|
namespace TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols
|
|
{
|
|
public class WaterMetrologyData
|
|
{
|
|
private TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols.OptoHeadStatus _optoHeadStatus;
|
|
private WaterMetrologyDataC7 c7Data;
|
|
private WaterMetrologyDataC2 c2Data;
|
|
|
|
public WaterMetrologyDataC7 C7Data { get => c7Data; }
|
|
public WaterMetrologyDataC2 C2Data { get => c2Data; }
|
|
public TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols.OptoHeadStatus OptoHeadStatus { get => _optoHeadStatus; }
|
|
|
|
public static WaterMetrologyData Parse(byte[] data, DateTime dt, string dutinfo)
|
|
{
|
|
if (data.Length < 24)
|
|
{
|
|
throw new ArgumentException("Invalid data length for WaterMetrologyData C2.");
|
|
}
|
|
WaterMetrologyData waterMetrologyData = new WaterMetrologyData();
|
|
waterMetrologyData._optoHeadStatus = TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols.OptoHeadStatus.Unknown;
|
|
// Probably C2
|
|
if(data.Length > 24 && data.Length < 48)
|
|
{
|
|
waterMetrologyData.c2Data = WaterMetrologyDataC2.Parse(data, dt, dutinfo);
|
|
waterMetrologyData._optoHeadStatus = TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols.OptoHeadStatus.OptoHeadC2;
|
|
}
|
|
// Probably C7
|
|
else if(data.Length >= 48)
|
|
{
|
|
waterMetrologyData.c7Data = WaterMetrologyDataC7.Parse(data, dt, dutinfo);
|
|
waterMetrologyData._optoHeadStatus = TBF.Rig.RegisterReaders.PoseidonReader.communication.C7.Protocols.OptoHeadStatus.OptoHeadC7;
|
|
}
|
|
|
|
return waterMetrologyData;
|
|
}
|
|
|
|
public static WaterMetrologyData SimulateC7()
|
|
{
|
|
WaterMetrologyData waterMetrologyData = new WaterMetrologyData();
|
|
waterMetrologyData.c7Data = WaterMetrologyDataC7.Simulate();
|
|
return waterMetrologyData;
|
|
}
|
|
|
|
public static WaterMetrologyData SimulateC2()
|
|
{
|
|
WaterMetrologyData waterMetrologyData = new WaterMetrologyData();
|
|
waterMetrologyData.c2Data = WaterMetrologyDataC2.Simulate();
|
|
return waterMetrologyData;
|
|
}
|
|
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"Status: {_optoHeadStatus}, C7Data: {c7Data}, C2Data: {c2Data}";
|
|
}
|
|
}
|
|
} |