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 != "") { } } } }