using System;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes;
namespace Xylem.Common.Logic.ProductionOrderCore
{
///
/// Source for final properties of Cordonel
///
public enum ProgrammingSource
{
Vako,
Csd,
ProcessOrFix,
Order
}
public enum ReadCompare
{
NoCompare,
Equal,
True,
Near,
}
public enum isForProcessStep
{
NotSet,
UnlockMeter,
Programming,
LockMeter,
SetShippingState
}
///
/// Values for single registers
///
public class ProgrammingParameters
{
///
/// Single register setup value assignment
///
///
///
///
///
///
///
public ProgrammingParameters(String registerName, Byte[] registerValue, ProgrammingSource programmingSource = ProgrammingSource.Vako,
Object realValue = null, String typeName = "", ReadCompare compare = ReadCompare.NoCompare)
{
RegisterName = registerName;
RegisterValue = registerValue;
Source = programmingSource;
TypeName = typeName;
if (!string.IsNullOrEmpty(TypeName))
{
switch (TypeName)
{
case "System.TimeT":
RealValue = Convert.ToInt32(realValue);
DataType = typeof(TimeT);
break;
case "System.Boolean":
RealValue = Convert.ToBoolean(realValue);
DataType = typeof(Boolean);
break;
case "System.Byte":
RealValue = Convert.ToByte(realValue);
DataType = typeof(Byte);
break;
case "System.SByte":
RealValue = Convert.ToSByte(realValue);
DataType = typeof(SByte);
break;
case "System.UInt16":
RealValue = Convert.ToUInt16(realValue);
DataType = typeof(UInt16);
break;
case "System.Int16":
RealValue = Convert.ToInt16(realValue);
DataType = typeof(Int16);
break;
case "System.UInt32":
RealValue = Convert.ToUInt32(realValue);
DataType = typeof(UInt32);
break;
case "System.Int32":
RealValue = Convert.ToInt32(realValue);
DataType = typeof(Int32);
break;
case "System.UInt64":
RealValue = Convert.ToUInt64(realValue);
DataType = typeof(UInt64);
break;
case "System.Int64":
RealValue = Convert.ToInt64(realValue);
DataType = typeof(Int64);
break;
case "System.String":
DataType = typeof(String);
break;
case "System.UInt96":
DataType = typeof(UInt96);
break;
case "System.UInt128":
DataType = typeof(UInt128);
break;
default:
throw new NotImplementedException($"DataType {TypeName} is not supported. For Register {RegisterName}");
}
}
Compare = compare;
}
///
/// The register name
///
public String RegisterName { get; set; }
///
/// The register value converted to raw bytes by register converter
///
public Byte[] RegisterValue { get; set; }
public ProgrammingSource Source { get; set; }
public Object RealValue { get; set; }
public String TypeName { get; set; }
public Type DataType { get; set; }
public ReadCompare Compare { get; set; }
public void CreateRealValueTypesafe()
{
if (TypeName != "")
{
}
}
}
}