common/Metrology/Measurements/MeasurementRecord.cs
2026-04-23 17:50:07 +02:00

133 lines
3.0 KiB
C#

using System;
using Xylem.Common.CommonCore.Consts;
namespace Xylem.Common.Metrology.Measurements
{
/// <inheritdoc />
/// <summary>
/// struct to hold a measurement record
/// </summary>
public class MeasurementRecord : IMeasurementRecord
{
/// <summary>
/// physical channel 1, 2 and 3
/// </summary>
public Int32 Channel = 0;
/// <summary>
/// actual volume in cubic meters
/// </summary>
public Double VolumeCm;
/// <summary>
/// Forward volume in cubic meters
/// </summary>
public Double ForwardVolumeCm;
/// <summary>
/// Reverse volume in cubic meters as negative value
/// </summary>
public Double NegativeReverseVolumeCm;
/// <summary>
/// Flow rate in cubic meters per hour
/// </summary>
public Double FlowRateCmPh;
/// <summary>
/// Overflow volume
/// </summary>
public Double OverflowVolumeCm;
/// <summary>
/// time converted to seconds
/// </summary>
public Double TimeS;
/// <summary>
/// Overflow time
/// </summary>
public Double OverflowTimeS;
/// <summary>
/// CRC16 CCITT
/// </summary>
public UInt16 Crc;
/// <summary>
/// record is valid
/// </summary>
public Boolean IsValid;
/// <summary>
/// Mark package as start, end, intermediate or not sync
/// </summary>
public SyncMarkRecord SyncMarkRecord;
/// <summary>
/// time when package was decoded
/// </summary>
public DateTimeOffset DecodedTime;
/// <summary>
/// time when package was received
/// </summary>
public DateTimeOffset ReceivedTime;
/// <inheritdoc />
public Double GetVolumeCm()
{
return VolumeCm;
}
/// <inheritdoc />
public Double GetTimeS()
{
return TimeS;
}
/// <inheritdoc />
public SyncMarkRecord GetDataSyncMark()
{
return SyncMarkRecord;
}
/// <inheritdoc />
public Int32 GetChannel()
{
//channel 0 is for the entire device without a physical channel assignment
return Channel;
}
/// <inheritdoc />
public Double GetOverflowVolumeCm()
{
return OverflowVolumeCm;
}
/// <inheritdoc />
public Double GetOverflowTimeS()
{
return OverflowTimeS;
}
/// <inheritdoc />
public Object Clone()
{
return MemberwiseClone();
}
public Double GetNegativeReserveVolumeCm()
{
return NegativeReverseVolumeCm;
}
public Double GetForwardVolumeCm()
{
return ForwardVolumeCm;
}
}
}