diff --git a/Common/Common.sln.DotSettings b/Common/Common.sln.DotSettings index 87f111d0..e0dff5bc 100644 --- a/Common/Common.sln.DotSettings +++ b/Common/Common.sln.DotSettings @@ -1,6 +1,11 @@  + DN + FW + LUT True True + True + True True True True @@ -10,7 +15,12 @@ True True True + True True + True + True + True + True True True True @@ -18,6 +28,7 @@ True True + True True True True @@ -26,4 +37,6 @@ True True True - True \ No newline at end of file + True + True + True \ No newline at end of file diff --git a/Common/Common.sln.DotSettings.user b/Common/Common.sln.DotSettings.user index 4480347e..a4388340 100644 --- a/Common/Common.sln.DotSettings.user +++ b/Common/Common.sln.DotSettings.user @@ -18,6 +18,8 @@ <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="False" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="False" Prefix="" Suffix="" Style="Aa_bb" /> <AssemblyExplorer> <Assembly Path="D:\Projekte\SENSUS_tfs_workspaces\WorkBenchV2\Main\Common\Ui\IrdaFunctionalTestApp\bin\Debug\Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.dll" /> </AssemblyExplorer> diff --git a/Common/CordonelAssemblyLine/Data/PressureResultDataNotifyable.cs b/Common/CordonelAssemblyLine/Data/PressureResultDataNotifyable.cs index 61330e58..4b36f410 100644 --- a/Common/CordonelAssemblyLine/Data/PressureResultDataNotifyable.cs +++ b/Common/CordonelAssemblyLine/Data/PressureResultDataNotifyable.cs @@ -26,7 +26,7 @@ namespace CordonelAssemblyLine.Data Rev = baseData.Rev; TesterName = baseData.TesterName; Testpoints = new ObservableCollection(); - baseData.Testpoints.ForEach(o => Testpoints.Add(o)); + baseData.TestPoints.ForEach(o => Testpoints.Add(o)); TestPressure = baseData.TestPressure; } public PressureResultDataNotifyable() @@ -151,7 +151,7 @@ namespace CordonelAssemblyLine.Data baseData.Remark = Remark; baseData.Rev = Rev; baseData.TesterName = TesterName; - baseData.Testpoints = Testpoints.ToList(); + baseData.TestPoints = Testpoints.ToList(); baseData.TestPressure = TestPressure; return baseData; } diff --git a/Common/CordonelAssemblyLine/Model/MarriageViewModel.cs b/Common/CordonelAssemblyLine/Model/MarriageViewModel.cs index eebc6340..72f26a7f 100644 --- a/Common/CordonelAssemblyLine/Model/MarriageViewModel.cs +++ b/Common/CordonelAssemblyLine/Model/MarriageViewModel.cs @@ -568,7 +568,7 @@ namespace CordonelAssemblyLine.Model sm = PickingStateMachine.MappingError; } List MappingText = new List(); - if (retInt.HasFlag(MarriagePossibleEnum.NotPossibleDueAlredayMatch)) + if (retInt.HasFlag(MarriagePossibleEnum.NotPossibleDueToAlreadyMarried)) { MappingText.Add("Pcb ist schon mit dieser Seriennummer verbunden.Display aktualisiert"); using (var Batch = new MeterBatch()) @@ -611,7 +611,7 @@ namespace CordonelAssemblyLine.Model } } } - if (retInt.HasFlag(MarriagePossibleEnum.NotPossibleDuePcblocked)) + if (retInt.HasFlag(MarriagePossibleEnum.NotPossibleDuePcbLocked)) { MappingText.Add("Pcb ist schon mit einer anderen Seriennummer verbunden."); } diff --git a/Common/CordonelPreadjustmentUi/PreAdjustmentControl.cs b/Common/CordonelPreadjustmentUi/PreAdjustmentControl.cs index 68a10335..8154782e 100644 --- a/Common/CordonelPreadjustmentUi/PreAdjustmentControl.cs +++ b/Common/CordonelPreadjustmentUi/PreAdjustmentControl.cs @@ -692,7 +692,7 @@ namespace CordonelPreadjustmentUi { throw new ApplicationException("Detect failed"); } - if (settings.MeterSize != MeterSize.NAN) + if (settings.MeterSize != MeterSize.NA) { btn_ZeroFlowCal_Start_Click(null, EventArgs.Empty); } @@ -1770,7 +1770,7 @@ namespace CordonelPreadjustmentUi var ts = DateTimeOffset.UtcNow - totalStartOffset.Value; DebugMessage($"offset duration= {ts.TotalSeconds}"); - MeterStateCtls.ForEach(f => f.Meter?.calibrationResult?.AddAditonlaLog($"offset duration=", $"{ts.TotalSeconds}S")); + MeterStateCtls.ForEach(f => f.Meter?.calibrationResult?.AddAdditionalLog($"offset duration=", $"{ts.TotalSeconds}S")); totalStartOffset = null; diff --git a/Common/CordonelPreadjustmentUi/Processes/Actions/AmplitudeTestProcess.cs b/Common/CordonelPreadjustmentUi/Processes/Actions/AmplitudeTestProcess.cs index be390b29..4b259cbf 100644 --- a/Common/CordonelPreadjustmentUi/Processes/Actions/AmplitudeTestProcess.cs +++ b/Common/CordonelPreadjustmentUi/Processes/Actions/AmplitudeTestProcess.cs @@ -161,7 +161,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions if (meanVal == 0) { pp.DebugMessage($"Mean value is zero at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); - meterctl.Meter.calibrationResult.AddAditonlaLog($"" + + meterctl.Meter.calibrationResult.AddAdditionalLog($"" + $"PATH {Path + 1}", Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)); if (CheckAbort(false, meterctl)) { return false; } @@ -169,7 +169,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions pp.DebugMessage($"Mean value at {meterctl.Meter.Slot}; PATH{(Path + 1).ToString(pp.Setting.Culture)}; Value = {Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Amp. Test Mean value PATH {Path + 1}", $"at {FirstHitLevelPercentage}={Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test Mean value PATH {Path + 1}", $"at {FirstHitLevelPercentage}={Math.Round(meanVal, 4).ToString("000.0000", pp.Setting.Culture)}"); var cTofAvgMeanTotal = TofAvgMeanTotal.Get(Path).ToList(); cTofAvgMeanTotal.Add(meanVal); @@ -223,12 +223,12 @@ namespace CordonelPreadjustmentUi.Processes.Actions if (!r) { - meterctl.Meter.calibrationResult.AddAditonlaLog($"Amp. Test OptimalPoint PATH {Path + 1}", OptimalPoint.Get(Path).ToString(pp.Setting.Culture)); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test OptimalPoint PATH {Path + 1}", OptimalPoint.Get(Path).ToString(pp.Setting.Culture)); pp.DebugMessage($"Optimal point calculation successful PATH{Path + 1}; Value = {OptimalPoint.Get(Path).ToString(pp.Setting.Culture)}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); } else { - meterctl.Meter.calibrationResult.AddAditonlaLog($"Amp. Test OptimalPoint PATH {Path + 1}", "NaN"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Amp. Test OptimalPoint PATH {Path + 1}", "NaN"); pp.DebugMessage($"Optimal point calculation failed, PATH{Path + 1}", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); if (CheckAbort(!r, meterctl)) { return !r; } } diff --git a/Common/CordonelPreadjustmentUi/Processes/Actions/OffsetTestProcess.cs b/Common/CordonelPreadjustmentUi/Processes/Actions/OffsetTestProcess.cs index 2d5e52f3..c5784501 100644 --- a/Common/CordonelPreadjustmentUi/Processes/Actions/OffsetTestProcess.cs +++ b/Common/CordonelPreadjustmentUi/Processes/Actions/OffsetTestProcess.cs @@ -193,8 +193,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions pp.DebugMessage($"Average positive amplitude, PATH{(Path + 1)}: {Math.Round(amplitudeValuesMeanUp.Get(Path), 2).ToString("000.00")}mV", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); pp.DebugMessage($"Average negative amplitude, PATH{(Path + 1)}: {Math.Round(amplitudeValuesMeanDown.Get(Path), 2).ToString("000.00")}mV", meterctl.Meter.Slot, "DC", meterctl.Meter.PcbId); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Offset Average positive amplitude PATH { (Path + 1)}", $"{ Math.Round(amplitudeValuesMeanUp.Get(Path), 2).ToString("000.00")}mV"); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Offset Average negative amplitude PATH { (Path + 1)}", $"{ Math.Round(amplitudeValuesMeanDown.Get(Path), 2).ToString("000.00")}mV"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Offset Average positive amplitude PATH { (Path + 1)}", $"{ Math.Round(amplitudeValuesMeanUp.Get(Path), 2).ToString("000.00")}mV"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Offset Average negative amplitude PATH { (Path + 1)}", $"{ Math.Round(amplitudeValuesMeanDown.Get(Path), 2).ToString("000.00")}mV"); if ((amplitudeValuesMeanUp.Get(Path) > pp.Setting.OffsetTestUpperVoltageLimitMV) || (amplitudeValuesMeanUp.Get(Path) < pp.Setting.OffsetTestLowerVoltageLimitMV) || @@ -206,8 +206,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions } pp.DebugMessage($"Average delta time of flight valuePATH{(Path + 1)}: Raw{DeltaTimeOfFlightAverage.Get(Path)} -> in picoseconds= { Math.Round((DeltaTimeOfFlightAverage.Get(Path) / (Math.Pow(2, 38) * Math.Pow(10, 12))), 2).ToString("000.00")}", meterctl.Meter.Slot, "APP", meterctl.Meter.PcbId); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Offset Average delta time of flight value PATH { (Path + 1)} RAW ", $"{DeltaTimeOfFlightAverage.Get(Path)}"); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Offset Average delta time of flight value PATH { (Path + 1)} picoseconds ", $"{Math.Round((DeltaTimeOfFlightAverage.Get(Path) / (Math.Pow(2, 38) * Math.Pow(10, 12))), 2).ToString("000.00")}"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Offset Average delta time of flight value PATH { (Path + 1)} RAW ", $"{DeltaTimeOfFlightAverage.Get(Path)}"); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Offset Average delta time of flight value PATH { (Path + 1)} picoseconds ", $"{Math.Round((DeltaTimeOfFlightAverage.Get(Path) / (Math.Pow(2, 38) * Math.Pow(10, 12))), 2).ToString("000.00")}"); if ((DeltaTimeOfFlightAverage.Get(Path) > pp.Setting.OffsetTestOffsetLimitPS) || (DeltaTimeOfFlightAverage.Get(Path) < -pp.Setting.OffsetTestOffsetLimitPS)) diff --git a/Common/CordonelPreadjustmentUi/Processes/Actions/PreparationProcess.cs b/Common/CordonelPreadjustmentUi/Processes/Actions/PreparationProcess.cs index 758d0198..6d4db477 100644 --- a/Common/CordonelPreadjustmentUi/Processes/Actions/PreparationProcess.cs +++ b/Common/CordonelPreadjustmentUi/Processes/Actions/PreparationProcess.cs @@ -93,8 +93,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions } } - meterctl.Meter.calibrationResult.AddAditonlaLog($"OffsetTestNumberOfLines", pp.Setting.OffsetTestNumberOfLines.ToString()); - meterctl.Meter.calibrationResult.AddAditonlaLog($"Samplerate", pp.Setting.Samplerate.ToString()); + meterctl.Meter.calibrationResult.AddAdditionalLog($"OffsetTestNumberOfLines", pp.Setting.OffsetTestNumberOfLines.ToString()); + meterctl.Meter.calibrationResult.AddAdditionalLog($"Samplerate", pp.Setting.Samplerate.ToString()); Ok = WriteRegisterSafe(meterctl.Meter, "Samplerate", Register.Genesisflow.SampleRate, pp.Setting.Samplerate); diff --git a/Common/CordonelPreadjustmentUi/Processes/Actions/TemperatureCalibrationProcess.cs b/Common/CordonelPreadjustmentUi/Processes/Actions/TemperatureCalibrationProcess.cs index 26e32b2a..3382ce1e 100644 --- a/Common/CordonelPreadjustmentUi/Processes/Actions/TemperatureCalibrationProcess.cs +++ b/Common/CordonelPreadjustmentUi/Processes/Actions/TemperatureCalibrationProcess.cs @@ -150,8 +150,8 @@ namespace CordonelPreadjustmentUi.Processes.Actions pp.StatusLabel = PredefinedMessages.WaitUntilRegisterWriteFinished(pp.Setting.Culture); Ok = WriteRegisterSafe(putTempIntoMeter.Meter, "Temperature calibration", Register.Genesisflow.ToFTempCalibrate, TempToRegister, false); if (CheckAbort(Ok, putTempIntoMeter)) { return Ok; } - putTempIntoMeter.Meter.calibrationResult.AddAditonlaLog($"Temperature calibration Register", TempToRegister.ToString()); - putTempIntoMeter.Meter.calibrationResult.AddAditonlaLog($"Temperature calibration Origin", originTemp.ToString()); + putTempIntoMeter.Meter.calibrationResult.AddAdditionalLog($"Temperature calibration Register", TempToRegister.ToString()); + putTempIntoMeter.Meter.calibrationResult.AddAdditionalLog($"Temperature calibration Origin", originTemp.ToString()); #endregion #region Wait for some seconds diff --git a/Common/Hardware/Interfaces/Ports/SerialPorts/BaseSerialPort.cs b/Common/Hardware/Interfaces/Ports/SerialPorts/BaseSerialPort.cs index 4c753763..47445680 100644 --- a/Common/Hardware/Interfaces/Ports/SerialPorts/BaseSerialPort.cs +++ b/Common/Hardware/Interfaces/Ports/SerialPorts/BaseSerialPort.cs @@ -24,6 +24,11 @@ namespace Xylem.Common.Hardware.Interfaces.Ports.SerialPorts /// public virtual event EventHandler OnRawRecordReceived; + /// + /// The port is not assigned. + /// + public const String PortNotAssigned = "NA"; + /// public virtual event EventHandler OnRawRecordSendOut; diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisConfig/ProcessConfig.cs b/Common/Hardware/WaterMeter/Genesis/GenesisConfig/ProcessConfig.cs index 18512614..ddf3bb89 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisConfig/ProcessConfig.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisConfig/ProcessConfig.cs @@ -27,7 +27,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig /// public ProcessConfig(String file) { - // chack for AppRoaming + // check for AppRoaming var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Genesis), file); if (!File.Exists(configFile)) diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs index d6ff7392..1a00dd47 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; -using System.Text; using Xylem.Common.Hardware.WaterMeter.Genesis.Applications; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes; @@ -62,208 +61,218 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore try { //extract information of every application - foreach (var currentApplication in applicationGroups) - { - var o = (JObject)currentApplication.Value; - var application = new ApplicationDefinition(); - Byte applicationAddress = 0; - - foreach (var groupProp in o) + if (applicationGroups != null) + foreach (var currentApplication in applicationGroups) { - try + var o = (JObject)currentApplication.Value; + var application = new ApplicationDefinition(); + Byte applicationAddress = 0; + + foreach (var groupProp in o) { - if (groupProp.Key == "id") + try { - applicationAddress = groupProp.Value.Value(); - application.AppName = currentApplication.Key; - application.AppId = applicationAddress; - ConfigApplicationDefinitions.Add(application); - } - else if (groupProp.Key == "registers") - { - foreach (var registers in groupProp.Value) + if (groupProp.Key == "id") { - var register = ((JProperty)registers); - - try + applicationAddress = groupProp.Value.Value(); + application.AppName = currentApplication.Key; + application.AppId = applicationAddress; + ConfigApplicationDefinitions.Add(application); + } + else if (groupProp.Key == "registers") + { + foreach (var registers in groupProp.Value) { - foreach (var registerJ in register.Value) + var register = (JProperty)registers; + + try { - JProperty reg = ((JProperty)registerJ); - - Byte? registerAddress = null; - if (reg.Name == "id") + foreach (var registerJ in register.Value) { - registerAddress = (Byte)reg.Value; - } + var reg = (JProperty)registerJ; - if (reg.Name == "details") - { - - var details = ((JArray)reg.Value); - - foreach (var jdetail in details.Children()) + Byte? registerAddress = null; + if (reg.Name == "id") { - var actualRegister = new RegisterDefinition(); - var idTag = reg.Parent.First(f => ((JProperty)f).Name == "id"); - var id = (Byte)(JProperty)idTag;//.Value(); + registerAddress = (Byte)reg.Value; + } - if (registerAddress.HasValue) - { - throw new Exception("invalid json cast"); - } - actualRegister.RegAddressInApp = id; - actualRegister.AppName = currentApplication.Key; - actualRegister.AppAddress = applicationAddress; - actualRegister.RegisterDetail = new RegisterDetail(); - actualRegister.RegisterName = register.Name; - var detailO = (JObject)jdetail; - JProperty detail; - detail = detailO.Property("privilege"); - if (detail.Name == "privilege") - { - actualRegister.RegisterDetail.Privilege = JsonConvert.DeserializeObject(detail.Value.ToString(), Settings); - } - detail = detailO.Property("type"); - if (detail.Name == "type") - { + if (reg.Name == "details") + { + var details = ((JArray)reg.Value); - actualRegister.DataType = typeof(String);// detail.Value.ToString(); + foreach (var jdetail in details.Children()) + { + var actualRegister = new RegisterDefinition(); + var idTag = reg.Parent.First(f => ((JProperty)f).Name == "id"); + var id = (Byte)(JProperty)idTag; //.Value(); - switch (detail.Value.ToString().ToLower()) + if (registerAddress.HasValue) { - case "bool_t": - actualRegister.DataType = typeof(Boolean); - break; - case "rpc": - actualRegister.DataType = typeof(Rpc); - break; - case "string": - actualRegister.DataType = typeof(String); - break; - case "uint32_t": - actualRegister.DataType = typeof(UInt32); - break; - case "time_t": - actualRegister.DataType = typeof(TimeT); - break; - case "status_t": - actualRegister.DataType = typeof(StatusT); - break; - case "uint16_t": - actualRegister.DataType = typeof(UInt16); - break; - case "uint8_t": - actualRegister.DataType = typeof(byte); - break; - case "enum8": - actualRegister.DataType = typeof(Enum8); - break; - case "uint64_t": - actualRegister.DataType = typeof(UInt64); - break; - case "uint96_t": - actualRegister.DataType = typeof(UInt96); - break; - case "int8_t": - actualRegister.DataType = typeof(sbyte); - break; - case "int32_t": - actualRegister.DataType = typeof(Int32); - break; - case "int64_t": - actualRegister.DataType = typeof(Int64); - break; - case "int16_t": - actualRegister.DataType = typeof(Int16); - break; + throw new Exception("invalid json cast"); } - } - detail = detailO.Property("description"); - if (detail.Name == "description") - { - actualRegister.RegisterDetail.Description = detail.Value.ToString(); - } - detail = detailO.Property("version"); - if (detail.Name == "version") - { - actualRegister.RegisterDetail.Version = JsonConvert.DeserializeObject(detail.Value.ToString()); - } - detail = detailO.Property("values"); - if (detail != null && detail.Name == "values") - { - foreach (var dValues in detail.Children().First()) + actualRegister.RegAddressInApp = id; + actualRegister.AppName = currentApplication.Key; + actualRegister.AppAddress = applicationAddress; + actualRegister.RegisterDetail = new RegisterDetail(); + actualRegister.RegisterName = register.Name; + var detailO = (JObject)jdetail; + JProperty detail; + detail = detailO.Property("privilege"); + if (detail.Name == "privilege") { - switch (((JProperty)dValues).Name) + actualRegister.RegisterDetail.Privilege = + JsonConvert.DeserializeObject( + detail.Value.ToString(), Settings); + } + + detail = detailO.Property("type"); + if (detail.Name == "type") + { + actualRegister.DataType = + typeof(String); // detail.Value.ToString(); + + switch (detail.Value.ToString().ToLower()) { - case "default": - actualRegister.Default = (Int64)((JProperty)dValues).Value; + case "bool_t": + actualRegister.DataType = typeof(Boolean); break; - case "maximum": - actualRegister.Maximum = (Int64)((JProperty)dValues).Value; + case "rpc": + actualRegister.DataType = typeof(Rpc); break; - case "minimum": - actualRegister.Minimum = (Int64)((JProperty)dValues).Value; + case "string": + actualRegister.DataType = typeof(String); + break; + case "uint32_t": + actualRegister.DataType = typeof(UInt32); + break; + case "time_t": + actualRegister.DataType = typeof(TimeT); + break; + case "status_t": + actualRegister.DataType = typeof(StatusT); + break; + case "uint16_t": + actualRegister.DataType = typeof(UInt16); + break; + case "uint8_t": + actualRegister.DataType = typeof(byte); + break; + case "enum8": + actualRegister.DataType = typeof(Enum8); + break; + case "uint64_t": + actualRegister.DataType = typeof(UInt64); + break; + case "uint96_t": + actualRegister.DataType = typeof(UInt96); + break; + case "int8_t": + actualRegister.DataType = typeof(sbyte); + break; + case "int32_t": + actualRegister.DataType = typeof(Int32); + break; + case "int64_t": + actualRegister.DataType = typeof(Int64); + break; + case "int16_t": + actualRegister.DataType = typeof(Int16); break; } } - } - detail = detailO.Property(StaticType.StaticTypeFieldIdentifier); - if (detail != null && detail.Name == StaticType.StaticTypeFieldIdentifier) - { - actualRegister.RestoreCapability = new StaticType(detail.Value.ToString()); + detail = detailO.Property("description"); + if (detail.Name == "description") + { + actualRegister.RegisterDetail.Description = + detail.Value.ToString(); + } + + detail = detailO.Property("version"); + if (detail.Name == "version") + { + actualRegister.RegisterDetail.Version = + JsonConvert.DeserializeObject( + detail.Value.ToString()); + } + + detail = detailO.Property("values"); + if (detail != null && detail.Name == "values") + { + foreach (var dValues in detail.Children().First()) + { + switch (((JProperty)dValues).Name) + { + case "default": + actualRegister.Default = + (Int64)((JProperty)dValues).Value; + break; + case "maximum": + actualRegister.Maximum = + (Int64)((JProperty)dValues).Value; + break; + case "minimum": + actualRegister.Minimum = + (Int64)((JProperty)dValues).Value; + break; + } + } + } + + detail = detailO.Property(StaticType.StaticTypeFieldIdentifier); + if (detail != null && detail.Name == + StaticType.StaticTypeFieldIdentifier) + { + actualRegister.RestoreCapability = + new StaticType(detail.Value.ToString()); + } + + ConfigRegistersDefinitions.Add(actualRegister); } - ConfigRegistersDefinitions.Add(actualRegister); } } } - } - catch (Exception e) - { - //todo log ex + catch (Exception ) + { + //todo log ex + } } } } - } - catch (Exception e) - { - //todo log ex + catch (Exception ) + { + //todo log ex + } } } - } } - catch (Exception ex) + catch (Exception ) { - - + // ignored } - + ////tofile - var sb = new StringBuilder(); - var lsitOfRegisters = new List(); + var listOfRegisters = new List(); foreach (var item in ConfigRegistersDefinitions) { - if (item is RegisterDefinition Reg) + if (item is RegisterDefinition reg) { - if (lsitOfRegisters.Any(a => a.GetIdent() == Reg.GetIdent())) + if (listOfRegisters.Any(a => a.GetIdent() == reg.GetIdent())) { - var oldItem = lsitOfRegisters.First(a => a.GetIdent() == Reg.GetIdent()); - if (oldItem.RegisterDetail.Version.Last < Reg.RegisterDetail.Version.Last) + var oldItem = listOfRegisters.First(a => a.GetIdent() == reg.GetIdent()); + if (oldItem.RegisterDetail.Version.Last < reg.RegisterDetail.Version.Last) { - lsitOfRegisters.Remove(oldItem); - lsitOfRegisters.Add(Reg); + listOfRegisters.Remove(oldItem); + listOfRegisters.Add(reg); } } else { - lsitOfRegisters.Add(Reg); + listOfRegisters.Add(reg); } - - - } } //#region create a file for my american friends @@ -439,6 +448,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore public static readonly LvlConverter Singleton = new LvlConverter(); } + /// + /// Settings + /// public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore, diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs index 54106dea..95cfce76 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs @@ -152,7 +152,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } /// - /// Represent + /// Represent /// proposed for login /// public String PcbId @@ -662,7 +662,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore /// public void ConnectMeter() { - if (RequestPort != null) + if (RequestPort != null && RequestPort.GetPortName() != BaseSerialPort.PortNotAssigned) { LinkPortToProtocol(RequestPort, RequestProtocol); _logger.Trace($"Slot:{Slot} - RequestPort and RequestProtocol linked"); @@ -670,7 +670,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore RequestProtocol.OnRecordIsDecoded += RequestProtocol_ApplyDecodedRecord; RequestProtocol.OnAuthorizationGrant += RequestProtocol_AuthorizationGrant; } - if (StreamingPort != null) + if (StreamingPort != null && StreamingPort.GetPortName() != BaseSerialPort.PortNotAssigned) { LinkPortToProtocol(StreamingPort, StreamingProtocol); _logger.Trace($"Slot:{Slot} - StreamingPort and StreamingProtocol linked"); @@ -1647,7 +1647,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore var maxReads = 4; while (!hasZero) { - var chunk = ReadRegister(Register.Configexchange.PCBSerialNumber, 4); + var chunk = ReadRegister(Register.Configexchange.PcbSerialNumber, 4); maxReads -= 1; if (chunk == null) { diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeterStreamingQuality.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeterStreamingQuality.cs index a536f1e1..de95bfe7 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeterStreamingQuality.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeterStreamingQuality.cs @@ -7,26 +7,42 @@ using Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.StreamingProtocol; namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore { + /// + /// Check the positioning of the streaming LED to validate the quality of the communication line + /// public class GenesisMeterStreamingQuality : GenesisMeter { + /// + /// Backup of last quality + /// public QualityResult LastQualityResult; - private StreamingDecoder sd; + + private StreamingDecoder _sd; + /// + /// Quality check is active + /// public Boolean IsRunning; private DateTimeOffset? _startTime; private DateTimeOffset? _stopTime; private List _collectedRecords; - private int? TillDecodedCount = null; - public void StartStreamingQualityCheck(int? tillDecodedCount = null) + + private Int32? _tillDecodedCount; + /// + /// Kick off the streaming quality check. + /// + /// + /// + public void StartStreamingQualityCheck(Int32? tillDecodedCount = null) { if (IsRunning) { return; } - TillDecodedCount = tillDecodedCount; - if (TillDecodedCount.HasValue) + _tillDecodedCount = tillDecodedCount; + if (_tillDecodedCount.HasValue) { - sd = new StreamingDecoder(false); + _sd = new StreamingDecoder(false); } if (StreamingPort == null || !(StreamingPort is LedSerialPort)) { @@ -36,7 +52,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore _stopTime = null; _collectedRecords = new List(); - SyncStreamingBuffer(SyncMarkRecord.FlushBuffer); SyncStreamingBuffer(SyncMarkRecord.DecodeEveryPackage); ((LedSerialPort)StreamingPort).OnRawRecordReceived += GenesisMeterStreamingQuality_OnRawRecordReceived; _startTime = DateTimeOffset.UtcNow; @@ -47,21 +62,27 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore private void GenesisMeterStreamingQuality_OnRawRecordReceived(Object sender, BasePortDataEventArgs e) { _collectedRecords.Add(e.GetData().ToString()); - if (TillDecodedCount.HasValue) + if (_tillDecodedCount.HasValue) { - if (sd.DecodeMsg(e.GetData().ToString())) + if (_sd.DecodeMsg(e.GetData().ToString())) { - TillDecodedCount = TillDecodedCount.Value - 1; - if (TillDecodedCount <= 0) + _tillDecodedCount = _tillDecodedCount.Value - 1; + if (_tillDecodedCount <= 0) { IsRunning = false; LastQualityResult = StopStreamingQualityCheck(10); } } - + } } + /// + /// Stop the streaming check. + /// + /// + /// + /// public QualityResult StopStreamingQualityCheck(Int32 sampleRateHz) { _stopTime = DateTimeOffset.UtcNow; @@ -79,24 +100,56 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore ((LedSerialPort)StreamingPort).OnRawRecordReceived -= GenesisMeterStreamingQuality_OnRawRecordReceived; SyncStreamingBuffer(SyncMarkRecord.SkipDecoding); IsRunning = false; - return new QualityResult(_collectedRecords, _stopTime.Value - _startTime.Value, sampleRateHz); + if (_stopTime != null && _startTime != null) + return new QualityResult(_collectedRecords, _stopTime.Value - _startTime.Value, sampleRateHz); + return new QualityResult(); } + /// + /// + /// public class QualityResult { + /// + /// Number of records received (read line for LED message) + /// public readonly Int32 TotalLinesCount; + /// + /// Total records decoded + /// public readonly Int32 TotalDecodedCount; + /// + /// Total errors + /// public readonly Int32 TotalTransportErrorCount; + /// + /// Validated without errors + /// public readonly Int32 TotalValidationWithoutErrorsCount; + /// + /// Expected lines + /// public readonly Int32 ExpectedLinesCount; + /// + /// Time + /// public readonly TimeSpan TotalTime; + /// + /// Error counter + /// public readonly Dictionary ErrorOccurredCounter; + /// + /// The real result of quality check + /// + /// + /// + /// public QualityResult(List collectedRecords, TimeSpan ts, Int32 sampleRateHz) { TotalLinesCount = collectedRecords.Count; TotalTime = ts; - ExpectedLinesCount = (Int32)(Math.Round( ts.TotalSeconds * sampleRateHz, 0)); + ExpectedLinesCount = (Int32)(Math.Round(ts.TotalSeconds * sampleRateHz, 0)); ErrorOccurredCounter = new Dictionary(); foreach (var rawText in collectedRecords) { @@ -140,6 +193,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } } + /// + /// The quality result as dummy zero + /// public QualityResult() { TotalLinesCount = 0; diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/_GenesisMeterMeasurement.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/_GenesisMeterMeasurement.cs index 104ac3c9..c20aea24 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/_GenesisMeterMeasurement.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/_GenesisMeterMeasurement.cs @@ -23,7 +23,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore /// All channels required to process /// public Boolean AllChannelsRequired = true; - private const bool QualityWatchMode = false; + + /// + /// Quality watch mode can be used to decode intermediate records and check + /// for actual quality of the measurements. + /// + public Boolean QualityWatchMode; @@ -69,7 +74,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore displayStateString = ByteStyler.ToString(displayState); if (displayStateString != "00-00-00-00") { - WriteRegister(Register.Genesisflow.TriggerActive, 1, true); + WriteRegister(Register.Genesisflow.TriggerActive, 1); } } @@ -79,9 +84,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } - WriteRegister("GENESISFLOW_DisplayPow10", (new Byte[] { 0x00, 0x00, 0x00, 0xFA }).Reverse().ToArray(), true, false); - WriteRegister(Register.Genesisflow.StoreCalibration, 1, true); - WriteRegister(Register.Genesisflow.StoreConfiguration, 1, true); + WriteRegister("GENESISFLOW_DisplayPow10", (new Byte[] { 0x00, 0x00, 0x00, 0xFA }).Reverse().ToArray()); + WriteRegister(Register.Genesisflow.StoreCalibration, 1); + WriteRegister(Register.Genesisflow.StoreConfiguration, 1); //} @@ -233,15 +238,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore if (_listOfIMeasurement.All(m => m.MeasurementState == MeasurementStates.IsRunning) || _listOfIMeasurement.All(m => m.MeasurementState == MeasurementStates.IsCompleted)) { - if (QualityWatchMode) - { - SyncStreamingBuffer(SyncMarkRecord.DecodeIntermediateQuality); - } - else - { - SyncStreamingBuffer(SyncMarkRecord.SkipDecoding); - } - + SyncStreamingBuffer(QualityWatchMode + ? SyncMarkRecord.DecodeIntermediateQuality + : SyncMarkRecord.SkipDecoding); } } @@ -263,35 +262,27 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore if (onlyChannelNr.HasValue) { var measurement = _listOfIMeasurement.First(f => f.GetChannel() == onlyChannelNr.Value); - if (measurement == null) - { - return MeasurementStates.NotStarted; - } - return measurement.GetMeasurementState(); } return _listOfIMeasurement.Min(m => m.MeasurementState); } - - /// - public bool RequestIntermediateMeasurementState(Int32? onlyChannelNr = null) + public Boolean RequestIntermediateMeasurementState(Int32? onlyChannelNr = null) { _logger.Trace($"Slot:{Slot} - Get measurement state"); if (!_listOfIMeasurement.Any()) { return false; } - bool? ret = null; + Boolean? ret = null; foreach (var item in _listOfIMeasurement) { if (!onlyChannelNr.HasValue || item.GetChannel() == onlyChannelNr.Value) { - var measurement = _listOfIMeasurement.First(f => f.GetChannel() == onlyChannelNr.Value); - if (measurement != null && - (measurement.MeasurementState == MeasurementStates.IsRunning - || measurement.MeasurementState == MeasurementStates.IsWaitingForIntermediateData)) + var measurement = _listOfIMeasurement.First(f => onlyChannelNr != null && f.GetChannel() == onlyChannelNr.Value); + if ((measurement.MeasurementState == MeasurementStates.IsRunning + || measurement.MeasurementState == MeasurementStates.IsWaitingForIntermediateData)) { measurement.RequestIntermediateRecord(); if (!ret.HasValue) @@ -307,8 +298,5 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } return ret.HasValue ? ret.Value : false; } - - - } } diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisFile/Consts/LutUpdateStateInfo.cs b/Common/Hardware/WaterMeter/Genesis/GenesisFile/Consts/LutUpdateStateInfo.cs index c2e7fe52..d8a4befc 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisFile/Consts/LutUpdateStateInfo.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisFile/Consts/LutUpdateStateInfo.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Properties; namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile.Consts { diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterLutUpdate.cs b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterLutUpdate.cs index 7e60094e..abfb5df3 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterLutUpdate.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterLutUpdate.cs @@ -969,20 +969,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile /// /// Load file from memory /// - /// origin Name - /// /// list of bytes of the file strean + /// origin Name + /// list of bytes of the file strean /// /// /// - Initial /// - public Boolean LoadLutFromStream(String Name, List StreamData ) + public Boolean LoadLutFromStream(String name, List streamData ) { - - LutFile = null; - LutFile = new MeterLutFile(Name) + LutFile = new MeterLutFile(name) { - BinData = StreamData + BinData = streamData }; // validate the file diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterPwdFile.cs b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterPwdFile.cs index 720b1949..1248e46c 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterPwdFile.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterPwdFile.cs @@ -64,7 +64,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile ///// ///// - Initial. ///// - ///// + ///// ///// - Insert of Level 3 password with skeletonKey, ///// - SHA 1 of passwords. ///// diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterResetPsu.cs b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterResetPsu.cs index 6b6b7d6f..c36c080f 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterResetPsu.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisFile/MeterResetPsu.cs @@ -26,7 +26,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile #region Variables // Template of FLEXNETVERSION has to be modified for version, version string and CRC - private static readonly Byte[] TemplateUpg18File = + private static readonly Byte[] TemplateUpgradeFile = { 0x41, 0x50, 0x50, 0x3E, 0x83, 0xBA, 0x47, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, @@ -39,7 +39,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile }; // upgrade file for FLEXNETVERSION - private Byte[] _upg18File; + private Byte[] _upgradeFile; // FLEXNETVERSION application Id private const Byte FlexnetVersionAppId = 0x18; @@ -54,7 +54,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile public event EventHandler OnProcessUpdate; //disk and name of lookup file - private const String StrFlexnetUpgradeFileName = "1\\upg18"; + private static readonly String StrFlexnetUpgradeFileName = $"1\\upg{FlexnetVersionAppId:X2}"; //update reties for files private const Int32 FileWriteRetries = 1; @@ -83,9 +83,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile private MeterResetPsuState _meterResetPsuState; private MeterResetPsuState _backupMeterResetPsuState; - // Look up table file - public MeterLutFile LutFile; - // number of operations for over all access private const Int32 NumberOfOperations = 11; private Int32 _operationCtr; @@ -291,7 +288,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile /// public void ResetAll() { - LutFile = null; //remove the update stop action StopUpdateProcess = false; @@ -509,8 +505,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile } // generate the upgrade file based on the template - _upg18File = new Byte[TemplateUpg18File.Length]; - Buffer.BlockCopy(TemplateUpg18File, 0, _upg18File, 0, _upg18File.Length); + _upgradeFile = new Byte[TemplateUpgradeFile.Length]; + Buffer.BlockCopy(TemplateUpgradeFile, 0, _upgradeFile, 0, _upgradeFile.Length); // rebuild numerical version out of the string because the FLEXNETVERSION version cannot be used // as it does lose the "B" information on conversion which is represented with the mask 0x80. @@ -537,21 +533,21 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile strVersion = "R"; } - _upg18File[MeterFwUpdate.FileAppVersionIndex] = (Byte)(hexVersion & 0xFF); - _upg18File[MeterFwUpdate.FileAppVersionIndex + 1] = (Byte)((hexVersion & 0xFF00) >> 8); + _upgradeFile[MeterFwUpdate.FileAppVersionIndex] = (Byte)(hexVersion & 0xFF); + _upgradeFile[MeterFwUpdate.FileAppVersionIndex + 1] = (Byte)((hexVersion & 0xFF00) >> 8); // build the version string and copy it to the upgrade file strVersion += $"{charVersion[0]}.{charVersion[1]}.{charVersion[2]}{charVersion[3]}"; var upg18Idx = FlexVersionStringIndex; foreach (var t in strVersion) { - _upg18File[upg18Idx] = Convert.ToByte(t); + _upgradeFile[upg18Idx] = Convert.ToByte(t); upg18Idx++; } // take the payload starting with version index - var payload = new Byte[_upg18File.Length - MeterFwUpdate.FileAppVersionIndex]; - Buffer.BlockCopy(_upg18File, MeterFwUpdate.FileAppVersionIndex, payload, 0, payload.Length); + var payload = new Byte[_upgradeFile.Length - MeterFwUpdate.FileAppVersionIndex]; + Buffer.BlockCopy(_upgradeFile, MeterFwUpdate.FileAppVersionIndex, payload, 0, payload.Length); var calculatedCrc = Crc16Ccitt.CalculateMsb1021(payload); // avoid replacement wit invalid generated FLEXNETVERSION @@ -561,8 +557,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile } // replace the CRC - _upg18File[MeterFwUpdate.FileAppCrcIndex] = (Byte)(calculatedCrc & 0xFF); - _upg18File[MeterFwUpdate.FileAppCrcIndex + 1] = (Byte)((calculatedCrc & 0xFF00) >> 8); + _upgradeFile[MeterFwUpdate.FileAppCrcIndex] = (Byte)(calculatedCrc & 0xFF); + _upgradeFile[MeterFwUpdate.FileAppCrcIndex + 1] = (Byte)((calculatedCrc & 0xFF00) >> 8); return true; } @@ -577,7 +573,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile private Boolean DownloadUpgradeFile() { //initiate upgrade by writing the upgrade control file - if (_upg18File == null || _upg18File.Length != TemplateUpg18File.Length || + if (_upgradeFile == null || _upgradeFile.Length != TemplateUpgradeFile.Length || !_meterFile.UnlockEraseWriteMeterFile(StrFlexnetUpgradeFileName)) { return false; @@ -590,7 +586,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile //write file and retry if not successful do { - returnValue = _meterFile.WriteMeterFile(StrFlexnetUpgradeFileName, _upg18File); + returnValue = _meterFile.WriteMeterFile(StrFlexnetUpgradeFileName, _upgradeFile); if (!returnValue) { @@ -598,7 +594,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile } } while (!returnValue && retryCtr++ < FileWriteRetries && !StopUpdateProcess); - _upg18File = null; + _upgradeFile = null; return !StopUpdateProcess && returnValue; } /// diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Enum8.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Enum8.cs index c8622359..ccd1f56e 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Enum8.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Enum8.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { // internal struct Enum8 public struct Enum8 diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Rpc.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Rpc.cs index e50d3400..3b6b7fa0 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Rpc.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/Rpc.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { public struct Rpc { diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StaticType.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StaticType.cs index f5827f19..8138e026 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StaticType.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StaticType.cs @@ -20,6 +20,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes /// /// Unknown to define restore capability /// + // ReSharper disable once UnusedMember.Local private const String UnknownAccess = null; /// @@ -30,11 +31,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes /// /// Denied restore capability /// + // ReSharper disable once UnusedMember.Local private const String RestoreDenied = "dynamic"; /// /// Unpredictable restore capability /// + // ReSharper disable once UnusedMember.Local private const String RestoreUnpredictable = "infrequentlyupdated"; /// diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StatusT.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StatusT.cs index b014b01b..1f1ea26a 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StatusT.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/StatusT.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { public struct StatusT { diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/TimeT.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/TimeT.cs index e83fa124..8c1ab5d8 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/TimeT.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/TimeT.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { public struct TimeT diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs index cf333df7..5f3eac02 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { public class UInt96 { diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_dewa.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_dewa.cs index 778d88ac..09362f6f 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_dewa.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_dewa.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { internal class st_radio_dewa { diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_tfx.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_tfx.cs index 2f4ad6bf..0b3fa22a 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_tfx.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/st_radio_tfx.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { internal class st_radio_tfx { diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterCheck.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterCheck.cs index 92aaa73b..144bec18 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterCheck.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterCheck.cs @@ -128,9 +128,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers } else if(type == typeof(Boolean)) { - var checkValue = RegisterConverter.ConvertTo(value); - - +// var checkValue = RegisterConverter.ConvertTo(value); + RegisterConverter.ConvertTo(value); + //if (reg.Minimum.HasValue && checkValue < reg.Minimum.Value) //{ // return MinText(true, checkValue.ToString(), reg.Minimum.Value.ToString(), reg.RegisterName); diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs index 127e04ad..53c15709 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs @@ -17,6 +17,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers public static Byte[] ConvertFrom(T value) { var converted = new Byte[] {0}; + if (value == null) return converted; if (value is UInt16) { var tmp = Convert.ToUInt16(value); diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs index 382141f5..6935454d 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterDefinition.cs @@ -99,24 +99,24 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers throw new NotImplementedException(); } - /// - public override Boolean Equals(Object obj) - { - return obj is RegisterDefinition fooItem && GetHashCode() == fooItem.GetHashCode(); - } + ///// + //public override Boolean Equals(Object obj) + //{ + // return obj is RegisterDefinition fooItem && GetHashCode() == fooItem.GetHashCode(); + //} - /// - public override Int32 GetHashCode() - { - var hashCode = base.GetHashCode(); - if (RegisterDetail == null) return hashCode; - hashCode ^= RegisterDetail.GetHashCode(); - if (RegisterDetail.Version != null) - { - hashCode ^= RegisterDetail.Version.GetHashCode(); - } + ///// + //public override Int32 GetHashCode() + //{ + // var hashCode = base.GetHashCode(); + // if (RegisterDetail == null) return hashCode; + // hashCode ^= RegisterDetail.GetHashCode(); + // if (RegisterDetail.Version != null) + // { + // hashCode ^= RegisterDetail.Version.GetHashCode(); + // } - return hashCode; - } + // return hashCode; + //} } } \ No newline at end of file diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterProperties/Privilege.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterProperties/Privilege.cs index d73e39e5..ba36fdd2 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterProperties/Privilege.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterProperties/Privilege.cs @@ -1,4 +1,4 @@ -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterProperties { /// /// Representing the 8 access levels meter register can have diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/Registers.cs b/Common/Hardware/WaterMeter/Genesis/Registers/Registers.cs index 2ab9cf09..f9db8670 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/Registers.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/Registers.cs @@ -34,7 +34,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers { public static readonly String Privilege = "CONFIGEXCHANGE_Privilege"; public static readonly String Password = "CONFIGEXCHANGE_Password"; - public static readonly String PCBSerialNumber = "CONFIGEXCHANGE_PCBSerialNumber"; + public static readonly String PcbSerialNumber = "CONFIGEXCHANGE_PCBSerialNumber"; public static readonly String FileOpen = "CONFIGEXCHANGE_FOpen"; public static readonly String FileClose = "CONFIGEXCHANGE_FClose"; public static readonly String FileWrite = "CONFIGEXCHANGE_FWrite"; @@ -116,7 +116,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers { Configexchange.Privilege, Configexchange.Password, - Configexchange.PCBSerialNumber, + Configexchange.PcbSerialNumber, Configexchange.FileOpen, Configexchange.FileClose, Configexchange.FileWrite, diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/Consts/DisplayCodes.cs b/Common/Hardware/WaterMeter/WaterMeterCore/Consts/DisplayCodes.cs index 46880b0f..273989e3 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/Consts/DisplayCodes.cs +++ b/Common/Hardware/WaterMeter/WaterMeterCore/Consts/DisplayCodes.cs @@ -1,40 +1,100 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts { + /// + /// Display codes to keep the user informed about the production and processing step. + /// This is useful as the user doesn't need to connect the device to a PC, he can + /// immediately inspect the status of the device. + /// public enum DisplayCodes { - //general + //general information + /// + /// Status not set + /// None = 0x0000, + /// + /// Error state + /// Error = 0xFFFF, - //Production proccess + //Production process //assembly line //Picking + /// + /// Picking in progress + /// PickingStarted = 0x7700, + /// + /// Picking succeeded, next step can be initiated + /// PickingTested = 0x7777, + /// + /// Picking failed + /// PickingFailed = 0xFF77, //Pressure + /// + /// Pressure testing succeeded, next step can be initiated + /// PressureTested = 0x1111, + /// + /// Pressure test failed + /// PressureTestedFailed = 0xFF11, //Marriage + /// + /// Connection between PCBID, Serial Number and Order number done + /// Mounted = 0x2222, - //Testbench + //Test bench + /// + /// Zero flow test succeeded, next step can be initiated + /// ZeroFlow = 0x3333, + /// + /// Zero flow test failed + /// ZeroFlowFailed = 0xFF33, + /// + /// Flow calibration succeeded, next step can be initiated + /// FlowCalibrated = 0x4444, + /// + /// Flow calibration failed + /// FlowCalibrationOurOfRange = 0xFF44, + /// + /// Flow test succeeded, next step can be initiated + /// FlowTested = 0x5555, + /// + /// Flow test failed + /// FlowTestFailed = 0xFF55, //End of line / final test + /// + /// Final test failed, else the display will be switched to operational mode, + /// showing the actual accumulated volume + /// FinalTestFailed = 0xFF66, //FWUpdate + /// + /// FW update is ongoing + /// FwUpdateActive = 0x8888, + /// + /// FW update failed + /// FwUpdateFailed = 0xFF88, + /// + /// FW update succeeded + /// FwUpToDate = 0x9999, } } diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs b/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs index bbd0e215..bb6f85b4 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs +++ b/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs @@ -172,6 +172,13 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore /// MeasurementStates GetMeasurementState(Int32? onlyChannelNr = null ); + /// + /// Request for intermediate measurement state. + /// + /// + /// + Boolean RequestIntermediateMeasurementState(Int32? onlyChannelNr = null); + /// /// set up calibration parameter (calibration factor to default) and set meter into calibration mode /// diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/MeterBatch.cs b/Common/Hardware/WaterMeter/WaterMeterCore/MeterBatch.cs index 32cae414..86ee18e3 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/MeterBatch.cs +++ b/Common/Hardware/WaterMeter/WaterMeterCore/MeterBatch.cs @@ -24,14 +24,14 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore { private readonly List _meterTypeRegistersCollection = new List(); private readonly ILogger _logger; - private readonly string _sourceLocation; + private readonly String _sourceLocation; /// /// ctor /// - public MeterBatch(String SourceLocation = "") + public MeterBatch(String sourceLocation = "") { - SourceLocation = _sourceLocation; + _sourceLocation = sourceLocation; _logger = NLogHelper.CreateOrGetLogger("MeterBatch"); _logger.Info("Meter batch created"); diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/MeterTypeRegisters.cs b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/MeterTypeRegisters.cs index 5854dc71..2dd20856 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/MeterTypeRegisters.cs +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/MeterTypeRegisters.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; namespace Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters { @@ -8,10 +7,6 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters /// public class MeterTypeRegisters { - /// - /// registers list for this meter - /// - //public readonly List Registers; /// /// meter type /// diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache index f22623aa..d8b5c8f6 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3 +1a3d4919c9c702245832d925951f2b7cb72fc333 diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/CalibrationResult.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/CalibrationResult.cs index 51f9c774..cafc0cd4 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/CalibrationResult.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/CalibrationResult.cs @@ -3,84 +3,167 @@ using System.Collections.Generic; namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Container for calibration results + /// public class CalibrationResult { - private UInt32 calFactor1; - private UInt32 calFactor2; - private UInt32 calFactor3; - private Int32 zeroOffset1; - private Int32 zeroOffset2; - private Int32 zeroOffset3; - private UInt16 firstHitUpdatePeriod; - private UInt16 firstHitShift; - private UInt16 firstHitPercent1; - private UInt16 firstHitPercent2; - private UInt16 firstHitPercent3; - private Int32 toFTempOffset1; - private Int32 toFTempOffset2; - private Int32 toFTempOffset3; - private UInt16 meterSize; + /// + /// The meter size code. + /// + public UInt16 MeterSize { get; set; } + + /// + /// Calibration factor of path 1. + /// + public UInt32 CalFactor1 { get; set; } - public UInt16 MeterSize { get => meterSize; set => meterSize = value; } - public UInt32 CalFactor1 { get => calFactor1; set => calFactor1 = value; } - public UInt32 CalFactor2 { get => calFactor2; set => calFactor2 = value; } - public UInt32 CalFactor3 { get => calFactor3; set => calFactor3 = value; } - public Int32 ZeroOffset1 { get => zeroOffset1; set => zeroOffset1 = value; } - public Int32 ZeroOffset2 { get => zeroOffset2; set => zeroOffset2 = value; } - public Int32 ZeroOffset3 { get => zeroOffset3; set => zeroOffset3 = value; } + /// + /// Calibration factor of path 2. + /// + public UInt32 CalFactor2 { get; set; } - public UInt16 FirstHitUpdatePeriod { get => firstHitUpdatePeriod; set => firstHitUpdatePeriod = value; } + /// + /// Calibration factor of path 3. + /// + public UInt32 CalFactor3 { get; set; } - public UInt16 FirstHitShift { get => firstHitShift; set => firstHitShift = value; } - public UInt16 FirstHitPercent1 { get => firstHitPercent1; set => firstHitPercent1 = value; } - public UInt16 FirstHitPercent2 { get => firstHitPercent2; set => firstHitPercent2 = value; } - public UInt16 FirstHitPercent3 { get => firstHitPercent3; set => firstHitPercent3 = value; } - public Int32 ToFTempOffset1 { get => toFTempOffset1; set => toFTempOffset1 = value; } - public Int32 ToFTempOffset2 { get => toFTempOffset2; set => toFTempOffset2 = value; } - public Int32 ToFTempOffset3 { get => toFTempOffset3; set => toFTempOffset3 = value; } + /// + /// Zero flow offset value of path 1. + /// + public Int32 ZeroOffset1 { get; set; } + + /// + /// Zero flow offset value of path 2. + /// + public Int32 ZeroOffset2 { get; set; } + + /// + /// Zero flow offset value of path 3. + /// + public Int32 ZeroOffset3 { get; set; } + + /// + /// First hit level update period. + /// + public UInt16 FirstHitUpdatePeriod { get; set; } + + /// + /// First hit level shift value. + /// + public UInt16 FirstHitShift { get; set; } + + /// + /// First hit level percentage of path 1. + /// + public UInt16 FirstHitPercent1 { get; set; } + + /// + /// First hit level percentage of path 2. + /// + public UInt16 FirstHitPercent2 { get; set; } + + /// + /// First hit level percentage of path 3. + /// + public UInt16 FirstHitPercent3 { get; set; } + + /// + /// Time of flight temperature offset of path 1. + /// + public Int32 ToFTempOffset1 { get; set; } + + /// + /// Time of flight temperature offset of path 2. + /// + public Int32 ToFTempOffset2 { get; set; } + + /// + /// Time of flight temperature offset of path 3. + /// + public Int32 ToFTempOffset3 { get; set; } + + /// + /// Time and date of this record. + /// public DateTimeOffset Date { get; set; } + + /// + /// Data base entry. + /// public Int32 DbId { get; set; } + /// + /// Dictionary of additional logging information. + /// public Dictionary AdditionalLogInfos; + /// + /// ctor. + /// public CalibrationResult() { AdditionalLogInfos = new Dictionary(); } - public CalibrationResult(UInt32 roCalFactor1, UInt32 roCalFactor2, UInt32 roCalFactor3, Int32 roZeroOffset1, Int32 roZeroOffset2, Int32 roZeroOffset3, UInt16 roFirstHitUpdatePeriod, UInt16 roFirstHitShift, UInt16 roFirstHitPercent1, UInt16 roFirstHitPercent2, UInt16 roFirstHitPercent3, Int32 roToFTempOffset1, Int32 roToFTempOffset2, Int32 roToFTempOffset3, UInt16 roMeterSize) + + /// + /// Calibration results + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public CalibrationResult(UInt32 roCalFactor1, UInt32 roCalFactor2, UInt32 roCalFactor3, + Int32 roZeroOffset1, Int32 roZeroOffset2, Int32 roZeroOffset3, + UInt16 roFirstHitUpdatePeriod, UInt16 roFirstHitShift, + UInt16 roFirstHitPercent1, UInt16 roFirstHitPercent2, UInt16 roFirstHitPercent3, + Int32 roToFTempOffset1, Int32 roToFTempOffset2, Int32 roToFTempOffset3, + UInt16 roMeterSize) { CalFactor1 = roCalFactor1; CalFactor2 = roCalFactor2; CalFactor3 = roCalFactor3; - ZeroOffset1 = roToFTempOffset1; - ZeroOffset2 = roToFTempOffset1; - ZeroOffset3 = roToFTempOffset1; + ZeroOffset1 = roZeroOffset1; + ZeroOffset2 = roZeroOffset2; + ZeroOffset3 = roZeroOffset3; FirstHitUpdatePeriod = roFirstHitUpdatePeriod; FirstHitShift = roFirstHitShift; FirstHitPercent1 = roFirstHitPercent1; FirstHitPercent2 = roFirstHitPercent2; FirstHitPercent3 = roFirstHitPercent3; ToFTempOffset1 = roToFTempOffset1; - ToFTempOffset2 = roToFTempOffset1; - ToFTempOffset3 = roToFTempOffset1; + ToFTempOffset2 = roToFTempOffset2; + ToFTempOffset3 = roToFTempOffset3; MeterSize = roMeterSize; AdditionalLogInfos = new Dictionary(); } - public void AddAditonlaLog(String key, String value) + /// + /// Additional logging information + /// + /// + /// + public void AddAdditionalLog(String key, String value) { if (AdditionalLogInfos.ContainsKey(key)) { - AdditionalLogInfos[key] = $"{ AdditionalLogInfos[key]} {System.Environment.NewLine} {value}"; + AdditionalLogInfos[key] = $"{ AdditionalLogInfos[key]} {Environment.NewLine} {value}"; } else { AdditionalLogInfos.Add(key, value); } - } - - - } } diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/CordonelMetrologyLut.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/CordonelMetrologyLut.cs index 119b8044..3562e730 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/CordonelMetrologyLut.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/CordonelMetrologyLut.cs @@ -1,27 +1,70 @@ -using System.Collections.Generic; +using System; namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Container for look-up-table (LUT) information, file assignment and content + /// public class CordonelMetrologyLut { - public int Id { get; set; } - public int FileId { get; set; } - public string FileName { get; set; } + /// + /// Data base primary key. + /// + public Int32 Id { get; set; } + + /// + /// File identification number of real LUT. + /// + public Int32 FileId { get; set; } + + /// + /// File name of LUT. + /// + public String FileName { get; set; } + + /// + /// Meter size code for LUT. + /// public MeterSize MeterSize { get; set; } - public string Region { get; set; } - public int FileCrc { get; set; } - public bool CurrentVerionForProd { get; set; } + + /// + /// Region for LUT. + /// + public String Region { get; set; } + + /// + /// CRC of LUT. + /// + public Int32 FileCrc { get; set; } + + /// + /// Marker of version for production, this is the actual selected version for this + /// meter size and region. + /// + public Boolean CurrentVersionForProd { get; set; } - public int DataLength { get; set; } + /// + /// Data length of LUT. + /// + public Int32 DataLength { get; set; } - public string Version { get; set; } - public byte[] FileContent { get; set; } + /// + /// Version of LUT. + /// + public String Version { get; set; } + + /// + /// Binary file content of LUT. + /// + public Byte[] FileContent { get; set; } - public override string ToString() + /// + /// Return the file name as string. + /// + /// + public override String ToString() { return FileName; } - - } } diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/MarriagePossibleEnum.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/MarriagePossibleEnum.cs index 42a25291..f8f51a71 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/MarriagePossibleEnum.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/MarriagePossibleEnum.cs @@ -1,19 +1,46 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Enumeration of marriage status. + /// [Flags] public enum MarriagePossibleEnum { + /// + /// Unmarried. + /// None = 1 << 0, + + /// + /// Marriage is possible. + /// Possible = 1 << 1, - NotPossibleDueAlredayMatch = 1 << 2, + + /// + /// Denied as it is already married. + /// + NotPossibleDueToAlreadyMarried = 1 << 2, + + /// + /// Denied as serial number is already in use. + /// NotPossibleDueSerialNumberBlocked = 1 << 3, - NotPossibleDuePcblocked = 1 << 4, + + /// + /// Denied as PCB is already in use. + /// + NotPossibleDuePcbLocked = 1 << 4, + + /// + /// Denied as PCB and order number mismatch. + /// PcbNotMatchingOrder = 1 << 5, + + /// + /// Error during marriage. + /// Error = 1 << 6, NotPossibleDueNoPressureTestFound = 1 << 7, NotPossibleDueNoHeTestFound = 1 << 8, diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/MeterSize.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/MeterSize.cs index 13436829..f5808ed7 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/MeterSize.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/MeterSize.cs @@ -1,34 +1,57 @@ -// ReSharper disable InconsistentNaming -namespace Logic.ProductionToProductMapper.Cordonel +namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Enumeration of meter sizes named as flow tube inner diameter, + /// DNx is for the metric system with the unit millimeters mm and + /// USx is for the imperial system with the unit inches inc or ". + /// + /// ATTENTION: + /// These values are sorted and duplicated in the data base, be + /// aware not to change the series! + /// + /// + /// public enum MeterSize { - DN40 = 0, + /// + /// Inner tube is 40 mm metric + /// + DN40 = 0, + DN50 = 1, + DN65 = 2, + DN80 = 3, + DN100 = 4, + DN125 = 5, + DN150 = 6, + DN200 = 7, + DN250 = 8, + DN300 = 9, + + /// + /// Inner tube is 1 1/2" imperial + /// + US1_5 = 10, + + /// + /// Inner tube is 2" imperial + /// + US2 = 11, + US3 = 12, + US4 = 13, + US6 = 14, + US8 = 15, + US10 = 16, + US12 = 17, - /* The diameters of all other sizes are taken from the meter size below: */ - DN50, /* e.g. 40mm flowtube */ - DN65, /* 50mm flowtube etc. */ - DN80, - DN100, - DN125, - DN150, - DN200, - DN250, - DN300, + /// + /// Undefined maximum value + /// + DNMAX, - /* The following are all US meter sizes in inches */ - US1_5, - US2, - US3, - US4, - US6, - US8, - US10, - US12, - - DNMAX, /* Used for range checking */ - - NAN + /// + /// Not assigned as list delimiter + /// + NA } } diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/PickingCompareItem.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/PickingCompareItem.cs index 23c897d8..c1ace792 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/PickingCompareItem.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/PickingCompareItem.cs @@ -1,12 +1,21 @@ using System; using System.Collections.Generic; -using System.Text; using Xylem.Common.Logic.ProductionOrderCore.OrderData; namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Picking check and process state. + /// public class PickingCompareItem { + /// + /// Ctor + /// + /// + /// + /// + /// public PickingCompareItem(UInt32 meterSize, UInt32 frequencyIndicator, Boolean pressurePresent, Dictionary checkAppsIdVersion) { MeterSize = meterSize; @@ -15,33 +24,73 @@ namespace Logic.ProductionToProductMapper.Cordonel CheckAppsIdVersion = checkAppsIdVersion; } - public UInt32 MeterSize { get; private set; } - public UInt32 FrequencyIndicator { get; private set; } - public Boolean PressurePresent { get; private set; } + /// + /// Meter size number. + /// + public UInt32 MeterSize { get; } + + /// + /// Frequency + /// + public UInt32 FrequencyIndicator { get; } + + /// + /// Pressure sensor attached. + /// + public Boolean PressurePresent { get; } - public Boolean PulseModule { get; private set; } + /// + /// Pulse module assembled. + /// + public Boolean PulseModule { get; set; } - public Dictionary CheckAppsIdVersion { get; private set; } + /// + /// Applications installed. + /// + public Dictionary CheckAppsIdVersion { get; } - public int StrLutFileId { get; private set; } + /// + /// LUT file identification. + /// + public Int32 StrLutFileId { get; set; } - public UInt16 Version { get; private set; } - public UInt16 FileCrc { get; private set; } - - //order overview - public UInt32 OrderCount { get; private set; } - public UInt32 OrderAssignedCount { get; private set; } - + /// + /// LUT version. + /// + public UInt16 LutVersion { get; set; } + + /// + /// LUT file CRC. + /// + public UInt16 LutFileCrc { get; set; } + /// + /// Order count of Cordonels. + /// + public UInt32 OrderCount { get; set; } + /// + /// Assigned Cordonels to order number. + /// + public UInt32 OrderAssignedCount { get; set; } } public class OrderOverViewCordonelWithPicking { + /// + /// Overview of Cordonels on assembly line tests + /// /// public OrderOverViewCordonel OrderOverViewCordonel { get; set; } + /// + /// + /// public PickingCompareItem PickingCompareItem { get; set; } + + /// + /// KITRON production data + /// public DateTime KitronProductionDate { get; set; } } } diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHisory.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHisory.cs deleted file mode 100644 index a4fbf102..00000000 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHisory.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; - -namespace Logic.ProductionToProductMapper.Cordonel -{ - public class RegisterHisory - { - public RegisterHisory(String pcbId, Byte[] address, Byte[] value, DateTimeOffset date) - { - PcbId = pcbId; - Address = address; - Value = value; - Date = date; - } - - public String PcbId { get; set; } - public Byte[] Address { get; set; } - public Byte[] Value { get; set; } - public DateTimeOffset Date { get; set; } - - } -} diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHistory.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHistory.cs new file mode 100644 index 00000000..593ded4c --- /dev/null +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/RegisterHistory.cs @@ -0,0 +1,45 @@ +using System; + +namespace Logic.ProductionToProductMapper.Cordonel +{ + /// + /// Register history monitor. + /// + public class RegisterHistory + { + /// + /// Ctor + /// + /// + /// + /// + /// + public RegisterHistory(String pcbId, Byte[] address, Byte[] value, DateTimeOffset date) + { + PcbId = pcbId; + Address = address; + Value = value; + Date = date; + } + + /// + /// PCB identification. + /// + public String PcbId { get; set; } + + /// + /// Register address. + /// + public Byte[] Address { get; set; } + + /// + /// Register value. + /// + public Byte[] Value { get; set; } + + /// + /// Time and date of this register value. + /// + public DateTimeOffset Date { get; set; } + } +} diff --git a/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs b/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs index 59655396..dcf7ed08 100644 --- a/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs +++ b/Common/Logic.PrdoctionToProductMapper/Cordonel/SkipProcess.cs @@ -2,17 +2,58 @@ namespace Logic.ProductionToProductMapper.Cordonel { + /// + /// Container for skipping several checks in the production steps being able to + /// have special editions, which do not follow the general rules. + /// public class SkipProcess { - public int Id { get; set; } - public int OrderNumber { get; set; } - public int PcbId { get; set; } - public bool SkipRadioParameters { get; set; } - public bool SkipFWCheck { get; set; } - public bool SkipBatteyCheck { get; set; } - public bool SkipLUT { get; set; } + /// + /// Data base primary key + /// + public Int32 Id { get; set; } + + /// + /// Order number + /// + public Int32 OrderNumber { get; set; } + + /// + /// Unique identification number of PCB + /// + public Int32 PcbId { get; set; } + + /// + /// Skip radio parameter check + /// + public Boolean SkipRadioParameters { get; set; } + + /// + /// Skip FW check. Normally the FW will be assigned to the latest released version + /// and taken from the data base. Here special versions can be used for FW tests. + /// + public Boolean SkipFWCheck { get; set; } + + /// + /// Skip the battery check, as the drained load may exceed the defined level. For + /// special devices, e.g. customer samples, which do not need the life time of + /// 20 years, this can be set. + /// + public Boolean SkipBatteyCheck { get; set; } + + /// + /// Skip the look-up-table installation as this device may be used for development. + /// + public Boolean SkipLUT { get; set; } + + /// + /// Date of assignment of these skipping-rules. + /// public DateTime Date { get; set; } - public string Name { get; set; } - + + /// + /// Author of assignment of these skipping-rules. + /// + public String Name { get; set; } } } diff --git a/Common/Logic.PrdoctionToProductMapper/Files/Fw/ClusteredFile.cs b/Common/Logic.PrdoctionToProductMapper/Files/Fw/ClusteredFile.cs index 4b1ce4a6..80876585 100644 --- a/Common/Logic.PrdoctionToProductMapper/Files/Fw/ClusteredFile.cs +++ b/Common/Logic.PrdoctionToProductMapper/Files/Fw/ClusteredFile.cs @@ -2,6 +2,9 @@ namespace Logic.ProductionToProductMapper.Files.Fw { + /// + /// Clustered file container + /// public class ClusteredFile { public Boolean IsSelected { get; set; } @@ -12,9 +15,13 @@ namespace Logic.ProductionToProductMapper.Files.Fw public Boolean FileIsForDeveloperOnly { get; set; } public Int32 FileCategoryID { get; set; } public Boolean FileIsDeleted { get; set; } + // ReSharper disable once InconsistentNaming public Int32? CordonelFwFile_id { get; set; } + // ReSharper disable once InconsistentNaming public Int32? CordonelFwFile_FileClusterStoreId { get; set; } + // ReSharper disable once InconsistentNaming public Int32? CordonelFwFile_Dn { get; set; } + // ReSharper disable once InconsistentNaming public Int32? CordonelFwFile_Type { get; set; } } diff --git a/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj b/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj index f06d5947..a53ecaa7 100644 --- a/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj +++ b/Common/Logic.PrdoctionToProductMapper/Logic.ProductionToProductMapper.csproj @@ -77,7 +77,7 @@ - + diff --git a/Common/Logic/ProductionOrderCore/Csd/CsdParameterResult.cs b/Common/Logic/ProductionOrderCore/Csd/CsdParameterResult.cs index 3480c8e8..b7212a1e 100644 --- a/Common/Logic/ProductionOrderCore/Csd/CsdParameterResult.cs +++ b/Common/Logic/ProductionOrderCore/Csd/CsdParameterResult.cs @@ -1,23 +1,56 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.Csd { + /// + /// Container for customer specific document - CSD which represents + /// the customer requirements for the final setup of the Cordonel. + /// public class CsdParameterResult { - public int Lvl { get; set; } - public bool IsValid { get; set; } - public int SourceCsdId { get; set; } - public int SourceProductId { get; set; } - public int SourceGroupId { get; set; } - - public int Id { get; set; } - public string Name { get; set; } - public string ValueText { get; set; } - public byte[] Value { get; set; } + /// + /// Level + /// + public Int32 Lvl { get; set; } + + /// + /// Setting is valid + /// + public Boolean IsValid { get; set; } + + /// + /// CSD source identifier + /// + public Int32 SourceCsdId { get; set; } + + /// + /// CSD product identifier + /// + public Int32 SourceProductId { get; set; } + + /// + /// CSD source group identifier + /// + public Int32 SourceGroupId { get; set; } + /// + /// CSD entry identifier for a specific setting + /// + public Int32 Id { get; set; } + + /// + /// CSD entry name + /// + public String Name { get; set; } + + /// + /// CSD value as text + /// + public String ValueText { get; set; } + + /// + /// CSD value + /// + public Byte[] Value { get; set; } } - } diff --git a/Common/Logic/ProductionOrderCore/FW/CordonelFWTypeEnum.cs b/Common/Logic/ProductionOrderCore/FW/CordonelFWTypeEnum.cs index 217feb07..803b1955 100644 --- a/Common/Logic/ProductionOrderCore/FW/CordonelFWTypeEnum.cs +++ b/Common/Logic/ProductionOrderCore/FW/CordonelFWTypeEnum.cs @@ -1,10 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Xylem.Common.Logic.ProductionOrderCore.FW +namespace Xylem.Common.Logic.ProductionOrderCore.FW { + /// + /// Enumeration for FW type as combination of region and radio frequency + /// public enum CordonelFWTypeEnum { EMEA_433, diff --git a/Common/Logic/ProductionOrderCore/File/BaseFile.cs b/Common/Logic/ProductionOrderCore/File/BaseFile.cs index 9e059b48..6bce0c70 100644 --- a/Common/Logic/ProductionOrderCore/File/BaseFile.cs +++ b/Common/Logic/ProductionOrderCore/File/BaseFile.cs @@ -1,17 +1,41 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.File { - public class BaseFile + /// + /// File base class + /// + public class BaseFile { - public int? FileId { get; set; } - public string FileName { get; set; } - public string FileContent { get; set; } + /// + /// Optional file identifier + /// + public Int32? FileId { get; set; } + + /// + /// File name + /// + public String FileName { get; set; } + + /// + /// File content as string + /// + public String FileContent { get; set; } + + /// + /// Optional file creation date + /// public DateTimeOffset? UploadDate { get; set; } - public bool? IsLatest { get; set; } - public bool? ForDeveloper { get; set; } + + /// + /// Marker for latest file, is important if several files have an identical name + /// and different versions. + /// + public Boolean? IsLatest { get; set; } + + /// + /// Special file for development which will not be used for production. + /// + public Boolean? ForDeveloper { get; set; } } } diff --git a/Common/Logic/ProductionOrderCore/IProductionData.cs b/Common/Logic/ProductionOrderCore/IProductionData.cs index 504fd651..d5ce5b6b 100644 --- a/Common/Logic/ProductionOrderCore/IProductionData.cs +++ b/Common/Logic/ProductionOrderCore/IProductionData.cs @@ -1,4 +1,5 @@ -namespace Xylem.Common.Logic.ProductionOrderCore +// ReSharper disable once EmptyNamespace +namespace Xylem.Common.Logic.ProductionOrderCore { //public abstract class BaseOrder diff --git a/Common/Logic/ProductionOrderCore/KitronTestResults/JsonObject.cs b/Common/Logic/ProductionOrderCore/KitronTestResults/JsonObject.cs index f6cf5b3c..abe11ae6 100644 --- a/Common/Logic/ProductionOrderCore/KitronTestResults/JsonObject.cs +++ b/Common/Logic/ProductionOrderCore/KitronTestResults/JsonObject.cs @@ -1,1221 +1,1218 @@ using Newtonsoft.Json; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults { // Root myDeserializedClass = JsonConvert.DeserializeObject(myJsonResponse); public class JsonObject { - public string GUIDKey { get; set; } - public string TestPlace { get; set; } - public string MaterialNumber { get; set; } - public string PanelBarcode { get; set; } - public string ProductionInfo { get; set; } - public string StartDT { get; set; } - public string TestDuration { get; set; } - public string TestResult { get; set; } + public String GUIDKey { get; set; } + public String TestPlace { get; set; } + public String MaterialNumber { get; set; } + public String PanelBarcode { get; set; } + public String ProductionInfo { get; set; } + public String StartDT { get; set; } + public String TestDuration { get; set; } + public String TestResult { get; set; } [JsonProperty("Read Barcode")] - public string ReadBarcode { get; set; } + public String ReadBarcode { get; set; } [JsonProperty("Flash Firmware")] - public string FlashFirmware { get; set; } - public string AttachmentFile { get; set; } + public String FlashFirmware { get; set; } + public String AttachmentFile { get; set; } [JsonProperty("RFCalibration PCB SET FRQ OFFSET 0 Loop_1")] - public string RFCalibrationPCBSETFRQOFFSET0Loop1 { get; set; } + public String RFCalibrationPCBSETFRQOFFSET0Loop1 { get; set; } [JsonProperty("RFCalibration PCB Set Antenna Matching Reference Loop_1")] - public string RFCalibrationPCBSetAntennaMatchingReferenceLoop1 { get; set; } + public String RFCalibrationPCBSetAntennaMatchingReferenceLoop1 { get; set; } [JsonProperty("RFCalibration PCB Send CW PowerLevel Loop_1")] - public string RFCalibrationPCBSendCWPowerLevelLoop1 { get; set; } + public String RFCalibrationPCBSendCWPowerLevelLoop1 { get; set; } [JsonProperty("RFCalibration Measure LVCC ")] - public string RFCalibrationMeasureLVCC { get; set; } + public String RFCalibrationMeasureLVCC { get; set; } [JsonProperty("LVCC Units")] - public string LVCCUnits { get; set; } + public String LVCCUnits { get; set; } [JsonProperty("LVCC LowerLimit")] - public string LVCCLowerLimit { get; set; } + public String LVCCLowerLimit { get; set; } [JsonProperty("LVCC UpperLimit")] - public string LVCCUpperLimit { get; set; } + public String LVCCUpperLimit { get; set; } [JsonProperty("RFCalibration Measure TCXO")] - public string RFCalibrationMeasureTCXO { get; set; } + public String RFCalibrationMeasureTCXO { get; set; } [JsonProperty("TCXO Units")] - public string TCXOUnits { get; set; } + public String TCXOUnits { get; set; } [JsonProperty("TCXO LowerLimit")] - public string TCXOLowerLimit { get; set; } + public String TCXOLowerLimit { get; set; } [JsonProperty("TCXO UpperLimit")] - public string TCXOUpperLimit { get; set; } + public String TCXOUpperLimit { get; set; } [JsonProperty("RFCalibration Measure RFVCC")] - public string RFCalibrationMeasureRFVCC { get; set; } + public String RFCalibrationMeasureRFVCC { get; set; } [JsonProperty("RFVCC Units")] - public string RFVCCUnits { get; set; } + public String RFVCCUnits { get; set; } [JsonProperty("RFVCC LowerLimit")] - public string RFVCCLowerLimit { get; set; } + public String RFVCCLowerLimit { get; set; } [JsonProperty("RFVCC UpperLimit")] - public string RFVCCUpperLimit { get; set; } + public String RFVCCUpperLimit { get; set; } [JsonProperty("RFCalibration Calculate Freq Differenz Loop_1")] - public string RFCalibrationCalculateFreqDifferenzLoop1 { get; set; } + public String RFCalibrationCalculateFreqDifferenzLoop1 { get; set; } [JsonProperty("Freq Diff Units Loop_1")] - public string FreqDiffUnitsLoop1 { get; set; } + public String FreqDiffUnitsLoop1 { get; set; } [JsonProperty("Freq Diff LowerLimit Loop_1")] - public string FreqDiffLowerLimitLoop1 { get; set; } + public String FreqDiffLowerLimitLoop1 { get; set; } [JsonProperty("Freq Diff UpperLimit Loop_1")] - public string FreqDiffUpperLimitLoop1 { get; set; } + public String FreqDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFCalibration PCB Send Set Frq Offset Loop_1")] - public string RFCalibrationPCBSendSetFrqOffsetLoop1 { get; set; } + public String RFCalibrationPCBSendSetFrqOffsetLoop1 { get; set; } [JsonProperty("RFCalibration Calculate Current Differenz Loop_1")] - public string RFCalibrationCalculateCurrentDifferenzLoop1 { get; set; } + public String RFCalibrationCalculateCurrentDifferenzLoop1 { get; set; } [JsonProperty("Current Diff Reference Loop_1")] - public string CurrentDiffReferenceLoop1 { get; set; } + public String CurrentDiffReferenceLoop1 { get; set; } [JsonProperty("Current Diff Units Loop_1")] - public string CurrentDiffUnitsLoop1 { get; set; } + public String CurrentDiffUnitsLoop1 { get; set; } [JsonProperty("Current Diff LowerLimit Loop_1")] - public string CurrentDiffLowerLimitLoop1 { get; set; } + public String CurrentDiffLowerLimitLoop1 { get; set; } [JsonProperty("Current Diff UpperLimit Loop_1")] - public string CurrentDiffUpperLimitLoop1 { get; set; } + public String CurrentDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFCalibration Calculate Power Differenz Loop_1")] - public string RFCalibrationCalculatePowerDifferenzLoop1 { get; set; } + public String RFCalibrationCalculatePowerDifferenzLoop1 { get; set; } [JsonProperty("Power Diff Reference Loop_1")] - public string PowerDiffReferenceLoop1 { get; set; } + public String PowerDiffReferenceLoop1 { get; set; } [JsonProperty("Power Diff Units Loop_1")] - public string PowerDiffUnitsLoop1 { get; set; } + public String PowerDiffUnitsLoop1 { get; set; } [JsonProperty("Power Diff LowerLimit Loop_1")] - public string PowerDiffLowerLimitLoop1 { get; set; } + public String PowerDiffLowerLimitLoop1 { get; set; } [JsonProperty("Power Diff UpperLimit Loop_1")] - public string PowerDiffUpperLimitLoop1 { get; set; } + public String PowerDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFCalibration Calculate Power Level Loop_1")] - public string RFCalibrationCalculatePowerLevelLoop1 { get; set; } + public String RFCalibrationCalculatePowerLevelLoop1 { get; set; } [JsonProperty("Power Level Units Loop_1")] - public string PowerLevelUnitsLoop1 { get; set; } + public String PowerLevelUnitsLoop1 { get; set; } [JsonProperty("Power Level LowerLimit Loop_1")] - public string PowerLevelLowerLimitLoop1 { get; set; } + public String PowerLevelLowerLimitLoop1 { get; set; } [JsonProperty("Power Level UpperLimit Loop_1")] - public string PowerLevelUpperLimitLoop1 { get; set; } + public String PowerLevelUpperLimitLoop1 { get; set; } [JsonProperty("RFCalibration PCB Set Antenna Matching Calculated Loop_1")] - public string RFCalibrationPCBSetAntennaMatchingCalculatedLoop1 { get; set; } + public String RFCalibrationPCBSetAntennaMatchingCalculatedLoop1 { get; set; } [JsonProperty("RFReMeasure Calculate Freq Differenz Loop_1")] - public string RFReMeasureCalculateFreqDifferenzLoop1 { get; set; } + public String RFReMeasureCalculateFreqDifferenzLoop1 { get; set; } [JsonProperty("Calculate Freq Diff Units Loop_1")] - public string CalculateFreqDiffUnitsLoop1 { get; set; } + public String CalculateFreqDiffUnitsLoop1 { get; set; } [JsonProperty("Calculate Freq Diff LowerLimit Loop_1")] - public string CalculateFreqDiffLowerLimitLoop1 { get; set; } + public String CalculateFreqDiffLowerLimitLoop1 { get; set; } [JsonProperty("Calculate Freq Diff UpperLimit Loop_1")] - public string CalculateFreqDiffUpperLimitLoop1 { get; set; } + public String CalculateFreqDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFReMeasure Calculate Current Differenz Loop_1")] - public string RFReMeasureCalculateCurrentDifferenzLoop1 { get; set; } + public String RFReMeasureCalculateCurrentDifferenzLoop1 { get; set; } [JsonProperty("Calculate Current Diff Reference Loop_1")] - public string CalculateCurrentDiffReferenceLoop1 { get; set; } + public String CalculateCurrentDiffReferenceLoop1 { get; set; } [JsonProperty("Calculate Current Diff Units Loop_1")] - public string CalculateCurrentDiffUnitsLoop1 { get; set; } + public String CalculateCurrentDiffUnitsLoop1 { get; set; } [JsonProperty("Calculate Current Diff LowerLimit Loop_1")] - public string CalculateCurrentDiffLowerLimitLoop1 { get; set; } + public String CalculateCurrentDiffLowerLimitLoop1 { get; set; } [JsonProperty("Calculate Current Diff UpperLimit Loop_1")] - public string CalculateCurrentDiffUpperLimitLoop1 { get; set; } + public String CalculateCurrentDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFReMeasure Calculate Power Differenz Loop_1")] - public string RFReMeasureCalculatePowerDifferenzLoop1 { get; set; } + public String RFReMeasureCalculatePowerDifferenzLoop1 { get; set; } [JsonProperty("Calculate Power Diff Reference Loop_1")] - public string CalculatePowerDiffReferenceLoop1 { get; set; } + public String CalculatePowerDiffReferenceLoop1 { get; set; } [JsonProperty("Calculate Power Diff Units Loop_1")] - public string CalculatePowerDiffUnitsLoop1 { get; set; } + public String CalculatePowerDiffUnitsLoop1 { get; set; } [JsonProperty("Calculate Power Diff LowerLimit Loop_1")] - public string CalculatePowerDiffLowerLimitLoop1 { get; set; } + public String CalculatePowerDiffLowerLimitLoop1 { get; set; } [JsonProperty("Calculate Power Diff UpperLimit Loop_1")] - public string CalculatePowerDiffUpperLimitLoop1 { get; set; } + public String CalculatePowerDiffUpperLimitLoop1 { get; set; } [JsonProperty("RFReceiveBER PCB Receive NumTelegrams")] - public string RFReceiveBERPCBReceiveNumTelegrams { get; set; } + public String RFReceiveBERPCBReceiveNumTelegrams { get; set; } [JsonProperty("Receive NumTel Units")] - public string ReceiveNumTelUnits { get; set; } + public String ReceiveNumTelUnits { get; set; } [JsonProperty("Receive NumTel LowerLimit")] - public string ReceiveNumTelLowerLimit { get; set; } + public String ReceiveNumTelLowerLimit { get; set; } [JsonProperty("Receive NumTel UpperLimit")] - public string ReceiveNumTelUpperLimit { get; set; } + public String ReceiveNumTelUpperLimit { get; set; } [JsonProperty("RFReceiveBER PCB RSSI LevelSumme")] - public string RFReceiveBERPCBRSSILevelSumme { get; set; } + public String RFReceiveBERPCBRSSILevelSumme { get; set; } [JsonProperty("RSSI LevelSum Units")] - public string RSSILevelSumUnits { get; set; } + public String RSSILevelSumUnits { get; set; } [JsonProperty("RSSI LevelSum LowerLimit")] - public string RSSILevelSumLowerLimit { get; set; } + public String RSSILevelSumLowerLimit { get; set; } [JsonProperty("RSSI LevelSum UpperLimit")] - public string RSSILevelSumUpperLimit { get; set; } + public String RSSILevelSumUpperLimit { get; set; } [JsonProperty("RFCalibration PCB Set Antenna Matching Reference Loop_2")] - public string RFCalibrationPCBSetAntennaMatchingReferenceLoop2 { get; set; } + public String RFCalibrationPCBSetAntennaMatchingReferenceLoop2 { get; set; } [JsonProperty("RFCalibration PCB Send CW PowerLevel Loop_2")] - public string RFCalibrationPCBSendCWPowerLevelLoop2 { get; set; } + public String RFCalibrationPCBSendCWPowerLevelLoop2 { get; set; } [JsonProperty("RFCalibration Calculate Freq Differenz Loop_2")] - public string RFCalibrationCalculateFreqDifferenzLoop2 { get; set; } + public String RFCalibrationCalculateFreqDifferenzLoop2 { get; set; } [JsonProperty("Freq Diff Units Loop_2")] - public string FreqDiffUnitsLoop2 { get; set; } + public String FreqDiffUnitsLoop2 { get; set; } [JsonProperty("Freq Diff LowerLimit Loop_2")] - public string FreqDiffLowerLimitLoop2 { get; set; } + public String FreqDiffLowerLimitLoop2 { get; set; } [JsonProperty("Freq Diff UpperLimit Loop_2")] - public string FreqDiffUpperLimitLoop2 { get; set; } + public String FreqDiffUpperLimitLoop2 { get; set; } [JsonProperty("RFCalibration PCB Send Set Frq Offset Loop_2")] - public string RFCalibrationPCBSendSetFrqOffsetLoop2 { get; set; } + public String RFCalibrationPCBSendSetFrqOffsetLoop2 { get; set; } [JsonProperty("RFCalibration Calculate Current Differenz Loop_2")] - public string RFCalibrationCalculateCurrentDifferenzLoop2 { get; set; } + public String RFCalibrationCalculateCurrentDifferenzLoop2 { get; set; } [JsonProperty("Current Diff Reference Loop_2")] - public string CurrentDiffReferenceLoop2 { get; set; } + public String CurrentDiffReferenceLoop2 { get; set; } [JsonProperty("Current Diff Units Loop_2")] - public string CurrentDiffUnitsLoop2 { get; set; } + public String CurrentDiffUnitsLoop2 { get; set; } [JsonProperty("Current Diff LowerLimit Loop_2")] - public string CurrentDiffLowerLimitLoop2 { get; set; } + public String CurrentDiffLowerLimitLoop2 { get; set; } [JsonProperty("Current Diff UpperLimit Loop_2")] - public string CurrentDiffUpperLimitLoop2 { get; set; } + public String CurrentDiffUpperLimitLoop2 { get; set; } [JsonProperty("RFCalibration Calculate Power Differenz Loop_2")] - public string RFCalibrationCalculatePowerDifferenzLoop2 { get; set; } + public String RFCalibrationCalculatePowerDifferenzLoop2 { get; set; } [JsonProperty("Power Diff Reference Loop_2")] - public string PowerDiffReferenceLoop2 { get; set; } + public String PowerDiffReferenceLoop2 { get; set; } [JsonProperty("Power Diff Units Loop_2")] - public string PowerDiffUnitsLoop2 { get; set; } + public String PowerDiffUnitsLoop2 { get; set; } [JsonProperty("Power Diff LowerLimit Loop_2")] - public string PowerDiffLowerLimitLoop2 { get; set; } + public String PowerDiffLowerLimitLoop2 { get; set; } [JsonProperty("Power Diff UpperLimit Loop_2")] - public string PowerDiffUpperLimitLoop2 { get; set; } + public String PowerDiffUpperLimitLoop2 { get; set; } [JsonProperty("RFCalibration Calculate Power Level Loop_2")] - public string RFCalibrationCalculatePowerLevelLoop2 { get; set; } + public String RFCalibrationCalculatePowerLevelLoop2 { get; set; } [JsonProperty("Power Level Units Loop_2")] - public string PowerLevelUnitsLoop2 { get; set; } + public String PowerLevelUnitsLoop2 { get; set; } [JsonProperty("Power Level LowerLimit Loop_2")] - public string PowerLevelLowerLimitLoop2 { get; set; } + public String PowerLevelLowerLimitLoop2 { get; set; } [JsonProperty("Power Level UpperLimit Loop_2")] - public string PowerLevelUpperLimitLoop2 { get; set; } + public String PowerLevelUpperLimitLoop2 { get; set; } [JsonProperty("RFCalibration PCB Set Antenna Matching Calculated Loop_2")] - public string RFCalibrationPCBSetAntennaMatchingCalculatedLoop2 { get; set; } + public String RFCalibrationPCBSetAntennaMatchingCalculatedLoop2 { get; set; } [JsonProperty("RFReMeasure Calculate Current Differenz Loop_2")] - public string RFReMeasureCalculateCurrentDifferenzLoop2 { get; set; } + public String RFReMeasureCalculateCurrentDifferenzLoop2 { get; set; } [JsonProperty("Calculate Current Diff Reference Loop_2")] - public string CalculateCurrentDiffReferenceLoop2 { get; set; } + public String CalculateCurrentDiffReferenceLoop2 { get; set; } [JsonProperty("Calculate Current Diff Units Loop_2")] - public string CalculateCurrentDiffUnitsLoop2 { get; set; } + public String CalculateCurrentDiffUnitsLoop2 { get; set; } [JsonProperty("Calculate Current Diff LowerLimit Loop_2")] - public string CalculateCurrentDiffLowerLimitLoop2 { get; set; } + public String CalculateCurrentDiffLowerLimitLoop2 { get; set; } [JsonProperty("Calculate Current Diff UpperLimit Loop_2")] - public string CalculateCurrentDiffUpperLimitLoop2 { get; set; } + public String CalculateCurrentDiffUpperLimitLoop2 { get; set; } [JsonProperty("RFReMeasure Calculate Power Differenz Loop_2")] - public string RFReMeasureCalculatePowerDifferenzLoop2 { get; set; } + public String RFReMeasureCalculatePowerDifferenzLoop2 { get; set; } [JsonProperty("Calculate Power Diff Reference Loop_2")] - public string CalculatePowerDiffReferenceLoop2 { get; set; } + public String CalculatePowerDiffReferenceLoop2 { get; set; } [JsonProperty("Calculate Power Diff Units Loop_2")] - public string CalculatePowerDiffUnitsLoop2 { get; set; } + public String CalculatePowerDiffUnitsLoop2 { get; set; } [JsonProperty("Calculate Power Diff LowerLimit Loop_2")] - public string CalculatePowerDiffLowerLimitLoop2 { get; set; } + public String CalculatePowerDiffLowerLimitLoop2 { get; set; } [JsonProperty("Calculate Power Diff UpperLimit Loop_2")] - public string CalculatePowerDiffUpperLimitLoop2 { get; set; } + public String CalculatePowerDiffUpperLimitLoop2 { get; set; } [JsonProperty("Measure Current Avg")] - public string MeasureCurrentAvg { get; set; } + public String MeasureCurrentAvg { get; set; } [JsonProperty("Current Avg Units")] - public string CurrentAvgUnits { get; set; } + public String CurrentAvgUnits { get; set; } [JsonProperty("Current Avg LowerLimit")] - public string CurrentAvgLowerLimit { get; set; } + public String CurrentAvgLowerLimit { get; set; } [JsonProperty("Current Avg UpperLimit")] - public string CurrentAvgUpperLimit { get; set; } + public String CurrentAvgUpperLimit { get; set; } [JsonProperty("Measure Current Min")] - public string MeasureCurrentMin { get; set; } + public String MeasureCurrentMin { get; set; } [JsonProperty("Current Min Units")] - public string CurrentMinUnits { get; set; } + public String CurrentMinUnits { get; set; } [JsonProperty("Current Min LowerLimit")] - public string CurrentMinLowerLimit { get; set; } + public String CurrentMinLowerLimit { get; set; } [JsonProperty("Current MinUpperLimit")] - public string CurrentMinUpperLimit { get; set; } + public String CurrentMinUpperLimit { get; set; } [JsonProperty("ResultCalibration Loop_1")] - public string ResultCalibrationLoop1 { get; set; } + public String ResultCalibrationLoop1 { get; set; } [JsonProperty("LengthCode Loop_1")] - public string LengthCodeLoop1 { get; set; } + public String LengthCodeLoop1 { get; set; } [JsonProperty("RunCalibrate Loop_1")] - public string RunCalibrateLoop1 { get; set; } + public String RunCalibrateLoop1 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_1")] - public string RFCalibrationCurrentLoop1 { get; set; } + public String RFCalibrationCurrentLoop1 { get; set; } [JsonProperty("RFCalibrationPower Loop_1")] - public string RFCalibrationPowerLoop1 { get; set; } + public String RFCalibrationPowerLoop1 { get; set; } [JsonProperty("PowerlevelReference Loop_1")] - public string PowerlevelReferenceLoop1 { get; set; } + public String PowerlevelReferenceLoop1 { get; set; } [JsonProperty("PowerLevelCalculated Loop_1")] - public string PowerLevelCalculatedLoop1 { get; set; } + public String PowerLevelCalculatedLoop1 { get; set; } [JsonProperty("AntennaMatching Loop_1")] - public string AntennaMatchingLoop1 { get; set; } + public String AntennaMatchingLoop1 { get; set; } [JsonProperty("LookupTableCSV Loop_1")] - public string LookupTableCSVLoop1 { get; set; } + public String LookupTableCSVLoop1 { get; set; } [JsonProperty("RunRemeasure Loop_1")] - public string RunRemeasureLoop1 { get; set; } + public String RunRemeasureLoop1 { get; set; } [JsonProperty("ResultRFRemeasure Loop_1")] - public string ResultRFRemeasureLoop1 { get; set; } + public String ResultRFRemeasureLoop1 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_1")] - public string RFRemeasureCurrentLoop1 { get; set; } + public String RFRemeasureCurrentLoop1 { get; set; } [JsonProperty("RFRemeasurePower Loop_1")] - public string RFRemeasurePowerLoop1 { get; set; } + public String RFRemeasurePowerLoop1 { get; set; } [JsonProperty("ResultCalibration Loop_2")] - public string ResultCalibrationLoop2 { get; set; } + public String ResultCalibrationLoop2 { get; set; } [JsonProperty("LengthCode Loop_2")] - public string LengthCodeLoop2 { get; set; } + public String LengthCodeLoop2 { get; set; } [JsonProperty("RunCalibrate Loop_2")] - public string RunCalibrateLoop2 { get; set; } + public String RunCalibrateLoop2 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_2")] - public string RFCalibrationCurrentLoop2 { get; set; } + public String RFCalibrationCurrentLoop2 { get; set; } [JsonProperty("RFCalibrationPower Loop_2")] - public string RFCalibrationPowerLoop2 { get; set; } + public String RFCalibrationPowerLoop2 { get; set; } [JsonProperty("PowerlevelReference Loop_2")] - public string PowerlevelReferenceLoop2 { get; set; } + public String PowerlevelReferenceLoop2 { get; set; } [JsonProperty("PowerLevelCalculated Loop_2")] - public string PowerLevelCalculatedLoop2 { get; set; } + public String PowerLevelCalculatedLoop2 { get; set; } [JsonProperty("AntennaMatching Loop_2")] - public string AntennaMatchingLoop2 { get; set; } + public String AntennaMatchingLoop2 { get; set; } [JsonProperty("LookupTableCSV Loop_2")] - public string LookupTableCSVLoop2 { get; set; } + public String LookupTableCSVLoop2 { get; set; } [JsonProperty("RunRemeasure Loop_2")] - public string RunRemeasureLoop2 { get; set; } + public String RunRemeasureLoop2 { get; set; } [JsonProperty("ResultRFRemeasure Loop_2")] - public string ResultRFRemeasureLoop2 { get; set; } + public String ResultRFRemeasureLoop2 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_2")] - public string RFRemeasureCurrentLoop2 { get; set; } + public String RFRemeasureCurrentLoop2 { get; set; } [JsonProperty("RFRemeasurePower Loop_2")] - public string RFRemeasurePowerLoop2 { get; set; } + public String RFRemeasurePowerLoop2 { get; set; } [JsonProperty("ResultCalibration Loop_3")] - public string ResultCalibrationLoop3 { get; set; } + public String ResultCalibrationLoop3 { get; set; } [JsonProperty("LengthCode Loop_3")] - public string LengthCodeLoop3 { get; set; } + public String LengthCodeLoop3 { get; set; } [JsonProperty("RunCalibrate Loop_3")] - public string RunCalibrateLoop3 { get; set; } + public String RunCalibrateLoop3 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_3")] - public string RFCalibrationCurrentLoop3 { get; set; } + public String RFCalibrationCurrentLoop3 { get; set; } [JsonProperty("RFCalibrationPower Loop_3")] - public string RFCalibrationPowerLoop3 { get; set; } + public String RFCalibrationPowerLoop3 { get; set; } [JsonProperty("PowerlevelReference Loop_3")] - public string PowerlevelReferenceLoop3 { get; set; } + public String PowerlevelReferenceLoop3 { get; set; } [JsonProperty("PowerLevelCalculated Loop_3")] - public string PowerLevelCalculatedLoop3 { get; set; } + public String PowerLevelCalculatedLoop3 { get; set; } [JsonProperty("AntennaMatching Loop_3")] - public string AntennaMatchingLoop3 { get; set; } + public String AntennaMatchingLoop3 { get; set; } [JsonProperty("LookupTableCSV Loop_3")] - public string LookupTableCSVLoop3 { get; set; } + public String LookupTableCSVLoop3 { get; set; } [JsonProperty("RunRemeasure Loop_3")] - public string RunRemeasureLoop3 { get; set; } + public String RunRemeasureLoop3 { get; set; } [JsonProperty("ResultRFRemeasure Loop_3")] - public string ResultRFRemeasureLoop3 { get; set; } + public String ResultRFRemeasureLoop3 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_3")] - public string RFRemeasureCurrentLoop3 { get; set; } + public String RFRemeasureCurrentLoop3 { get; set; } [JsonProperty("RFRemeasurePower Loop_3")] - public string RFRemeasurePowerLoop3 { get; set; } + public String RFRemeasurePowerLoop3 { get; set; } [JsonProperty("ResultCalibration Loop_4")] - public string ResultCalibrationLoop4 { get; set; } + public String ResultCalibrationLoop4 { get; set; } [JsonProperty("LengthCode Loop_4")] - public string LengthCodeLoop4 { get; set; } + public String LengthCodeLoop4 { get; set; } [JsonProperty("RunCalibrate Loop_4")] - public string RunCalibrateLoop4 { get; set; } + public String RunCalibrateLoop4 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_4")] - public string RFCalibrationCurrentLoop4 { get; set; } + public String RFCalibrationCurrentLoop4 { get; set; } [JsonProperty("RFCalibrationPower Loop_4")] - public string RFCalibrationPowerLoop4 { get; set; } + public String RFCalibrationPowerLoop4 { get; set; } [JsonProperty("PowerlevelReference Loop_4")] - public string PowerlevelReferenceLoop4 { get; set; } + public String PowerlevelReferenceLoop4 { get; set; } [JsonProperty("PowerLevelCalculated Loop_4")] - public string PowerLevelCalculatedLoop4 { get; set; } + public String PowerLevelCalculatedLoop4 { get; set; } [JsonProperty("AntennaMatching Loop_4")] - public string AntennaMatchingLoop4 { get; set; } + public String AntennaMatchingLoop4 { get; set; } [JsonProperty("LookupTableCSV Loop_4")] - public string LookupTableCSVLoop4 { get; set; } + public String LookupTableCSVLoop4 { get; set; } [JsonProperty("RunRemeasure Loop_4")] - public string RunRemeasureLoop4 { get; set; } + public String RunRemeasureLoop4 { get; set; } [JsonProperty("ResultRFRemeasure Loop_4")] - public string ResultRFRemeasureLoop4 { get; set; } + public String ResultRFRemeasureLoop4 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_4")] - public string RFRemeasureCurrentLoop4 { get; set; } + public String RFRemeasureCurrentLoop4 { get; set; } [JsonProperty("RFRemeasurePower Loop_4")] - public string RFRemeasurePowerLoop4 { get; set; } + public String RFRemeasurePowerLoop4 { get; set; } [JsonProperty("ResultCalibration Loop_5")] - public string ResultCalibrationLoop5 { get; set; } + public String ResultCalibrationLoop5 { get; set; } [JsonProperty("LengthCode Loop_5")] - public string LengthCodeLoop5 { get; set; } + public String LengthCodeLoop5 { get; set; } [JsonProperty("RunCalibrate Loop_5")] - public string RunCalibrateLoop5 { get; set; } + public String RunCalibrateLoop5 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_5")] - public string RFCalibrationCurrentLoop5 { get; set; } + public String RFCalibrationCurrentLoop5 { get; set; } [JsonProperty("RFCalibrationPower Loop_5")] - public string RFCalibrationPowerLoop5 { get; set; } + public String RFCalibrationPowerLoop5 { get; set; } [JsonProperty("PowerlevelReference Loop_5")] - public string PowerlevelReferenceLoop5 { get; set; } + public String PowerlevelReferenceLoop5 { get; set; } [JsonProperty("PowerLevelCalculated Loop_5")] - public string PowerLevelCalculatedLoop5 { get; set; } + public String PowerLevelCalculatedLoop5 { get; set; } [JsonProperty("AntennaMatching Loop_5")] - public string AntennaMatchingLoop5 { get; set; } + public String AntennaMatchingLoop5 { get; set; } [JsonProperty("LookupTableCSV Loop_5")] - public string LookupTableCSVLoop5 { get; set; } + public String LookupTableCSVLoop5 { get; set; } [JsonProperty("RunRemeasure Loop_5")] - public string RunRemeasureLoop5 { get; set; } + public String RunRemeasureLoop5 { get; set; } [JsonProperty("ResultRFRemeasure Loop_5")] - public string ResultRFRemeasureLoop5 { get; set; } + public String ResultRFRemeasureLoop5 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_5")] - public string RFRemeasureCurrentLoop5 { get; set; } + public String RFRemeasureCurrentLoop5 { get; set; } [JsonProperty("RFRemeasurePower Loop_5")] - public string RFRemeasurePowerLoop5 { get; set; } + public String RFRemeasurePowerLoop5 { get; set; } [JsonProperty("ResultCalibration Loop_6")] - public string ResultCalibrationLoop6 { get; set; } + public String ResultCalibrationLoop6 { get; set; } [JsonProperty("LengthCode Loop_6")] - public string LengthCodeLoop6 { get; set; } + public String LengthCodeLoop6 { get; set; } [JsonProperty("RunCalibrate Loop_6")] - public string RunCalibrateLoop6 { get; set; } + public String RunCalibrateLoop6 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_6")] - public string RFCalibrationCurrentLoop6 { get; set; } + public String RFCalibrationCurrentLoop6 { get; set; } [JsonProperty("RFCalibrationPower Loop_6")] - public string RFCalibrationPowerLoop6 { get; set; } + public String RFCalibrationPowerLoop6 { get; set; } [JsonProperty("PowerlevelReference Loop_6")] - public string PowerlevelReferenceLoop6 { get; set; } + public String PowerlevelReferenceLoop6 { get; set; } [JsonProperty("PowerLevelCalculated Loop_6")] - public string PowerLevelCalculatedLoop6 { get; set; } + public String PowerLevelCalculatedLoop6 { get; set; } [JsonProperty("AntennaMatching Loop_6")] - public string AntennaMatchingLoop6 { get; set; } + public String AntennaMatchingLoop6 { get; set; } [JsonProperty("LookupTableCSV Loop_6")] - public string LookupTableCSVLoop6 { get; set; } + public String LookupTableCSVLoop6 { get; set; } [JsonProperty("RunRemeasure Loop_6")] - public string RunRemeasureLoop6 { get; set; } + public String RunRemeasureLoop6 { get; set; } [JsonProperty("ResultRFRemeasure Loop_6")] - public string ResultRFRemeasureLoop6 { get; set; } + public String ResultRFRemeasureLoop6 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_6")] - public string RFRemeasureCurrentLoop6 { get; set; } + public String RFRemeasureCurrentLoop6 { get; set; } [JsonProperty("RFRemeasurePower Loop_6")] - public string RFRemeasurePowerLoop6 { get; set; } + public String RFRemeasurePowerLoop6 { get; set; } [JsonProperty("ResultCalibration Loop_7")] - public string ResultCalibrationLoop7 { get; set; } + public String ResultCalibrationLoop7 { get; set; } [JsonProperty("LengthCode Loop_7")] - public string LengthCodeLoop7 { get; set; } + public String LengthCodeLoop7 { get; set; } [JsonProperty("RunCalibrate Loop_7")] - public string RunCalibrateLoop7 { get; set; } + public String RunCalibrateLoop7 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_7")] - public string RFCalibrationCurrentLoop7 { get; set; } + public String RFCalibrationCurrentLoop7 { get; set; } [JsonProperty("RFCalibrationPower Loop_7")] - public string RFCalibrationPowerLoop7 { get; set; } + public String RFCalibrationPowerLoop7 { get; set; } [JsonProperty("PowerlevelReference Loop_7")] - public string PowerlevelReferenceLoop7 { get; set; } + public String PowerlevelReferenceLoop7 { get; set; } [JsonProperty("PowerLevelCalculated Loop_7")] - public string PowerLevelCalculatedLoop7 { get; set; } + public String PowerLevelCalculatedLoop7 { get; set; } [JsonProperty("AntennaMatching Loop_7")] - public string AntennaMatchingLoop7 { get; set; } + public String AntennaMatchingLoop7 { get; set; } [JsonProperty("LookupTableCSV Loop_7")] - public string LookupTableCSVLoop7 { get; set; } + public String LookupTableCSVLoop7 { get; set; } [JsonProperty("RunRemeasure Loop_7")] - public string RunRemeasureLoop7 { get; set; } + public String RunRemeasureLoop7 { get; set; } [JsonProperty("ResultRFRemeasure Loop_7")] - public string ResultRFRemeasureLoop7 { get; set; } + public String ResultRFRemeasureLoop7 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_7")] - public string RFRemeasureCurrentLoop7 { get; set; } + public String RFRemeasureCurrentLoop7 { get; set; } [JsonProperty("RFRemeasurePower Loop_7")] - public string RFRemeasurePowerLoop7 { get; set; } + public String RFRemeasurePowerLoop7 { get; set; } [JsonProperty("ResultCalibration Loop_8")] - public string ResultCalibrationLoop8 { get; set; } + public String ResultCalibrationLoop8 { get; set; } [JsonProperty("LengthCode Loop_8")] - public string LengthCodeLoop8 { get; set; } + public String LengthCodeLoop8 { get; set; } [JsonProperty("RunCalibrate Loop_8")] - public string RunCalibrateLoop8 { get; set; } + public String RunCalibrateLoop8 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_8")] - public string RFCalibrationCurrentLoop8 { get; set; } + public String RFCalibrationCurrentLoop8 { get; set; } [JsonProperty("RFCalibrationPower Loop_8")] - public string RFCalibrationPowerLoop8 { get; set; } + public String RFCalibrationPowerLoop8 { get; set; } [JsonProperty("PowerlevelReference Loop_8")] - public string PowerlevelReferenceLoop8 { get; set; } + public String PowerlevelReferenceLoop8 { get; set; } [JsonProperty("PowerLevelCalculated Loop_8")] - public string PowerLevelCalculatedLoop8 { get; set; } + public String PowerLevelCalculatedLoop8 { get; set; } [JsonProperty("AntennaMatching Loop_8")] - public string AntennaMatchingLoop8 { get; set; } + public String AntennaMatchingLoop8 { get; set; } [JsonProperty("LookupTableCSV Loop_8")] - public string LookupTableCSVLoop8 { get; set; } + public String LookupTableCSVLoop8 { get; set; } [JsonProperty("RunRemeasure Loop_8")] - public string RunRemeasureLoop8 { get; set; } + public String RunRemeasureLoop8 { get; set; } [JsonProperty("ResultRFRemeasure Loop_8")] - public string ResultRFRemeasureLoop8 { get; set; } + public String ResultRFRemeasureLoop8 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_8")] - public string RFRemeasureCurrentLoop8 { get; set; } + public String RFRemeasureCurrentLoop8 { get; set; } [JsonProperty("RFRemeasurePower Loop_8")] - public string RFRemeasurePowerLoop8 { get; set; } - public string TestID { get; set; } + public String RFRemeasurePowerLoop8 { get; set; } + public String TestID { get; set; } [JsonProperty("ResultCalibration Loop_9")] - public string ResultCalibrationLoop9 { get; set; } + public String ResultCalibrationLoop9 { get; set; } [JsonProperty("LengthCode Loop_9")] - public string LengthCodeLoop9 { get; set; } + public String LengthCodeLoop9 { get; set; } [JsonProperty("RunCalibrate Loop_9")] - public string RunCalibrateLoop9 { get; set; } + public String RunCalibrateLoop9 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_9")] - public string RFCalibrationCurrentLoop9 { get; set; } + public String RFCalibrationCurrentLoop9 { get; set; } [JsonProperty("RFCalibrationPower Loop_9")] - public string RFCalibrationPowerLoop9 { get; set; } + public String RFCalibrationPowerLoop9 { get; set; } [JsonProperty("PowerlevelReference Loop_9")] - public string PowerlevelReferenceLoop9 { get; set; } + public String PowerlevelReferenceLoop9 { get; set; } [JsonProperty("PowerLevelCalculated Loop_9")] - public string PowerLevelCalculatedLoop9 { get; set; } + public String PowerLevelCalculatedLoop9 { get; set; } [JsonProperty("AntennaMatching Loop_9")] - public string AntennaMatchingLoop9 { get; set; } + public String AntennaMatchingLoop9 { get; set; } [JsonProperty("LookupTableCSV Loop_9")] - public string LookupTableCSVLoop9 { get; set; } + public String LookupTableCSVLoop9 { get; set; } [JsonProperty("RunRemeasure Loop_9")] - public string RunRemeasureLoop9 { get; set; } + public String RunRemeasureLoop9 { get; set; } [JsonProperty("ResultRFRemeasure Loop_9")] - public string ResultRFRemeasureLoop9 { get; set; } + public String ResultRFRemeasureLoop9 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_9")] - public string RFRemeasureCurrentLoop9 { get; set; } + public String RFRemeasureCurrentLoop9 { get; set; } [JsonProperty("RFRemeasurePower Loop_9")] - public string RFRemeasurePowerLoop9 { get; set; } + public String RFRemeasurePowerLoop9 { get; set; } [JsonProperty("ResultCalibration Loop_10")] - public string ResultCalibrationLoop10 { get; set; } + public String ResultCalibrationLoop10 { get; set; } [JsonProperty("LengthCode Loop_10")] - public string LengthCodeLoop10 { get; set; } + public String LengthCodeLoop10 { get; set; } [JsonProperty("RunCalibrate Loop_10")] - public string RunCalibrateLoop10 { get; set; } + public String RunCalibrateLoop10 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_10")] - public string RFCalibrationCurrentLoop10 { get; set; } + public String RFCalibrationCurrentLoop10 { get; set; } [JsonProperty("RFCalibrationPower Loop_10")] - public string RFCalibrationPowerLoop10 { get; set; } + public String RFCalibrationPowerLoop10 { get; set; } [JsonProperty("PowerlevelReference Loop_10")] - public string PowerlevelReferenceLoop10 { get; set; } + public String PowerlevelReferenceLoop10 { get; set; } [JsonProperty("PowerLevelCalculated Loop_10")] - public string PowerLevelCalculatedLoop10 { get; set; } + public String PowerLevelCalculatedLoop10 { get; set; } [JsonProperty("AntennaMatching Loop_10")] - public string AntennaMatchingLoop10 { get; set; } + public String AntennaMatchingLoop10 { get; set; } [JsonProperty("LookupTableCSV Loop_10")] - public string LookupTableCSVLoop10 { get; set; } + public String LookupTableCSVLoop10 { get; set; } [JsonProperty("RunRemeasure Loop_10")] - public string RunRemeasureLoop10 { get; set; } + public String RunRemeasureLoop10 { get; set; } [JsonProperty("ResultRFRemeasure Loop_10")] - public string ResultRFRemeasureLoop10 { get; set; } + public String ResultRFRemeasureLoop10 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_10")] - public string RFRemeasureCurrentLoop10 { get; set; } + public String RFRemeasureCurrentLoop10 { get; set; } [JsonProperty("RFRemeasurePower Loop_10")] - public string RFRemeasurePowerLoop10 { get; set; } + public String RFRemeasurePowerLoop10 { get; set; } [JsonProperty("ResultCalibration Loop_11")] - public string ResultCalibrationLoop11 { get; set; } + public String ResultCalibrationLoop11 { get; set; } [JsonProperty("LengthCode Loop_11")] - public string LengthCodeLoop11 { get; set; } + public String LengthCodeLoop11 { get; set; } [JsonProperty("RunCalibrate Loop_11")] - public string RunCalibrateLoop11 { get; set; } + public String RunCalibrateLoop11 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_11")] - public string RFCalibrationCurrentLoop11 { get; set; } + public String RFCalibrationCurrentLoop11 { get; set; } [JsonProperty("RFCalibrationPower Loop_11")] - public string RFCalibrationPowerLoop11 { get; set; } + public String RFCalibrationPowerLoop11 { get; set; } [JsonProperty("PowerlevelReference Loop_11")] - public string PowerlevelReferenceLoop11 { get; set; } + public String PowerlevelReferenceLoop11 { get; set; } [JsonProperty("PowerLevelCalculated Loop_11")] - public string PowerLevelCalculatedLoop11 { get; set; } + public String PowerLevelCalculatedLoop11 { get; set; } [JsonProperty("AntennaMatching Loop_11")] - public string AntennaMatchingLoop11 { get; set; } + public String AntennaMatchingLoop11 { get; set; } [JsonProperty("LookupTableCSV Loop_11")] - public string LookupTableCSVLoop11 { get; set; } + public String LookupTableCSVLoop11 { get; set; } [JsonProperty("RunRemeasure Loop_11")] - public string RunRemeasureLoop11 { get; set; } + public String RunRemeasureLoop11 { get; set; } [JsonProperty("ResultRFRemeasure Loop_11")] - public string ResultRFRemeasureLoop11 { get; set; } + public String ResultRFRemeasureLoop11 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_11")] - public string RFRemeasureCurrentLoop11 { get; set; } + public String RFRemeasureCurrentLoop11 { get; set; } [JsonProperty("RFRemeasurePower Loop_11")] - public string RFRemeasurePowerLoop11 { get; set; } + public String RFRemeasurePowerLoop11 { get; set; } [JsonProperty("ResultCalibration Loop_12")] - public string ResultCalibrationLoop12 { get; set; } + public String ResultCalibrationLoop12 { get; set; } [JsonProperty("LengthCode Loop_12")] - public string LengthCodeLoop12 { get; set; } + public String LengthCodeLoop12 { get; set; } [JsonProperty("RunCalibrate Loop_12")] - public string RunCalibrateLoop12 { get; set; } + public String RunCalibrateLoop12 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_12")] - public string RFCalibrationCurrentLoop12 { get; set; } + public String RFCalibrationCurrentLoop12 { get; set; } [JsonProperty("RFCalibrationPower Loop_12")] - public string RFCalibrationPowerLoop12 { get; set; } + public String RFCalibrationPowerLoop12 { get; set; } [JsonProperty("PowerlevelReference Loop_12")] - public string PowerlevelReferenceLoop12 { get; set; } + public String PowerlevelReferenceLoop12 { get; set; } [JsonProperty("PowerLevelCalculated Loop_12")] - public string PowerLevelCalculatedLoop12 { get; set; } + public String PowerLevelCalculatedLoop12 { get; set; } [JsonProperty("AntennaMatching Loop_12")] - public string AntennaMatchingLoop12 { get; set; } + public String AntennaMatchingLoop12 { get; set; } [JsonProperty("LookupTableCSV Loop_12")] - public string LookupTableCSVLoop12 { get; set; } + public String LookupTableCSVLoop12 { get; set; } [JsonProperty("RunRemeasure Loop_12")] - public string RunRemeasureLoop12 { get; set; } + public String RunRemeasureLoop12 { get; set; } [JsonProperty("ResultRFRemeasure Loop_12")] - public string ResultRFRemeasureLoop12 { get; set; } + public String ResultRFRemeasureLoop12 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_12")] - public string RFRemeasureCurrentLoop12 { get; set; } + public String RFRemeasureCurrentLoop12 { get; set; } [JsonProperty("RFRemeasurePower Loop_12")] - public string RFRemeasurePowerLoop12 { get; set; } + public String RFRemeasurePowerLoop12 { get; set; } [JsonProperty("ResultCalibration Loop_13")] - public string ResultCalibrationLoop13 { get; set; } + public String ResultCalibrationLoop13 { get; set; } [JsonProperty("LengthCode Loop_13")] - public string LengthCodeLoop13 { get; set; } + public String LengthCodeLoop13 { get; set; } [JsonProperty("RunCalibrate Loop_13")] - public string RunCalibrateLoop13 { get; set; } + public String RunCalibrateLoop13 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_13")] - public string RFCalibrationCurrentLoop13 { get; set; } + public String RFCalibrationCurrentLoop13 { get; set; } [JsonProperty("RFCalibrationPower Loop_13")] - public string RFCalibrationPowerLoop13 { get; set; } + public String RFCalibrationPowerLoop13 { get; set; } [JsonProperty("PowerlevelReference Loop_13")] - public string PowerlevelReferenceLoop13 { get; set; } + public String PowerlevelReferenceLoop13 { get; set; } [JsonProperty("PowerLevelCalculated Loop_13")] - public string PowerLevelCalculatedLoop13 { get; set; } + public String PowerLevelCalculatedLoop13 { get; set; } [JsonProperty("AntennaMatching Loop_13")] - public string AntennaMatchingLoop13 { get; set; } + public String AntennaMatchingLoop13 { get; set; } [JsonProperty("LookupTableCSV Loop_13")] - public string LookupTableCSVLoop13 { get; set; } + public String LookupTableCSVLoop13 { get; set; } [JsonProperty("RunRemeasure Loop_13")] - public string RunRemeasureLoop13 { get; set; } + public String RunRemeasureLoop13 { get; set; } [JsonProperty("ResultRFRemeasure Loop_13")] - public string ResultRFRemeasureLoop13 { get; set; } + public String ResultRFRemeasureLoop13 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_13")] - public string RFRemeasureCurrentLoop13 { get; set; } + public String RFRemeasureCurrentLoop13 { get; set; } [JsonProperty("RFRemeasurePower Loop_13")] - public string RFRemeasurePowerLoop13 { get; set; } + public String RFRemeasurePowerLoop13 { get; set; } [JsonProperty("ResultCalibration Loop_14")] - public string ResultCalibrationLoop14 { get; set; } + public String ResultCalibrationLoop14 { get; set; } [JsonProperty("LengthCode Loop_14")] - public string LengthCodeLoop14 { get; set; } + public String LengthCodeLoop14 { get; set; } [JsonProperty("RunCalibrate Loop_14")] - public string RunCalibrateLoop14 { get; set; } + public String RunCalibrateLoop14 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_14")] - public string RFCalibrationCurrentLoop14 { get; set; } + public String RFCalibrationCurrentLoop14 { get; set; } [JsonProperty("RFCalibrationPower Loop_14")] - public string RFCalibrationPowerLoop14 { get; set; } + public String RFCalibrationPowerLoop14 { get; set; } [JsonProperty("PowerlevelReference Loop_14")] - public string PowerlevelReferenceLoop14 { get; set; } + public String PowerlevelReferenceLoop14 { get; set; } [JsonProperty("PowerLevelCalculated Loop_14")] - public string PowerLevelCalculatedLoop14 { get; set; } + public String PowerLevelCalculatedLoop14 { get; set; } [JsonProperty("AntennaMatching Loop_14")] - public string AntennaMatchingLoop14 { get; set; } + public String AntennaMatchingLoop14 { get; set; } [JsonProperty("LookupTableCSV Loop_14")] - public string LookupTableCSVLoop14 { get; set; } + public String LookupTableCSVLoop14 { get; set; } [JsonProperty("RunRemeasure Loop_14")] - public string RunRemeasureLoop14 { get; set; } + public String RunRemeasureLoop14 { get; set; } [JsonProperty("ResultRFRemeasure Loop_14")] - public string ResultRFRemeasureLoop14 { get; set; } + public String ResultRFRemeasureLoop14 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_14")] - public string RFRemeasureCurrentLoop14 { get; set; } + public String RFRemeasureCurrentLoop14 { get; set; } [JsonProperty("RFRemeasurePower Loop_14")] - public string RFRemeasurePowerLoop14 { get; set; } + public String RFRemeasurePowerLoop14 { get; set; } [JsonProperty("ResultCalibration Loop_15")] - public string ResultCalibrationLoop15 { get; set; } + public String ResultCalibrationLoop15 { get; set; } [JsonProperty("LengthCode Loop_15")] - public string LengthCodeLoop15 { get; set; } + public String LengthCodeLoop15 { get; set; } [JsonProperty("RunCalibrate Loop_15")] - public string RunCalibrateLoop15 { get; set; } + public String RunCalibrateLoop15 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_15")] - public string RFCalibrationCurrentLoop15 { get; set; } + public String RFCalibrationCurrentLoop15 { get; set; } [JsonProperty("RFCalibrationPower Loop_15")] - public string RFCalibrationPowerLoop15 { get; set; } + public String RFCalibrationPowerLoop15 { get; set; } [JsonProperty("PowerlevelReference Loop_15")] - public string PowerlevelReferenceLoop15 { get; set; } + public String PowerlevelReferenceLoop15 { get; set; } [JsonProperty("PowerLevelCalculated Loop_15")] - public string PowerLevelCalculatedLoop15 { get; set; } + public String PowerLevelCalculatedLoop15 { get; set; } [JsonProperty("AntennaMatching Loop_15")] - public string AntennaMatchingLoop15 { get; set; } + public String AntennaMatchingLoop15 { get; set; } [JsonProperty("LookupTableCSV Loop_15")] - public string LookupTableCSVLoop15 { get; set; } + public String LookupTableCSVLoop15 { get; set; } [JsonProperty("RunRemeasure Loop_15")] - public string RunRemeasureLoop15 { get; set; } + public String RunRemeasureLoop15 { get; set; } [JsonProperty("ResultRFRemeasure Loop_15")] - public string ResultRFRemeasureLoop15 { get; set; } + public String ResultRFRemeasureLoop15 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_15")] - public string RFRemeasureCurrentLoop15 { get; set; } + public String RFRemeasureCurrentLoop15 { get; set; } [JsonProperty("RFRemeasurePower Loop_15")] - public string RFRemeasurePowerLoop15 { get; set; } + public String RFRemeasurePowerLoop15 { get; set; } [JsonProperty("ResultCalibration Loop_16")] - public string ResultCalibrationLoop16 { get; set; } + public String ResultCalibrationLoop16 { get; set; } [JsonProperty("LengthCode Loop_16")] - public string LengthCodeLoop16 { get; set; } + public String LengthCodeLoop16 { get; set; } [JsonProperty("RunCalibrate Loop_16")] - public string RunCalibrateLoop16 { get; set; } + public String RunCalibrateLoop16 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_16")] - public string RFCalibrationCurrentLoop16 { get; set; } + public String RFCalibrationCurrentLoop16 { get; set; } [JsonProperty("RFCalibrationPower Loop_16")] - public string RFCalibrationPowerLoop16 { get; set; } + public String RFCalibrationPowerLoop16 { get; set; } [JsonProperty("PowerlevelReference Loop_16")] - public string PowerlevelReferenceLoop16 { get; set; } + public String PowerlevelReferenceLoop16 { get; set; } [JsonProperty("PowerLevelCalculated Loop_16")] - public string PowerLevelCalculatedLoop16 { get; set; } + public String PowerLevelCalculatedLoop16 { get; set; } [JsonProperty("AntennaMatching Loop_16")] - public string AntennaMatchingLoop16 { get; set; } + public String AntennaMatchingLoop16 { get; set; } [JsonProperty("LookupTableCSV Loop_16")] - public string LookupTableCSVLoop16 { get; set; } + public String LookupTableCSVLoop16 { get; set; } [JsonProperty("RunRemeasure Loop_16")] - public string RunRemeasureLoop16 { get; set; } + public String RunRemeasureLoop16 { get; set; } [JsonProperty("ResultRFRemeasure Loop_16")] - public string ResultRFRemeasureLoop16 { get; set; } + public String ResultRFRemeasureLoop16 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_16")] - public string RFRemeasureCurrentLoop16 { get; set; } + public String RFRemeasureCurrentLoop16 { get; set; } [JsonProperty("RFRemeasurePower Loop_16")] - public string RFRemeasurePowerLoop16 { get; set; } + public String RFRemeasurePowerLoop16 { get; set; } [JsonProperty("ResultCalibration Loop_17")] - public string ResultCalibrationLoop17 { get; set; } + public String ResultCalibrationLoop17 { get; set; } [JsonProperty("LengthCode Loop_17")] - public string LengthCodeLoop17 { get; set; } + public String LengthCodeLoop17 { get; set; } [JsonProperty("RunCalibrate Loop_17")] - public string RunCalibrateLoop17 { get; set; } + public String RunCalibrateLoop17 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_17")] - public string RFCalibrationCurrentLoop17 { get; set; } + public String RFCalibrationCurrentLoop17 { get; set; } [JsonProperty("RFCalibrationPower Loop_17")] - public string RFCalibrationPowerLoop17 { get; set; } + public String RFCalibrationPowerLoop17 { get; set; } [JsonProperty("PowerlevelReference Loop_17")] - public string PowerlevelReferenceLoop17 { get; set; } + public String PowerlevelReferenceLoop17 { get; set; } [JsonProperty("PowerLevelCalculated Loop_17")] - public string PowerLevelCalculatedLoop17 { get; set; } + public String PowerLevelCalculatedLoop17 { get; set; } [JsonProperty("AntennaMatching Loop_17")] - public string AntennaMatchingLoop17 { get; set; } + public String AntennaMatchingLoop17 { get; set; } [JsonProperty("LookupTableCSV Loop_17")] - public string LookupTableCSVLoop17 { get; set; } + public String LookupTableCSVLoop17 { get; set; } [JsonProperty("RunRemeasure Loop_17")] - public string RunRemeasureLoop17 { get; set; } + public String RunRemeasureLoop17 { get; set; } [JsonProperty("ResultRFRemeasure Loop_17")] - public string ResultRFRemeasureLoop17 { get; set; } + public String ResultRFRemeasureLoop17 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_17")] - public string RFRemeasureCurrentLoop17 { get; set; } + public String RFRemeasureCurrentLoop17 { get; set; } [JsonProperty("RFRemeasurePower Loop_17")] - public string RFRemeasurePowerLoop17 { get; set; } + public String RFRemeasurePowerLoop17 { get; set; } [JsonProperty("ResultCalibration Loop_18")] - public string ResultCalibrationLoop18 { get; set; } + public String ResultCalibrationLoop18 { get; set; } [JsonProperty("LengthCode Loop_18")] - public string LengthCodeLoop18 { get; set; } + public String LengthCodeLoop18 { get; set; } [JsonProperty("RunCalibrate Loop_18")] - public string RunCalibrateLoop18 { get; set; } + public String RunCalibrateLoop18 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_18")] - public string RFCalibrationCurrentLoop18 { get; set; } + public String RFCalibrationCurrentLoop18 { get; set; } [JsonProperty("RFCalibrationPower Loop_18")] - public string RFCalibrationPowerLoop18 { get; set; } + public String RFCalibrationPowerLoop18 { get; set; } [JsonProperty("PowerlevelReference Loop_18")] - public string PowerlevelReferenceLoop18 { get; set; } + public String PowerlevelReferenceLoop18 { get; set; } [JsonProperty("PowerLevelCalculated Loop_18")] - public string PowerLevelCalculatedLoop18 { get; set; } + public String PowerLevelCalculatedLoop18 { get; set; } [JsonProperty("AntennaMatching Loop_18")] - public string AntennaMatchingLoop18 { get; set; } + public String AntennaMatchingLoop18 { get; set; } [JsonProperty("LookupTableCSV Loop_18")] - public string LookupTableCSVLoop18 { get; set; } + public String LookupTableCSVLoop18 { get; set; } [JsonProperty("RunRemeasure Loop_18")] - public string RunRemeasureLoop18 { get; set; } + public String RunRemeasureLoop18 { get; set; } [JsonProperty("ResultRFRemeasure Loop_18")] - public string ResultRFRemeasureLoop18 { get; set; } + public String ResultRFRemeasureLoop18 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_18")] - public string RFRemeasureCurrentLoop18 { get; set; } + public String RFRemeasureCurrentLoop18 { get; set; } [JsonProperty("RFRemeasurePower Loop_18")] - public string RFRemeasurePowerLoop18 { get; set; } + public String RFRemeasurePowerLoop18 { get; set; } [JsonProperty("ResultCalibration Loop_19")] - public string ResultCalibrationLoop19 { get; set; } + public String ResultCalibrationLoop19 { get; set; } [JsonProperty("LengthCode Loop_19")] - public string LengthCodeLoop19 { get; set; } + public String LengthCodeLoop19 { get; set; } [JsonProperty("RunCalibrate Loop_19")] - public string RunCalibrateLoop19 { get; set; } + public String RunCalibrateLoop19 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_19")] - public string RFCalibrationCurrentLoop19 { get; set; } + public String RFCalibrationCurrentLoop19 { get; set; } [JsonProperty("RFCalibrationPower Loop_19")] - public string RFCalibrationPowerLoop19 { get; set; } + public String RFCalibrationPowerLoop19 { get; set; } [JsonProperty("PowerlevelReference Loop_19")] - public string PowerlevelReferenceLoop19 { get; set; } + public String PowerlevelReferenceLoop19 { get; set; } [JsonProperty("PowerLevelCalculated Loop_19")] - public string PowerLevelCalculatedLoop19 { get; set; } + public String PowerLevelCalculatedLoop19 { get; set; } [JsonProperty("AntennaMatching Loop_19")] - public string AntennaMatchingLoop19 { get; set; } + public String AntennaMatchingLoop19 { get; set; } [JsonProperty("LookupTableCSV Loop_19")] - public string LookupTableCSVLoop19 { get; set; } + public String LookupTableCSVLoop19 { get; set; } [JsonProperty("RunRemeasure Loop_19")] - public string RunRemeasureLoop19 { get; set; } + public String RunRemeasureLoop19 { get; set; } [JsonProperty("ResultRFRemeasure Loop_19")] - public string ResultRFRemeasureLoop19 { get; set; } + public String ResultRFRemeasureLoop19 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_19")] - public string RFRemeasureCurrentLoop19 { get; set; } + public String RFRemeasureCurrentLoop19 { get; set; } [JsonProperty("RFRemeasurePower Loop_19")] - public string RFRemeasurePowerLoop19 { get; set; } + public String RFRemeasurePowerLoop19 { get; set; } [JsonProperty("ResultCalibration Loop_20")] - public string ResultCalibrationLoop20 { get; set; } + public String ResultCalibrationLoop20 { get; set; } [JsonProperty("LengthCode Loop_20")] - public string LengthCodeLoop20 { get; set; } + public String LengthCodeLoop20 { get; set; } [JsonProperty("RunCalibrate Loop_20")] - public string RunCalibrateLoop20 { get; set; } + public String RunCalibrateLoop20 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_20")] - public string RFCalibrationCurrentLoop20 { get; set; } + public String RFCalibrationCurrentLoop20 { get; set; } [JsonProperty("RFCalibrationPower Loop_20")] - public string RFCalibrationPowerLoop20 { get; set; } + public String RFCalibrationPowerLoop20 { get; set; } [JsonProperty("PowerlevelReference Loop_20")] - public string PowerlevelReferenceLoop20 { get; set; } + public String PowerlevelReferenceLoop20 { get; set; } [JsonProperty("PowerLevelCalculated Loop_20")] - public string PowerLevelCalculatedLoop20 { get; set; } + public String PowerLevelCalculatedLoop20 { get; set; } [JsonProperty("AntennaMatching Loop_20")] - public string AntennaMatchingLoop20 { get; set; } + public String AntennaMatchingLoop20 { get; set; } [JsonProperty("LookupTableCSV Loop_20")] - public string LookupTableCSVLoop20 { get; set; } + public String LookupTableCSVLoop20 { get; set; } [JsonProperty("RunRemeasure Loop_20")] - public string RunRemeasureLoop20 { get; set; } + public String RunRemeasureLoop20 { get; set; } [JsonProperty("ResultRFRemeasure Loop_20")] - public string ResultRFRemeasureLoop20 { get; set; } + public String ResultRFRemeasureLoop20 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_20")] - public string RFRemeasureCurrentLoop20 { get; set; } + public String RFRemeasureCurrentLoop20 { get; set; } [JsonProperty("RFRemeasurePower Loop_20")] - public string RFRemeasurePowerLoop20 { get; set; } + public String RFRemeasurePowerLoop20 { get; set; } [JsonProperty("ResultCalibration Loop_21")] - public string ResultCalibrationLoop21 { get; set; } + public String ResultCalibrationLoop21 { get; set; } [JsonProperty("LengthCode Loop_21")] - public string LengthCodeLoop21 { get; set; } + public String LengthCodeLoop21 { get; set; } [JsonProperty("RunCalibrate Loop_21")] - public string RunCalibrateLoop21 { get; set; } + public String RunCalibrateLoop21 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_21")] - public string RFCalibrationCurrentLoop21 { get; set; } + public String RFCalibrationCurrentLoop21 { get; set; } [JsonProperty("RFCalibrationPower Loop_21")] - public string RFCalibrationPowerLoop21 { get; set; } + public String RFCalibrationPowerLoop21 { get; set; } [JsonProperty("PowerlevelReference Loop_21")] - public string PowerlevelReferenceLoop21 { get; set; } + public String PowerlevelReferenceLoop21 { get; set; } [JsonProperty("PowerLevelCalculated Loop_21")] - public string PowerLevelCalculatedLoop21 { get; set; } + public String PowerLevelCalculatedLoop21 { get; set; } [JsonProperty("AntennaMatching Loop_21")] - public string AntennaMatchingLoop21 { get; set; } + public String AntennaMatchingLoop21 { get; set; } [JsonProperty("LookupTableCSV Loop_21")] - public string LookupTableCSVLoop21 { get; set; } + public String LookupTableCSVLoop21 { get; set; } [JsonProperty("RunRemeasure Loop_21")] - public string RunRemeasureLoop21 { get; set; } + public String RunRemeasureLoop21 { get; set; } [JsonProperty("ResultRFRemeasure Loop_21")] - public string ResultRFRemeasureLoop21 { get; set; } + public String ResultRFRemeasureLoop21 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_21")] - public string RFRemeasureCurrentLoop21 { get; set; } + public String RFRemeasureCurrentLoop21 { get; set; } [JsonProperty("RFRemeasurePower Loop_21")] - public string RFRemeasurePowerLoop21 { get; set; } + public String RFRemeasurePowerLoop21 { get; set; } [JsonProperty("ResultCalibration Loop_22")] - public string ResultCalibrationLoop22 { get; set; } + public String ResultCalibrationLoop22 { get; set; } [JsonProperty("LengthCode Loop_22")] - public string LengthCodeLoop22 { get; set; } + public String LengthCodeLoop22 { get; set; } [JsonProperty("RunCalibrate Loop_22")] - public string RunCalibrateLoop22 { get; set; } + public String RunCalibrateLoop22 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_22")] - public string RFCalibrationCurrentLoop22 { get; set; } + public String RFCalibrationCurrentLoop22 { get; set; } [JsonProperty("RFCalibrationPower Loop_22")] - public string RFCalibrationPowerLoop22 { get; set; } + public String RFCalibrationPowerLoop22 { get; set; } [JsonProperty("PowerlevelReference Loop_22")] - public string PowerlevelReferenceLoop22 { get; set; } + public String PowerlevelReferenceLoop22 { get; set; } [JsonProperty("PowerLevelCalculated Loop_22")] - public string PowerLevelCalculatedLoop22 { get; set; } + public String PowerLevelCalculatedLoop22 { get; set; } [JsonProperty("AntennaMatching Loop_22")] - public string AntennaMatchingLoop22 { get; set; } + public String AntennaMatchingLoop22 { get; set; } [JsonProperty("LookupTableCSV Loop_22")] - public string LookupTableCSVLoop22 { get; set; } + public String LookupTableCSVLoop22 { get; set; } [JsonProperty("RunRemeasure Loop_22")] - public string RunRemeasureLoop22 { get; set; } + public String RunRemeasureLoop22 { get; set; } [JsonProperty("ResultRFRemeasure Loop_22")] - public string ResultRFRemeasureLoop22 { get; set; } + public String ResultRFRemeasureLoop22 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_22")] - public string RFRemeasureCurrentLoop22 { get; set; } + public String RFRemeasureCurrentLoop22 { get; set; } [JsonProperty("RFRemeasurePower Loop_22")] - public string RFRemeasurePowerLoop22 { get; set; } + public String RFRemeasurePowerLoop22 { get; set; } [JsonProperty("ResultCalibration Loop_23")] - public string ResultCalibrationLoop23 { get; set; } + public String ResultCalibrationLoop23 { get; set; } [JsonProperty("LengthCode Loop_23")] - public string LengthCodeLoop23 { get; set; } + public String LengthCodeLoop23 { get; set; } [JsonProperty("RunCalibrate Loop_23")] - public string RunCalibrateLoop23 { get; set; } + public String RunCalibrateLoop23 { get; set; } [JsonProperty("RFCalibrationCurrent Loop_23")] - public string RFCalibrationCurrentLoop23 { get; set; } + public String RFCalibrationCurrentLoop23 { get; set; } [JsonProperty("RFCalibrationPower Loop_23")] - public string RFCalibrationPowerLoop23 { get; set; } + public String RFCalibrationPowerLoop23 { get; set; } [JsonProperty("PowerlevelReference Loop_23")] - public string PowerlevelReferenceLoop23 { get; set; } + public String PowerlevelReferenceLoop23 { get; set; } [JsonProperty("PowerLevelCalculated Loop_23")] - public string PowerLevelCalculatedLoop23 { get; set; } + public String PowerLevelCalculatedLoop23 { get; set; } [JsonProperty("AntennaMatching Loop_23")] - public string AntennaMatchingLoop23 { get; set; } + public String AntennaMatchingLoop23 { get; set; } [JsonProperty("LookupTableCSV Loop_23")] - public string LookupTableCSVLoop23 { get; set; } + public String LookupTableCSVLoop23 { get; set; } [JsonProperty("RunRemeasure Loop_23")] - public string RunRemeasureLoop23 { get; set; } + public String RunRemeasureLoop23 { get; set; } [JsonProperty("ResultRFRemeasure Loop_23")] - public string ResultRFRemeasureLoop23 { get; set; } + public String ResultRFRemeasureLoop23 { get; set; } [JsonProperty("RFRemeasureCurrent Loop_23")] - public string RFRemeasureCurrentLoop23 { get; set; } + public String RFRemeasureCurrentLoop23 { get; set; } [JsonProperty("RFRemeasurePower Loop_23")] - public string RFRemeasurePowerLoop23 { get; set; } + public String RFRemeasurePowerLoop23 { get; set; } @@ -1224,10 +1221,10 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults public class Root { [JsonProperty("$id")] - public string Id { get; set; } + public String Id { get; set; } public JsonObject JsonObject { get; set; } - public string PanelBarcode { get; set; } - public string TestID { get; set; } + public String PanelBarcode { get; set; } + public String TestID { get; set; } } diff --git a/Common/Logic/ProductionOrderCore/KitronTestResults/RadioTest.cs b/Common/Logic/ProductionOrderCore/KitronTestResults/RadioTest.cs index 77d98866..89abd5fc 100644 --- a/Common/Logic/ProductionOrderCore/KitronTestResults/RadioTest.cs +++ b/Common/Logic/ProductionOrderCore/KitronTestResults/RadioTest.cs @@ -12,7 +12,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults { [JsonProperty("$id")] [JsonConverter(typeof(ParseStringConverter))] - public long Id { get; set; } + public Int64 Id { get; set; } [JsonProperty("TestStepResults")] public TestStep TestStepResults { get; set; } @@ -28,168 +28,168 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults [JsonProperty("TestID")] [JsonConverter(typeof(ParseStringConverter))] - public long TestId { get; set; } + public Int64 TestId { get; set; } [JsonProperty("TestPlace")] - public string TestPlace { get; set; } + public String TestPlace { get; set; } [JsonProperty("TestAdapter")] - public string TestAdapter { get; set; } + public String TestAdapter { get; set; } [JsonProperty("MaterialNumber")] - public string MaterialNumber { get; set; } + public String MaterialNumber { get; set; } [JsonProperty("PanelBarcode")] [JsonConverter(typeof(ParseStringConverter))] - public long PanelBarcode { get; set; } + public Int64 PanelBarcode { get; set; } [JsonProperty("TestProgramm")] - public string TestProgramm { get; set; } + public String TestProgramm { get; set; } [JsonProperty("TestProgramVer")] - public string TestProgramVer { get; set; } + public String TestProgramVer { get; set; } [JsonProperty("TestBoardSerialNr")] - public string TestBoardSerialNr { get; set; } + public String TestBoardSerialNr { get; set; } [JsonProperty("TestBoardVersionInfo")] - public string TestBoardVersionInfo { get; set; } + public String TestBoardVersionInfo { get; set; } [JsonProperty("TestOperator")] - public string TestOperator { get; set; } + public String TestOperator { get; set; } [JsonProperty("TestMachineName")] - public string TestMachineName { get; set; } + public String TestMachineName { get; set; } [JsonProperty("TestNumber")] - public string TestNumber { get; set; } + public String TestNumber { get; set; } [JsonProperty("StartDT")] - public string StartDt { get; set; } + public String StartDt { get; set; } [JsonProperty("TestDuration")] - public string TestDuration { get; set; } + public String TestDuration { get; set; } [JsonProperty("TestResult")] public Result TestResult { get; set; } [JsonProperty("AttachmentFile")] - public string AttachmentFile { get; set; } + public String AttachmentFile { get; set; } } - public partial class TestStep + public class TestStep { [JsonProperty("$id")] [JsonConverter(typeof(ParseStringConverter))] - public long Id { get; set; } + public Int64 Id { get; set; } [JsonProperty("$values")] public Value[] Values { get; set; } } - public partial class Value + public class Value { [JsonProperty("$id")] [JsonConverter(typeof(ParseStringConverter))] - public long Id { get; set; } + public Int64 Id { get; set; } [JsonProperty("TestDate", NullValueHandling = NullValueHandling.Ignore)] public DateTimeOffset? TestDate { get; set; } [JsonProperty("Barcode", NullValueHandling = NullValueHandling.Ignore)] [JsonConverter(typeof(ParseStringConverter))] - public long? Barcode { get; set; } + public Int64? Barcode { get; set; } [JsonProperty("ResultCalibration", NullValueHandling = NullValueHandling.Ignore)] - public string ResultCalibration { get; set; } + public String ResultCalibration { get; set; } [JsonProperty("TestLoop", NullValueHandling = NullValueHandling.Ignore)] [JsonConverter(typeof(ParseStringConverter))] - public long? TestLoop { get; set; } + public Int64? TestLoop { get; set; } [JsonProperty("LengthCode", NullValueHandling = NullValueHandling.Ignore)] - public string LengthCode { get; set; } + public String LengthCode { get; set; } [JsonProperty("RunCalibrate", NullValueHandling = NullValueHandling.Ignore)] - public string RunCalibrate { get; set; } + public String RunCalibrate { get; set; } [JsonProperty("RFCalibrationCurrent", NullValueHandling = NullValueHandling.Ignore)] - public string RfCalibrationCurrent { get; set; } + public String RfCalibrationCurrent { get; set; } [JsonProperty("RFCalibrationPower", NullValueHandling = NullValueHandling.Ignore)] - public string RfCalibrationPower { get; set; } + public String RfCalibrationPower { get; set; } [JsonProperty("iPowerLevelCalculated", NullValueHandling = NullValueHandling.Ignore)] - public string IPowerLevelCalculated { get; set; } + public String IPowerLevelCalculated { get; set; } [JsonProperty("iExternalPowerlevel", NullValueHandling = NullValueHandling.Ignore)] [JsonConverter(typeof(ParseStringConverter))] - public long? IExternalPowerlevel { get; set; } + public Int64? IExternalPowerlevel { get; set; } [JsonProperty("iAntennaMatching", NullValueHandling = NullValueHandling.Ignore)] - public string IAntennaMatching { get; set; } + public String IAntennaMatching { get; set; } [JsonProperty("sLookupTablePower", NullValueHandling = NullValueHandling.Ignore)] - public string SLookupTablePower { get; set; } + public String SLookupTablePower { get; set; } [JsonProperty("dReferenceCurrent1", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrent1 { get; set; } + public String DReferenceCurrent1 { get; set; } [JsonProperty("dReferenceCurrentLow1", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrentLow1 { get; set; } + public String DReferenceCurrentLow1 { get; set; } [JsonProperty("dReferenceCurrentHigh1", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrentHigh1 { get; set; } + public String DReferenceCurrentHigh1 { get; set; } [JsonProperty("dReferencePower1", NullValueHandling = NullValueHandling.Ignore)] - public string DReferencePower1 { get; set; } + public String DReferencePower1 { get; set; } [JsonProperty("dReferencePowerLow1", NullValueHandling = NullValueHandling.Ignore)] - public string DReferencePowerLow1 { get; set; } + public String DReferencePowerLow1 { get; set; } [JsonProperty("dReferencePowerHigh1", NullValueHandling = NullValueHandling.Ignore)] public DReferencePowerHigh1? DReferencePowerHigh1 { get; set; } [JsonProperty("RunRemeasure", NullValueHandling = NullValueHandling.Ignore)] - public string RunRemeasure { get; set; } + public String RunRemeasure { get; set; } [JsonProperty("ResultRemeasure", NullValueHandling = NullValueHandling.Ignore)] - public string ResultRemeasure { get; set; } + public String ResultRemeasure { get; set; } [JsonProperty("RFRemeasureCurrent", NullValueHandling = NullValueHandling.Ignore)] - public string RfRemeasureCurrent { get; set; } + public String RfRemeasureCurrent { get; set; } [JsonProperty("RFRemeasurePower", NullValueHandling = NullValueHandling.Ignore)] - public string RfRemeasurePower { get; set; } + public String RfRemeasurePower { get; set; } [JsonProperty("dReferenceCurrent2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrent2 { get; set; } + public String DReferenceCurrent2 { get; set; } [JsonProperty("dReferenceCurrentLow2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrentLow2 { get; set; } + public String DReferenceCurrentLow2 { get; set; } [JsonProperty("dReferenceCurrentHigh2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferenceCurrentHigh2 { get; set; } + public String DReferenceCurrentHigh2 { get; set; } [JsonProperty("dReferencePower2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferencePower2 { get; set; } + public String DReferencePower2 { get; set; } [JsonProperty("dReferencePowerLow2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferencePowerLow2 { get; set; } + public String DReferencePowerLow2 { get; set; } [JsonProperty("dReferencePowerHigh2", NullValueHandling = NullValueHandling.Ignore)] - public string DReferencePowerHigh2 { get; set; } + public String DReferencePowerHigh2 { get; set; } [JsonProperty("TestStepName", NullValueHandling = NullValueHandling.Ignore)] - public string TestStepName { get; set; } + public String TestStepName { get; set; } [JsonProperty("TestStepType", NullValueHandling = NullValueHandling.Ignore)] - public string TestStepType { get; set; } + public String TestStepType { get; set; } [JsonProperty("TestStepDesc", NullValueHandling = NullValueHandling.Ignore)] - public string TestStepDesc { get; set; } + public String TestStepDesc { get; set; } [JsonProperty("TestInstrument", NullValueHandling = NullValueHandling.Ignore)] public TestInstrument? TestInstrument { get; set; } @@ -198,22 +198,22 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults public TestTypeMeasured? TestTypeMeasured { get; set; } [JsonProperty("StartDT", NullValueHandling = NullValueHandling.Ignore)] - public string StartDt { get; set; } + public String StartDt { get; set; } [JsonProperty("TestDuration", NullValueHandling = NullValueHandling.Ignore)] - public string TestDuration { get; set; } + public String TestDuration { get; set; } [JsonProperty("Result", NullValueHandling = NullValueHandling.Ignore)] public Result? Result { get; set; } [JsonProperty("TestValue", NullValueHandling = NullValueHandling.Ignore)] - public string TestValue { get; set; } + public String TestValue { get; set; } [JsonProperty("Units", NullValueHandling = NullValueHandling.Ignore)] public Units? Units { get; set; } [JsonProperty("LowerLimit", NullValueHandling = NullValueHandling.Ignore)] - public string LowerLimit { get; set; } + public String LowerLimit { get; set; } [JsonProperty("UpperLimit", NullValueHandling = NullValueHandling.Ignore)] public UpperLimit? UpperLimit { get; set; } @@ -239,25 +239,27 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults public enum Units { Db, Empty, KHz, MA, Volt, ΜA }; - public partial struct UpperLimit + public struct UpperLimit { public DReferencePowerHigh1? Enum; - public long? Integer; + public Int64? Integer; - public static implicit operator UpperLimit(DReferencePowerHigh1 Enum) => new UpperLimit { Enum = Enum }; - public static implicit operator UpperLimit(long Integer) => new UpperLimit { Integer = Integer }; + public static implicit operator UpperLimit(DReferencePowerHigh1 enumeration) => new UpperLimit { Enum = enumeration }; + public static implicit operator UpperLimit(Int64 integer) => new UpperLimit { Integer = integer }; } public partial class RadioTest { - public static RadioTest FromJson(string json) + public static RadioTest FromJson(String json) { + if (string.IsNullOrEmpty(json)) return new RadioTest { TestResult = Result.Fail }; + try { if (json.Contains("\"JsonObject\":")) { - var newFromat = JsonConvert.DeserializeObject(json); + var newFromat = JsonConvert.DeserializeObject(json); //breakt down all and pass all data to the old format var alternateReturnObj = new RadioTest(); @@ -272,57 +274,57 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults } alternateReturnObj.StartDt = newFromat.JsonObject.StartDT; - alternateReturnObj.TestStepLoopCalibrate = new TestStep(); - alternateReturnObj.TestStepLoopCalibrate.Values = new Value[23]; + alternateReturnObj.TestStepLoopCalibrate = new TestStep + { + Values = new Value[23] + }; - var TestStepLoopCalibrateToAdd = new List(); + var testStepLoopCalibrateToAdd = new List(); - JObject joResponse = JObject.Parse(json); + var joResponse = JObject.Parse(json); + var loopCount = 0; + if (joResponse["JsonObject"] == null) return new RadioTest { TestResult = Result.Fail }; - var Hit = true; - - - int loopCount = 0; foreach (var item in joResponse["JsonObject"].Children()) { - if (item is JProperty pitem) + if (item is JProperty pItem) { - if (pitem.Name == $"ResultCalibration Loop_{loopCount +1}") + if (pItem.Name == $"ResultCalibration Loop_{loopCount +1}") { - if (pitem.Value.ToString() == "ok") + if (pItem.Value.ToString() == "ok") { - TestStepLoopCalibrateToAdd.Add(new Xylem.Common.Logic.ProductionOrderCore.KitronTestResults.Value()); - TestStepLoopCalibrateToAdd[loopCount].ResultCalibration = pitem.Value.ToString(); - TestStepLoopCalibrateToAdd[loopCount].SLookupTablePower = newFromat.JsonObject.AttachmentFile.ToLower(); - loopCount = loopCount + 1; + testStepLoopCalibrateToAdd.Add(new Value()); + testStepLoopCalibrateToAdd[loopCount].ResultCalibration = pItem.Value.ToString(); + testStepLoopCalibrateToAdd[loopCount].SLookupTablePower = newFromat.JsonObject.AttachmentFile.ToLower(); + loopCount += 1; } } - if (pitem.Name == $"LengthCode Loop_{loopCount}") + if (pItem.Name == $"LengthCode Loop_{loopCount}") { - if (TestStepLoopCalibrateToAdd.Count == loopCount) + if (testStepLoopCalibrateToAdd.Count == loopCount) { - TestStepLoopCalibrateToAdd[loopCount-1].LengthCode = pitem.Value.ToString(); + testStepLoopCalibrateToAdd[loopCount-1].LengthCode = pItem.Value.ToString(); } } - if (pitem.Name == $"PowerLevelCalculated Loop_{loopCount}") + if (pItem.Name == $"PowerLevelCalculated Loop_{loopCount}") { - if (TestStepLoopCalibrateToAdd.Count == loopCount) + if (testStepLoopCalibrateToAdd.Count == loopCount) { - TestStepLoopCalibrateToAdd[loopCount-1].IPowerLevelCalculated = pitem.Value.ToString(); + testStepLoopCalibrateToAdd[loopCount-1].IPowerLevelCalculated = pItem.Value.ToString(); } } - if (pitem.Name == $"AntennaMatching Loop_{loopCount}") + if (pItem.Name == $"AntennaMatching Loop_{loopCount}") { - if (TestStepLoopCalibrateToAdd.Count == loopCount) + if (testStepLoopCalibrateToAdd.Count == loopCount) { - TestStepLoopCalibrateToAdd[loopCount-1].IAntennaMatching = pitem.Value.ToString(); + testStepLoopCalibrateToAdd[loopCount-1].IAntennaMatching = pItem.Value.ToString(); } } @@ -335,27 +337,23 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults //} } - int i = 0; - foreach (var item in TestStepLoopCalibrateToAdd) + Int32 i = 0; + foreach (var item in testStepLoopCalibrateToAdd) { alternateReturnObj.TestStepLoopCalibrate.Values.SetValue(item, i); - i = i + 1; + i += 1; } return alternateReturnObj; } - - - - return JsonConvert.DeserializeObject(json, KitronTestResults.Converter.Settings); + return JsonConvert.DeserializeObject(json, Converter.Settings); } - catch (global::System.Exception ex) + catch (Exception) { - - return new RadioTest() { TestResult = Result.Fail }; + return new RadioTest { TestResult = Result.Fail }; } } @@ -363,7 +361,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults public static class Serialize { - public static string ToJson(this RadioTest self) => JsonConvert.SerializeObject(self, Converter.Settings); + public static String ToJson(this RadioTest self) => JsonConvert.SerializeObject(self, Converter.Settings); } internal static class Converter @@ -389,38 +387,33 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class ParseStringConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(long) || t == typeof(long?); + public override Boolean CanConvert(Type t) => t == typeof(Int64) || t == typeof(Int64?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); - long l; - if (Int64.TryParse(value, out l)) + var value = serializer.Deserialize(reader); + Int64 l; + if (long.TryParse(value, out l)) { return l; } - else - { - return -1; - } - throw new Exception("Cannot unmarshal type long"); + return -1; } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { serializer.Serialize(writer, null); return; } - var value = (long)untypedValue; + var value = (Int64)untypedValue; serializer.Serialize(writer, value.ToString()); - return; } public static readonly ParseStringConverter Singleton = new ParseStringConverter(); @@ -428,16 +421,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class ResultConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(Result) || t == typeof(Result?); + public override Boolean CanConvert(Type t) => t == typeof(Result) || t == typeof(Result?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "FAIL": @@ -448,7 +441,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults throw new Exception("Cannot unmarshal type Result"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -473,16 +466,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class AttachmentFileConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(AttachmentFile) || t == typeof(AttachmentFile?); + public override Boolean CanConvert(Type t) => t == typeof(AttachmentFile) || t == typeof(AttachmentFile?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "": @@ -491,12 +484,10 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults return AttachmentFile.DatenGenesisMfgradiotest433MHzV324Bin; default: return AttachmentFile.Empty; - } - throw new Exception("Cannot unmarshal type AttachmentFile"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -521,16 +512,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class FailDescConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(FailDesc) || t == typeof(FailDesc?); + public override Boolean CanConvert(Type t) => t == typeof(FailDesc) || t == typeof(FailDesc?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { @@ -541,10 +532,9 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults default: return FailDesc.Empty; } - throw new Exception("Cannot unmarshal type FailDesc"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -572,16 +562,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class TestInstrumentConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(TestInstrument) || t == typeof(TestInstrument?); + public override Boolean CanConvert(Type t) => t == typeof(TestInstrument) || t == typeof(TestInstrument?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "": @@ -599,7 +589,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults // throw new Exception("Cannot unmarshal type TestInstrument"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -633,16 +623,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class TestTypeMeasuredConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(TestTypeMeasured) || t == typeof(TestTypeMeasured?); + public override Boolean CanConvert(Type t) => t == typeof(TestTypeMeasured) || t == typeof(TestTypeMeasured?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "": @@ -656,10 +646,10 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults case "Read from Measuring Device": return TestTypeMeasured.ReadFromMeasuringDevice; } - return TestTypeMeasured.Empty; ; // throw new Exception("Cannot unmarshal type TestTypeMeasured"); + return TestTypeMeasured.Empty; } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -693,16 +683,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class UnitsConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(Units) || t == typeof(Units?); + public override Boolean CanConvert(Type t) => t == typeof(Units) || t == typeof(Units?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "": @@ -721,7 +711,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults throw new Exception("Cannot unmarshal type Units"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { @@ -758,15 +748,15 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class UpperLimitConverter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(UpperLimit) || t == typeof(UpperLimit?); + public override Boolean CanConvert(Type t) => t == typeof(UpperLimit) || t == typeof(UpperLimit?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.String: case JsonToken.Date: - var stringValue = serializer.Deserialize(reader); + var stringValue = serializer.Deserialize(reader); switch (stringValue) { case "": @@ -793,17 +783,11 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults return new UpperLimit { Enum = DReferencePowerHigh1.Empty }; } - long l; - if (Int64.TryParse(stringValue, out l)) - { - return new UpperLimit { Integer = l }; - } - break; } throw new Exception("Cannot unmarshal type UpperLimit"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { var value = (UpperLimit)untypedValue; if (value.Enum != null) @@ -855,16 +839,16 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults internal class DReferencePowerHigh1Converter : JsonConverter { - public override bool CanConvert(Type t) => t == typeof(DReferencePowerHigh1) || t == typeof(DReferencePowerHigh1?); + public override Boolean CanConvert(Type t) => t == typeof(DReferencePowerHigh1) || t == typeof(DReferencePowerHigh1?); - public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer) + public override Object ReadJson(JsonReader reader, Type t, Object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return null; } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader); switch (value) { case "": @@ -892,7 +876,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.KitronTestResults //throw new Exception("Cannot unmarshal type DReferencePowerHigh1"); } - public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, Object untypedValue, JsonSerializer serializer) { if (untypedValue == null) { diff --git a/Common/Logic/ProductionOrderCore/OrderData/OrderOverViewCordonel.cs b/Common/Logic/ProductionOrderCore/OrderData/OrderOverViewCordonel.cs index 1de76a28..fcbfdd0c 100644 --- a/Common/Logic/ProductionOrderCore/OrderData/OrderOverViewCordonel.cs +++ b/Common/Logic/ProductionOrderCore/OrderData/OrderOverViewCordonel.cs @@ -1,15 +1,36 @@ -namespace Xylem.Common.Logic.ProductionOrderCore.OrderData +using System; + +namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { + /// + /// Order overview of assembly line tests to collect the states of the tested devices. + /// public class OrderOverViewCordonel { - - - public int OrderNumber { get; set; } - public int Count { get; set; } - public int AssignedPicking { get; set; } - public int PressureTested { get; set; } - public int HeliumTested { get; set; } - + /// + /// Order number + /// + public Int32 OrderNumber { get; set; } + + /// + /// Number of devices assigned to this order number + /// + public Int32 Count { get; set; } + + /// + /// Number of assigned devices. + /// + public Int32 AssignedPicking { get; set; } + + /// + ///Number of pressure tested devices + /// + public Int32 PressureTested { get; set; } + + /// + /// Number of helium tested devices + /// + public Int32 HeliumTested { get; set; } } diff --git a/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs b/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs index 2123549c..b95af71d 100644 --- a/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs +++ b/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs @@ -15,14 +15,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { public static class OrderProgrammingParameters { - public static List GetProgrammingParameters(string PcbID, string connectionString) + public static List GetProgrammingParameters(String pcbID, String connectionString) { var ret = new List(); - var orderNr = 0; + Int32 orderNr; - - using (var dataacces = new SqlDataAccess(connectionString)) + using (var dataAccess = new SqlDataAccess(connectionString)) { var sb = new StringBuilder(); @@ -33,18 +32,18 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData sb.AppendLine($" left outer join Auftrag.dbo.AuftragPositionSerienNr mapSrn on map.[MapPcbIdToSerialNumber_SerialNumber] = mapSrn.SerienNr and mapSrn.Pruefgangnr = 0 "); sb.AppendLine($" left outer join Auftrag.dbo.AlleAuftragPositionen auftraginfo on auftraginfo.AuftragNr = mapSrn.AuftragNr and auftraginfo.PositionNr = mapSrn.PositionNr "); - sb.AppendLine($" where mapOrder.CordonelPressureTest_PcbId = '{PcbID}'"); + sb.AppendLine($" where mapOrder.CordonelPressureTest_PcbId = '{pcbID}'"); - var MapData = dataacces.ExecuteQuery(sb.ToString()); - if (MapData.Rows.Count != 1) + var mapData = dataAccess.ExecuteQuery(sb.ToString()); + if (mapData.Rows.Count != 1) { throw new ApplicationException("No base data found"); } - orderNr = (int)MapData.Rows[0]["CordonelPressureTest_FertigungsAuftragsNr"]; + orderNr = (Int32)mapData.Rows[0]["CordonelPressureTest_FertigungsAuftragsNr"]; } - var radioParams = OrderRadioParameter.GetRadioPramas(PcbID, connectionString); + var radioParams = OrderRadioParameter.GetRadioParams(pcbID, connectionString); ret.Add(new ProgrammingParameters("SENSUSRADIO_RadioAddress", BitConverter.GetBytes(radioParams.RadioAddress).Reverse().ToArray())); @@ -83,11 +82,11 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type); var vakoData = VakoParser.Parse(rawVako, rawMapping); - var CsdIdent = vakoData.KeyValues.FirstOrDefault(a => a.Name == "C_GEN_CSD").Value; + var csdIdent = vakoData.KeyValues.FirstOrDefault(a => a.Name == "C_GEN_CSD")?.Value; - using (var dataacces = new SqlDataAccess(connectionString)) + using (var dataAccess = new SqlDataAccess(connectionString)) { var sb = new StringBuilder(); sb.AppendLine($" SELECT "); @@ -103,47 +102,47 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { sb.AppendLine($" or (KEYNAME = '{item.Name}' and KeyValue = '{item.Charcode.Replace("\'", "\'\'")}') "); } - var MapData = dataacces.ExecuteQuery(sb.ToString()); + var mapData = dataAccess.ExecuteQuery(sb.ToString()); - foreach (DataRow row in MapData.Rows) + foreach (DataRow row in mapData.Rows) { - ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (byte[])row["RegisterValue"], ProgrammingSource.Vako)); + ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (Byte[])row["RegisterValue"])); } } - var MeterSize = BitConverter.ToUInt32(ret.Find(a => a.RegisterName == "GENESISFLOW_MeterSize").RegisterValue.Reverse().ToArray(), 0); - var DisplayUnits = BitConverter.ToInt32(ret.Find(a => a.RegisterName == "GENESISFLOW_DisplayUnits").RegisterValue.Reverse().ToArray(), 0); - var FlowUnits = BitConverter.ToInt32(ret.Find(a => a.RegisterName == "METROLOGYASST_FlowUnits").RegisterValue.Reverse().ToArray(), 0); + var meterSize = BitConverter.ToUInt32(ret.Find(a => a.RegisterName == "GENESISFLOW_MeterSize").RegisterValue.Reverse().ToArray(), 0); + var displayUnits = BitConverter.ToInt32(ret.Find(a => a.RegisterName == "GENESISFLOW_DisplayUnits").RegisterValue.Reverse().ToArray(), 0); + var flowUnits = BitConverter.ToInt32(ret.Find(a => a.RegisterName == "METROLOGYASST_FlowUnits").RegisterValue.Reverse().ToArray(), 0); - using (var dataacces = new SqlDataAccess(connectionString)) + using (var dataAccess = new SqlDataAccess(connectionString)) { var sb = new StringBuilder(); sb.AppendLine($" SELECT "); sb.AppendLine($" CordonelDnDisplayunitDisplaypow10_RegisterIdent as RegisterName, "); sb.AppendLine($" [CordonelDnDisplayunitDisplaypow10_DisplayPow10] as RegisterValue "); sb.AppendLine($" FROM [Auftrag].[dbo].[CordonelDnDisplayunitDisplaypow10] "); - sb.AppendLine($" where [CordonelDnDisplayunitDisplaypow10_MeterSize] = {MeterSize} "); - sb.AppendLine($" and [CordonelDnDisplayunitDisplaypow10_DisplayUnit] = {DisplayUnits} "); + sb.AppendLine($" where [CordonelDnDisplayunitDisplaypow10_MeterSize] = {meterSize} "); + sb.AppendLine($" and [CordonelDnDisplayunitDisplaypow10_DisplayUnit] = {displayUnits} "); sb.AppendLine($" union "); sb.AppendLine($" SELECT "); sb.AppendLine($" CordonelDnFlowUnitFlowPoint_RegisterIdent as RegisterName, "); sb.AppendLine($" CAST([CordonelDnFlowUnitFlowPoint_FlowPoint] AS varbinary) as RegisterValue "); sb.AppendLine($" FROM [Auftrag].[dbo].[CordonelDnFlowUnitFlowPoint] "); - sb.AppendLine($" where[CordonelDnFlowUnitFlowPoint_FlowUnit] = {FlowUnits} "); - sb.AppendLine($" and[CordonelDnFlowUnitFlowPoint_MeterSize] = {MeterSize} "); + sb.AppendLine($" where[CordonelDnFlowUnitFlowPoint_FlowUnit] = {flowUnits} "); + sb.AppendLine($" and[CordonelDnFlowUnitFlowPoint_MeterSize] = {meterSize} "); - var MapData = dataacces.ExecuteQuery(sb.ToString()); + var mapData = dataAccess.ExecuteQuery(sb.ToString()); - foreach (DataRow row in MapData.Rows) + foreach (DataRow row in mapData.Rows) { - ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), RegisterConverter.ConvertFrom(Convert.ToInt32(row["RegisterValue"])), ProgrammingSource.Vako)); + ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), RegisterConverter.ConvertFrom(Convert.ToInt32(row["RegisterValue"])))); } } - var retStr = LocalWebRequest.GetRequest($"http://sla12iis01/csdcore/csdservice/getstampings?CsdIdent={CsdIdent}&GroupId=1&ProductIdent=GNS&ProductDn={rawVako.Dn}&ShowOnlyValidStampings=0", 8000); + var retStr = LocalWebRequest.GetRequest($"http://sla12iis01/csdcore/csdservice/getstampings?CsdIdent={csdIdent}&GroupId=1&ProductIdent=GNS&ProductDn={rawVako.Dn}&ShowOnlyValidStampings=0", 8000); var retListRealCsd = JsonConvert.DeserializeObject>(retStr); if (retListRealCsd.Any()) { @@ -154,10 +153,6 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { ret.Add(new ProgrammingParameters(csdItemToConvert.Name, ByteStyler.Parse(csdItemToConvert.ValueText, false), ProgrammingSource.Csd)); } - else - { - //ret.Add(new ProgrammingParameters(csdItemToConvert.Name,rt.ValueText, ProgrammingSource.Csd)); - } } } @@ -167,7 +162,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { csv.AppendLine($"{item.RegisterName}={ByteStyler.ToString(item.RegisterValue)} (From{item.Source})"); } - var s = csv.ToString(); + return ret; } diff --git a/Common/Logic/ProductionOrderCore/OrderData/OrderRadioParameter.cs b/Common/Logic/ProductionOrderCore/OrderData/OrderRadioParameter.cs index 903276d2..13c6dad5 100644 --- a/Common/Logic/ProductionOrderCore/OrderData/OrderRadioParameter.cs +++ b/Common/Logic/ProductionOrderCore/OrderData/OrderRadioParameter.cs @@ -10,24 +10,23 @@ using Xylem.Common.Logic.SoftwareAccessHelper; namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { + /// + /// Radio parameter settings for a specific order. + /// public static class OrderRadioParameter { - - - public static RadioConfigurationParams GetRadioPramas(string PcbId, string connectionString, string pressure = "") + public static RadioConfigurationParams GetRadioParams(String pcbId, String connectionString, String pressure = "") { - var ret = new RadioConfigurationParams() + var ret = new RadioConfigurationParams { - PcbId = PcbId + PcbId = pcbId }; - var DefEncryptionKey = new List(); - DefEncryptionKey.AddRange((new Byte[] { 0x0E, 0x9F, 0xAC, 0xC6 }).ToArray()); - DefEncryptionKey.AddRange((new Byte[] { 0xA0, 0xE1, 0xEF, 0x1C }).ToArray()); - DefEncryptionKey.AddRange((new Byte[] { 0x3B, 0x27, 0xA4, 0x9B }).ToArray()); - DefEncryptionKey.AddRange((new Byte[] { 0xAC, 0x21, 0x65, 0x35 }).ToArray()); - - //ret.EncryptionKey = DefEncryptionKey.ToArray(); + var defEncryptionKey = new List(); + defEncryptionKey.AddRange(new Byte[] { 0x0E, 0x9F, 0xAC, 0xC6 }.ToArray()); + defEncryptionKey.AddRange(new Byte[] { 0xA0, 0xE1, 0xEF, 0x1C }.ToArray()); + defEncryptionKey.AddRange(new Byte[] { 0x3B, 0x27, 0xA4, 0x9B }.ToArray()); + defEncryptionKey.AddRange(new Byte[] { 0xAC, 0x21, 0x65, 0x35 }.ToArray()); using (var dataAccess = new SqlDataAccess(connectionString)) { @@ -37,7 +36,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData sb.AppendLine(" declare @DN nvarchar(50) "); sb.AppendLine(" declare @Length nvarchar(50) "); - sb.AppendLine($" set @PcbId= '{PcbId}' "); + sb.AppendLine($" set @PcbId= '{pcbId}' "); sb.AppendLine(" SELECT distinct "); sb.AppendLine(" @DN = ident.Nennweite, "); @@ -48,18 +47,19 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData sb.AppendLine(" inner join [Identnr] ident on ap.Identnr = ident.IdentNr "); sb.AppendLine(" where map.MapPcbIdToSerialNumber_PcbId = @PcbId "); - sb.AppendLine(" SELECT [DS_ID] ,[ID_PCB] ,[ID_TEST] ,[JSON], @DN as [DN] ,@Length as [Length] FROM [MyOraDB]..[DELTACHEF].[GENESIS_PCBRADIOTEST_PD] "); + sb.AppendLine(" SELECT [DS_ID] ,[ID_PCB] ,[ID_TEST] ,[JSON], @DN as [DN] ,@Length as [Length]" + + " FROM [MyOraDB]..[DELTACHEF].[GENESIS_PCBRADIOTEST_PD] "); sb.AppendLine(" where [ID_PCB] = @PcbId "); sb.AppendLine(" order by ID_TEST desc "); var dt = dataAccess.ExecuteQuery(sb.ToString()); - var LengthString = ""; + var lengthString = ""; var dnString = ""; foreach (var item in dt.Select()) { var jsonString = item["JSON"].ToString(); - LengthString = item["Length"].ToString(); + lengthString = item["Length"].ToString(); dnString = item["Dn"].ToString(); var radioTestResult = RadioTest.FromJson(jsonString); @@ -68,50 +68,32 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { try { - var offsetParams = radioTestResult.TestStepResults.Values.Where(s => s.Result.HasValue && s.Result.Value == Result.Pass && s.TestStepType == "PCB Send Set Frq Offset").OrderByDescending(o => o.Id); - if (offsetParams.Any()) + var offsetParams = radioTestResult.TestStepResults.Values.Where(s => s.Result.HasValue + && s.Result.Value == Result.Pass + && s.TestStepType == "PCB Send Set Frq Offset").OrderByDescending(o => o.Id); + var offsets = offsetParams.ToArray(); + if (offsets.Any()) { - ret.FrqOffset = (Int16)new System.ComponentModel.Int16Converter().ConvertFromString(offsetParams.First().TestValue); + ret.FrqOffset = Int16.Parse(offsets.First().TestValue); } } catch (Exception) { - - try - { - - if (radioTestResult.TestStepLoopCalibrate.Values.First().SLookupTablePower.Contains("868")) - { - ret.FrqOffset = (Int16)868; - } - else - { - ret.FrqOffset = (Int16)434; - } - } - catch (Exception) - { - - throw; - } + ret.FrqOffset = null; } + var a = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null + && w.LengthCode != null + && w.ResultCalibration.ToLower() == "ok" + && w.LengthCode.StartsWith($"DN{dnString}") + && w.LengthCode.Contains($"-{lengthString}{pressure}") + && !w.LengthCode.Contains($"-{lengthString}{pressure}o")).ToList(); + var ao = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null + && w.LengthCode != null + && w.ResultCalibration.ToLower() == "ok" + && w.LengthCode.StartsWith($"DN{dnString}") + && w.LengthCode.Contains($"-{lengthString}{pressure}o")).ToList(); - - - var a = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && ( w.LengthCode != null && w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}{pressure}") && !w.LengthCode.Contains($"-{LengthString}{pressure}o"))).ToList(); - var ao = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && (w.LengthCode != null && (w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}{pressure}o")))).ToList(); - var snb = new List(); - - foreach (var lengthItem in radioTestResult.TestStepLoopCalibrate.Values) - { - if (lengthItem != null) - { - snb.Add(lengthItem.LengthCode); - } - - - } if (a.Any() && ao.Any()) { if (uint.Parse(a.First().IPowerLevelCalculated) != 0) @@ -119,10 +101,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData ret.PowerLevel = uint.Parse(a.First().IPowerLevelCalculated); ret.PowerLevelOption = uint.Parse(ao.First().IPowerLevelCalculated); - ret.ImpedanceCodeNew = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); - - ret.ImpedanceCodeOption = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(ao.First().IAntennaMatching); + var x = new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeNew = (UInt32)x; + x = new System.ComponentModel.UInt32Converter().ConvertFromString(ao.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeOption = (UInt32)x; } } @@ -130,31 +115,27 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { ret.PowerLevel = uint.Parse(a.First().IPowerLevelCalculated); - ret.PowerLevelOption = uint.Parse(a.First().IPowerLevelCalculated); + ret.PowerLevelOption = ret.PowerLevel; - ret.ImpedanceCodeNew = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First()?.IAntennaMatching); + var x = new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeNew = (UInt32)x; - ret.ImpedanceCodeOption = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First()?.IAntennaMatching); + ret.ImpedanceCodeOption = ret.ImpedanceCodeNew; } } //return new RadioConfigurationParams();// Encoding.ASCII.GetString(bytes); - - //2992 2936 - - - } // kein powerlevel gefunden und die baulänge hat die selben einstellwerte wie 200 // gilt fuer alte register wo es nur 200 und 311 gab, die parameter für 200 sind gültig 200 - 300 - if (ret.PowerLevel == 0 && dnString == "50" && LengthString != "200" && LengthString != "311") + if (ret.PowerLevel == 0 && dnString == "50" && lengthString != "200" && lengthString != "311") { foreach (var item in dt.Select()) { var jsonString = item["JSON"].ToString(); - LengthString = "200"; - + lengthString = "200"; var radioTestResult = RadioTest.FromJson(jsonString); @@ -162,185 +143,140 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { if (radioTestResult.TestStepResults != null && radioTestResult.TestStepResults.Values.Any()) { - - - var offsetParams = radioTestResult.TestStepResults.Values.Where(s => s.Result.HasValue && s.Result.Value == Result.Pass && s.TestStepType == "PCB Send Set Frq Offset").OrderByDescending(o => o.Id); - if (offsetParams.Any()) + var offsetParams = radioTestResult.TestStepResults.Values.Where(s => s.Result.HasValue + && s.Result.Value == Result.Pass + && s.TestStepType == "PCB Send Set Frq Offset").OrderByDescending(o => o.Id); + var offsets = offsetParams.ToArray(); + if (offsets.Any()) { - ret.FrqOffset = (Int16)new System.ComponentModel.Int16Converter().ConvertFromString(offsetParams.First().TestValue); + ret.FrqOffset = Int16.Parse(offsets.First().TestValue); } } else { - if (radioTestResult.TestStepLoopCalibrate.Values.First().SLookupTablePower.Contains("433")) - { - ret.FrqOffset = 433; - } - else if (radioTestResult.TestStepLoopCalibrate.Values.First().SLookupTablePower.Contains("868")) - { - ret.FrqOffset = 868; - } - + ret.FrqOffset = null; } + var a = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null + && w.ResultCalibration.ToLower() == "ok" + && w.LengthCode.StartsWith($"DN{dnString}") + && w.LengthCode.Contains($"-{lengthString}{pressure}") + && !w.LengthCode.Contains($"-{lengthString}{pressure}o")).ToList(); + var ao = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null + && w.ResultCalibration.ToLower() == "ok" + && w.LengthCode.StartsWith($"DN{dnString}") + && w.LengthCode.Contains($"-{lengthString}{pressure}o")).ToList(); - - var a = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && (w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}{pressure}") && !w.LengthCode.Contains($"-{LengthString}{pressure}o"))).ToList(); - var ao = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && (w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}") && w.LengthCode.Contains($"-{LengthString}{pressure}o"))).ToList(); - var snb = new List(); - - foreach (var lengthItem in radioTestResult.TestStepLoopCalibrate.Values) - { - if (lengthItem != null) - { - snb.Add(lengthItem.LengthCode); - } - - - } if (a.Any() && ao.Any()) { ret.PowerLevel = uint.Parse(a.First().IPowerLevelCalculated); ret.PowerLevelOption = uint.Parse(ao.First().IPowerLevelCalculated); - ret.ImpedanceCodeNew = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + var x = new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeNew = (UInt32)x; - ret.ImpedanceCodeOption = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(ao.First().IAntennaMatching); + x = new System.ComponentModel.UInt32Converter().ConvertFromString(ao.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeOption = (UInt32)x; } if (a.Any() && !ao.Any()) { ret.PowerLevel = uint.Parse(a.First().IPowerLevelCalculated); - ret.PowerLevelOption = uint.Parse(a.First().IPowerLevelCalculated); + ret.PowerLevelOption = ret.PowerLevel; - ret.ImpedanceCodeNew = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + var x = new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + if (x != null) + ret.ImpedanceCodeNew = (UInt32)x; - ret.ImpedanceCodeOption = (UInt32)new System.ComponentModel.UInt32Converter().ConvertFromString(a.First().IAntennaMatching); + ret.ImpedanceCodeOption = ret.ImpedanceCodeNew; } } - //return new RadioConfigurationParams();// Encoding.ASCII.GetString(bytes); - - - //2992 2936 - - - } } - //return new RadioConfigurationParams();// } - using (var dataacces = new SqlDataAccess(connectionString)) + using (var dataAccess = new SqlDataAccess(connectionString)) { - - var sb = new StringBuilder(); - sb.AppendLine( - $" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber],Adresse,FunkschluesselIndex,SENSUSRADIO_PowerLevel, SENSUSRADIO_PowerLevelOption, SENSUSRADIO_ImpedanceCodeNew,SENSUSRADIO_ImpedanceCodeOption "); + sb.AppendLine($" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber],Adresse,FunkschluesselIndex,SENSUSRADIO_PowerLevel," + + $" SENSUSRADIO_PowerLevelOption, SENSUSRADIO_ImpedanceCodeNew,SENSUSRADIO_ImpedanceCodeOption "); sb.AppendLine($" FROM [Auftrag].[dbo].[MapPcbIdToSerialNumber] pcb "); - sb.AppendLine( - $" left outer join tmpRadioConfig radio on radio.pcbID = pcb.MapPcbIdToSerialNumber_PcbId"); - sb.AppendLine( - $" inner join Genesis_Meter meter on meter.Seriennummer = pcb.MapPcbIdToSerialNumber_SerialNumber"); - sb.AppendLine($" where [MapPcbIdToSerialNumber_PcbId] = '{PcbId}'"); + sb.AppendLine($" left outer join tmpRadioConfig radio on radio.pcbID = pcb.MapPcbIdToSerialNumber_PcbId"); + sb.AppendLine($" inner join Genesis_Meter meter on meter.Seriennummer = pcb.MapPcbIdToSerialNumber_SerialNumber"); + sb.AppendLine($" where [MapPcbIdToSerialNumber_PcbId] = '{pcbId}'"); - - - - var MapData = dataacces.ExecuteQuery(sb.ToString()); - if (MapData.Rows.Count != 1) + var mapData = dataAccess.ExecuteQuery(sb.ToString()); + if (mapData.Rows.Count != 1) { return ret; } - if (!(MapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"] is DBNull) || !string.IsNullOrEmpty(MapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"].ToString())) + if (!(mapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"] is DBNull) || + !string.IsNullOrEmpty(mapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"].ToString())) { - ret.SerialNumber = Convert.ToUInt32(MapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"]); + ret.SerialNumber = Convert.ToUInt32(mapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"]); } else { return ret; } - if (!(MapData.Rows[0]["Adresse"] is DBNull) && MapData.Rows[0]["Adresse"].ToString() != "0") + if (!(mapData.Rows[0]["Adresse"] is DBNull) && mapData.Rows[0]["Adresse"].ToString() != "0") { - ret.RadioAddress = Convert.ToUInt32((long)MapData.Rows[0]["Adresse"] - 10000000000); + ret.RadioAddress = Convert.ToUInt32((Int64)mapData.Rows[0]["Adresse"] - 10000000000); } - - //if inde - - - if (!(MapData.Rows[0]["FunkschluesselIndex"] is DBNull) && MapData.Rows[0]["FunkschluesselIndex"].ToString() != "0") + if (!(mapData.Rows[0]["FunkschluesselIndex"] is DBNull) && mapData.Rows[0]["FunkschluesselIndex"].ToString() != "0") { ret.EncryptionKey = null; //20805053|3147665|10402000894 - var indexParams = MapData.Rows[0]["FunkschluesselIndex"].ToString().Split('|'); + var indexParams = mapData.Rows[0]["FunkschluesselIndex"].ToString().Split('|'); - var rawKey = getRadioRandomKey("d5b8c0b2-81f6-4421-80d0-44eb2093e616", indexParams[1], indexParams[2]); + var rawKey = GetRadioRandomKey("d5b8c0b2-81f6-4421-80d0-44eb2093e616", indexParams[1], indexParams[2]); + var encryptionKey = new List(); - var encryptionKey = new List(); - - for (int i = 0; i < rawKey.Length / 2; i++) + for (var i = 0; i < rawKey.Length / 2; i++) { - encryptionKey.Add(Byte.Parse(rawKey.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber)); - - - + encryptionKey.Add(byte.Parse(rawKey.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber)); } ret.EncryptionKey = encryptionKey.ToArray(); - - - } else { - ret.EncryptionKey = DefEncryptionKey.ToArray(); + ret.EncryptionKey = defEncryptionKey.ToArray(); } - - - - return ret; } } - private static string getRadioRandomKey(string Token, string orderNumber, string radioAdress) + private static String GetRadioRandomKey(String token, String orderNumber, String radioAdress) { - - ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => - { - return true; - }; + ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; //var Url = $"{ServiceUrls.KeyServerCustom()}devices - var Url = $"https://nodes.sms-esaap.com/keygenproxy/api/v2/keys/devices?orderNumber={orderNumber}&radioaddress={radioAdress}"; - var header = new Dictionary(); + var url = $"https://nodes.sms-esaap.com/keygenproxy/api/v2/keys/devices?orderNumber={orderNumber}&radioaddress={radioAdress}"; + var header = new Dictionary(); header.Add("Cache-Control", "no-cache"); - header.Add("X-Node-Token", Token); + header.Add("X-Node-Token", token); try { - - var responseJson = LocalWebRequest.GetRequest(Url: Url, TimeoutMS: 10000, Header: header); + var responseJson = LocalWebRequest.GetRequest(url, 10000, header); responseJson = responseJson.Trim('"'); - return responseJson; - } catch (Exception ex) { throw new ApplicationException("Fatal exception while getting keys from server", ex); } - } - } - } diff --git a/Common/Logic/ProductionOrderCore/OrderData/ScanToSerialNr.cs b/Common/Logic/ProductionOrderCore/OrderData/ScanToSerialNr.cs index 114259ff..5ed3cad0 100644 --- a/Common/Logic/ProductionOrderCore/OrderData/ScanToSerialNr.cs +++ b/Common/Logic/ProductionOrderCore/OrderData/ScanToSerialNr.cs @@ -1,64 +1,59 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.OrderData { + /// + /// Conversion of scanned number to serial number + /// public static class ScanToSerialNr { - public static bool ConvertScanToSerialNr(string Scan ,out int internalSerialNr,out string customerSr) + public static Boolean ConvertScanToSerialNr(String scan ,out Int32 internalSerialNr,out String customerSr) { customerSr = ""; internalSerialNr = -1; try { - int ret = 0; - var prefix = "8SEN20"; - var length = 9; + const String prefix = "8SEN20"; + const Int32 length = 9; - if (Scan.Contains(",")) + if (scan.Contains(",")) { - customerSr = Scan.Substring(0, Scan.IndexOf(",")); + customerSr = scan.Substring(0, scan.IndexOf(",", StringComparison.Ordinal)); } - if (Scan.StartsWith(prefix)) + if (scan.StartsWith(prefix)) { - Scan = Scan.Substring(prefix.Length, length); - if (!Scan.EndsWith(",")) + scan = scan.Substring(prefix.Length, length); + if (!scan.EndsWith(",")) { throw new ApplicationException("Could not parse serial number"); } - else - { - Scan = Scan.TrimEnd(','); - } + + scan = scan.TrimEnd(','); } - if (int.TryParse(Scan, out ret)) + if (int.TryParse(scan, out var ret)) { internalSerialNr = ret; return true; } - if (Scan.Length == 11 && Scan.StartsWith("10")) + if (scan.Length == 11 && scan.StartsWith("10")) { - customerSr = Scan.Substring(2, 9); + customerSr = scan.Substring(2, 9); return true; } throw new ApplicationException("Could not parse serial number"); } - catch (Exception ex) + catch (Exception ) { return false; } - } - - + } } diff --git a/Common/Logic/ProductionOrderCore/OrderState.cs b/Common/Logic/ProductionOrderCore/OrderState.cs index 53825adc..4289e210 100644 --- a/Common/Logic/ProductionOrderCore/OrderState.cs +++ b/Common/Logic/ProductionOrderCore/OrderState.cs @@ -1,5 +1,8 @@ -namespace Xylem.Common.Logic.RelatePcb.ProductionOrderCore +namespace Xylem.Common.Logic.ProductionOrderCore { + /// + /// Enumeration of order state + /// public enum OrderState { Created, diff --git a/Common/Logic/ProductionOrderCore/ProcessState/PressureTestResult.cs b/Common/Logic/ProductionOrderCore/ProcessState/PressureTestResult.cs index 6cb66b91..94f7f4b4 100644 --- a/Common/Logic/ProductionOrderCore/ProcessState/PressureTestResult.cs +++ b/Common/Logic/ProductionOrderCore/ProcessState/PressureTestResult.cs @@ -1,14 +1,22 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.ProcessState { public class PressureTestResult { - public bool Passed { get; set; } - public int? StationId { get; set; } - public string FreeText { get; set; } + /// + /// Test passed successfully + /// + public Boolean Passed { get; set; } + + /// + /// Identifier of test station + /// + public Int32? StationId { get; set; } + + /// + /// Test from operator + /// + public String FreeText { get; set; } } } diff --git a/Common/Logic/ProductionOrderCore/ProgrammingParameters.cs b/Common/Logic/ProductionOrderCore/ProgrammingParameters.cs index 6d953a52..fa3c3884 100644 --- a/Common/Logic/ProductionOrderCore/ProgrammingParameters.cs +++ b/Common/Logic/ProductionOrderCore/ProgrammingParameters.cs @@ -1,21 +1,43 @@ -namespace Xylem.Common.Logic.ProductionOrderCore +using System; + +namespace Xylem.Common.Logic.ProductionOrderCore { + /// + /// Source for final properties of Cordonel + /// public enum ProgrammingSource { Vako, - Csd, + Csd } + + /// + /// Values for single registers + /// public class ProgrammingParameters { - public ProgrammingParameters(string registerName, byte[] registerValue, ProgrammingSource programmingSource = ProgrammingSource.Vako) + /// + /// Single register setup value assignment + /// + /// + /// + /// + public ProgrammingParameters(String registerName, Byte[] registerValue, ProgrammingSource programmingSource = ProgrammingSource.Vako) { RegisterName = registerName; RegisterValue = registerValue; Source = programmingSource; } - public string RegisterName { get; set; } - public byte[] RegisterValue { get; set; } + /// + /// 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; } diff --git a/Common/Logic/ProductionOrderCore/TestResults/PressureResultData.cs b/Common/Logic/ProductionOrderCore/TestResults/PressureResultData.cs index b89bb87e..e78a6c97 100644 --- a/Common/Logic/ProductionOrderCore/TestResults/PressureResultData.cs +++ b/Common/Logic/ProductionOrderCore/TestResults/PressureResultData.cs @@ -1,85 +1,54 @@ using System; using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; namespace Xylem.Common.Logic.ProductionOrderCore.TestResults { + /// + /// Container for pressure test results + /// public class PressureResultData { - public string PcbId; - + /// + /// Unique identifier for PCB + /// + public String PcbId; - private int rev = 0; + /// + /// Revision + /// + public Int32 Rev { get; set; } = 0; - public int Rev - { - get { return rev; } - set - { - rev = value; - } - } - private bool? passed = false; - public bool? Passed - { - get { return passed; } - set - { - passed = value; - } - } + /// + /// Optional passed test + /// + public Boolean? Passed { get; set; } = false; + + /// + /// Operator name + /// + public String TesterName { get; set; } = "C. Röhl"; + + /// + /// Applied test pressure + /// + public String TestPressure { get; set; } = "6"; + + + /// + /// Leakage rate + /// + public String LeakRate { get; set; } = " 1E-5"; + /// + /// Operator comment + /// + public String Remark { get; set; } = ""; - private string testerName = "C. Röhl"; - public String TesterName - { - get { return testerName; } - set - { - testerName = value; - } - } - - private string testPressure = "6"; - public String TestPressure - { - get { return testPressure; } - set - { - testPressure = value; - } - } - - - private string leakRate = " 1E-5"; - public String LeakRate - { - get { return leakRate; } - set - { - leakRate = value; - } - } - - private string remark = ""; - public String Remark - { - get { return remark; } - set - { - remark = value; - } - } - - - - public List Testpoints; + /// + /// Test points + /// + public List TestPoints; } } diff --git a/Common/Logic/ProductionOrderCore/TestResults/PressureTestPoints.cs b/Common/Logic/ProductionOrderCore/TestResults/PressureTestPoints.cs index a0387bc4..0831044b 100644 --- a/Common/Logic/ProductionOrderCore/TestResults/PressureTestPoints.cs +++ b/Common/Logic/ProductionOrderCore/TestResults/PressureTestPoints.cs @@ -1,14 +1,20 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Xylem.Common.Logic.ProductionOrderCore.TestResults { + /// + /// Pressure test point container + /// public class PressureTestPoints { - public int Ident { get; set; } - public string Input { get; set; } + /// + /// Just a number + /// + public Int32 Ident { get; set; } + + /// + /// Text input + /// + public String Input { get; set; } } } diff --git a/Common/Logic/ProductionOrderCore/Vako/DbAdapter.cs b/Common/Logic/ProductionOrderCore/Vako/DbAdapter.cs index 555eb083..96b308d4 100644 --- a/Common/Logic/ProductionOrderCore/Vako/DbAdapter.cs +++ b/Common/Logic/ProductionOrderCore/Vako/DbAdapter.cs @@ -1,43 +1,59 @@ -using Service.Core; +using System; +using Service.Core; using System.Collections.Generic; using System.Data; using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// VAKO extractor from data base + /// public static class VakoDbAdapter { - public static RawVako GetRawVako(string DbConnectionString, int FertigungsAuftragsNr) + /// + /// Collect the VAKO from data base + /// + /// + /// + /// + public static RawVako GetRawVako(String dbConnectionString, Int32 fertigungsAuftragsNr) { - using (var dataacces = new SqlDataAccess(DbConnectionString)) + using (var dataAccess = new SqlDataAccess(dbConnectionString)) { var sb = new StringBuilder(); sb.AppendLine($" select distinct ident.VakoCode, ident.Identnr,ident.Typ , ident.Nennweite,ident.Baulaenge from Auftrag.dbo.AuftragPosition_Gesamt auftraginfo "); sb.AppendLine($" left outer join Auftrag.dbo.Identnr ident on auftraginfo.IdentNr = ident.IdentNr "); - sb.AppendLine($" where FertigungsauftragNr = {FertigungsAuftragsNr} "); + sb.AppendLine($" where FertigungsauftragNr = {fertigungsAuftragsNr} "); - var MapData = dataacces.ExecuteQuery(sb.ToString()); - if (MapData.Rows.Count != 1) + var mapData = dataAccess.ExecuteQuery(sb.ToString()); + if (mapData.Rows.Count != 1) { return new RawVako(); } - return new RawVako() + return new RawVako { - VakoString = MapData.Rows[0]["VakoCode"].ToString(), - VakoIdent = (int)MapData.Rows[0]["Identnr"], - Type = MapData.Rows[0]["Typ"].ToString(), - Dn = (int)MapData.Rows[0]["Nennweite"], - Length = (int)MapData.Rows[0]["Baulaenge"], + VakoString = mapData.Rows[0]["VakoCode"].ToString(), + VakoIdent = (Int32)mapData.Rows[0]["Identnr"], + Type = mapData.Rows[0]["Typ"].ToString(), + Dn = (Int32)mapData.Rows[0]["Nennweite"], + Length = (Int32)mapData.Rows[0]["Baulaenge"], }; } } - public static List GetVakoMapping(string DbConnectionString, string Basis) + /// + /// Collect the VAKO properties + /// + /// + /// + /// + public static List GetVakoMapping(String dbConnectionString, String basis) { - using (var dataacces = new SqlDataAccess(DbConnectionString)) + using (var dataAccess = new SqlDataAccess(dbConnectionString)) { var sb = new StringBuilder(); @@ -58,46 +74,41 @@ namespace Xylem.Common.Logic.ProductionOrderCore.Vako sb.AppendLine($" ,[SAPReihenfolge] "); sb.AppendLine($" ,[AnlageDatum] "); sb.AppendLine($" FROM [Auftrag].[dbo].[VAKO_Merkmale] "); - sb.AppendLine($" where [Basis] = '{Basis}' "); + sb.AppendLine($" where [Basis] = '{basis}' "); - var MapData = dataacces.ExecuteQuery(sb.ToString()); + var mapData = dataAccess.ExecuteQuery(sb.ToString()); var ret = new List(); //if (MapData.Rows.Count != 1) //{ // return ret; //} - foreach (var rawrow in MapData.Rows) + foreach (var rawRow in mapData.Rows) { - if (rawrow is DataRow row) + if (rawRow is DataRow row) { ret.Add(new VakoMap() { - Basis = Basis, - Id = (int)row["Id"], - Schluessel = row["Schluessel"].ToString(), + Basis = basis, + Id = (Int32)row["Id"], + Schluessel = row["Schluessel"].ToString(), Basislist = row["Basislist"].ToString(), Name = row["Name"].ToString(), Bezeichnung = row["Bezeichnung"].ToString(), - Stelle = (int)row["Stelle"], - Laenge = (int)row["Laenge"], + Stelle = (Int32)row["Stelle"], + Laenge = (Int32)row["Laenge"], Charcode = row["Charcode"].ToString(), Wert = row["Wert"].ToString(), Bemerkung = row["Bemerkung"].ToString(), - NachSap = (bool)row["NachSap"], + NachSap = (Boolean)row["NachSap"], SapText = row["SAPText"].ToString(), - SapReihenfolge = row["SAPReihenfolge"].GetType() == typeof(System.DBNull) ? 0 : (int)row["SAPReihenfolge"], - AnlageDatum = (System.DateTime)row["AnlageDatum"], + SapReihenfolge = row["SAPReihenfolge"] is DBNull ? 0 : (Int32)row["SAPReihenfolge"], + AnlageDatum = (DateTime)row["AnlageDatum"], }); } - } - return ret; + return ret; } } - - - - } } diff --git a/Common/Logic/ProductionOrderCore/Vako/RawVako.cs b/Common/Logic/ProductionOrderCore/Vako/RawVako.cs index 7432b891..19ceae3e 100644 --- a/Common/Logic/ProductionOrderCore/Vako/RawVako.cs +++ b/Common/Logic/ProductionOrderCore/Vako/RawVako.cs @@ -1,16 +1,35 @@ using System; -using System.Collections.Generic; -using System.Linq; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// Container for raw VAKO settings + /// public class RawVako { - public string VakoString { get; internal set; } - public string Type { get; internal set; } - public int VakoIdent { get; internal set; } + /// + /// The VAKO string + /// + public String VakoString { get; internal set; } + + /// + /// VAKO type + /// + public String Type { get; internal set; } + + /// + /// VAKO identifier + /// + public Int32 VakoIdent { get; internal set; } - public int Dn { get; internal set; } - public int Length { get; internal set; } + /// + /// Meter tube size in mm or inc + /// + public Int32 Dn { get; internal set; } + + /// + /// Length of tube + /// + public Int32 Length { get; internal set; } } } diff --git a/Common/Logic/ProductionOrderCore/Vako/VakoData.cs b/Common/Logic/ProductionOrderCore/Vako/VakoData.cs index 46c158e1..af930a5f 100644 --- a/Common/Logic/ProductionOrderCore/Vako/VakoData.cs +++ b/Common/Logic/ProductionOrderCore/Vako/VakoData.cs @@ -1,14 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// Collection of values for a specific VAKO key + /// public class VakoData { + /// + /// Values of VAKO key + /// public List KeyValues { get; set; } - - } } diff --git a/Common/Logic/ProductionOrderCore/Vako/VakoKeyValue.cs b/Common/Logic/ProductionOrderCore/Vako/VakoKeyValue.cs index 9565824e..048b833a 100644 --- a/Common/Logic/ProductionOrderCore/Vako/VakoKeyValue.cs +++ b/Common/Logic/ProductionOrderCore/Vako/VakoKeyValue.cs @@ -1,16 +1,35 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// VAKO key collection + /// public class VakoKeyValue { - public string Key { get; set; } - public string Name { get; set; } - public string Desc { get; set; } - public string Charcode { get; set; } - public string Value { get; set; } + /// + /// Key as string + /// + public String Key { get; set; } + + /// + /// Name of key + /// + public String Name { get; set; } + + /// + /// Comment for this key + /// + public String Desc { get; set; } + + /// + /// Character decoding + /// + public String Charcode { get; set; } + + /// + /// Value of key + /// + public String Value { get; set; } } } diff --git a/Common/Logic/ProductionOrderCore/Vako/VakoMap.cs b/Common/Logic/ProductionOrderCore/Vako/VakoMap.cs index ccdcc888..1710a871 100644 --- a/Common/Logic/ProductionOrderCore/Vako/VakoMap.cs +++ b/Common/Logic/ProductionOrderCore/Vako/VakoMap.cs @@ -2,22 +2,25 @@ namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// Mapping of VAKO + /// public class VakoMap { - public int Id { get; set; } - public string Schluessel { get; set; } - public string Basis { get; set; } - public string Basislist { get; set; } - public string Name { get; set; } - public string Bezeichnung { get; set; } - public int Stelle { get; set; } - public int Laenge { get; set; } - public string Charcode { get; set; } - public string Wert { get; set; } - public string Bemerkung { get; set; } - public bool NachSap { get; set; } - public string SapText { get; set; } - public int SapReihenfolge { get; set; } + public Int32 Id { get; set; } + public String Schluessel { get; set; } + public String Basis { get; set; } + public String Basislist { get; set; } + public String Name { get; set; } + public String Bezeichnung { get; set; } + public Int32 Stelle { get; set; } + public Int32 Laenge { get; set; } + public String Charcode { get; set; } + public String Wert { get; set; } + public String Bemerkung { get; set; } + public Boolean NachSap { get; set; } + public String SapText { get; set; } + public Int32 SapReihenfolge { get; set; } public DateTimeOffset AnlageDatum { get; set; } } } diff --git a/Common/Logic/ProductionOrderCore/Vako/VakoParser.cs b/Common/Logic/ProductionOrderCore/Vako/VakoParser.cs index 924a22e7..03b6ed01 100644 --- a/Common/Logic/ProductionOrderCore/Vako/VakoParser.cs +++ b/Common/Logic/ProductionOrderCore/Vako/VakoParser.cs @@ -1,33 +1,46 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { + /// + /// VAKO decoder + /// public static class VakoParser { + /// + /// Parser of VAKO code + /// + /// + /// + /// public static VakoData Parse(RawVako rawVako, List vakoMaps) { - var ret = new VakoData(); - ret.KeyValues = new List(); - - var d = vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge)); - //d = 99 - foreach (var checkVakoIsMatching in vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge))) + var ret = new VakoData { - var acctualStart = checkVakoIsMatching.Key.Item1 - 1; - var acctualLenght = checkVakoIsMatching.Key.Item2; - var acctualChars = rawVako.VakoString.Substring(acctualStart, acctualLenght); + KeyValues = new List() + }; + + //var d = vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge)); + //d = 99 + foreach (var checkVakoIsMatching in vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge))) + { + var actualStart = checkVakoIsMatching.Key.Item1 - 1; + var actualLength = checkVakoIsMatching.Key.Item2; + var actualChars = rawVako.VakoString.Substring(actualStart, actualLength); - var Matches = checkVakoIsMatching.Where(c => c.Charcode == acctualChars); - if (!Matches.Any()) + var matches = checkVakoIsMatching.Where(c => c.Charcode == actualChars); + // ReSharper disable once PossibleMultipleEnumeration + if (!matches.Any()) { //no match warning! } - if (Matches.Count() == 1) + // ReSharper disable once PossibleMultipleEnumeration + if (matches.Count() == 1) { - var match = Matches.First(); + // ReSharper disable once PossibleMultipleEnumeration + var match = matches.First(); ret.KeyValues.Add(new VakoKeyValue { Desc = match.Bemerkung, @@ -37,17 +50,9 @@ namespace Xylem.Common.Logic.ProductionOrderCore.Vako Value = match.Wert, }); } - else - { - //todo warning - } } - - - - + return ret; } - } } diff --git a/Common/ProductionUiCordonel/Data/PressureResultDataNotifyable.cs b/Common/ProductionUiCordonel/Data/PressureResultDataNotifyable.cs index 5ef0391e..b0fe1932 100644 --- a/Common/ProductionUiCordonel/Data/PressureResultDataNotifyable.cs +++ b/Common/ProductionUiCordonel/Data/PressureResultDataNotifyable.cs @@ -26,7 +26,7 @@ namespace ProductionUiCordonel.Data Rev = baseData.Rev; TesterName = baseData.TesterName; Testpoints = new ObservableCollection(); - baseData.Testpoints.ForEach(o => Testpoints.Add(o)); + baseData.TestPoints.ForEach(o => Testpoints.Add(o)); TestPressure = baseData.TestPressure; } public PressureResultDataNotifyable() @@ -151,7 +151,7 @@ namespace ProductionUiCordonel.Data baseData.Remark = Remark; baseData.Rev = Rev; baseData.TesterName = TesterName; - baseData.Testpoints = Testpoints.ToList(); + baseData.TestPoints = Testpoints.ToList(); baseData.TestPressure = TestPressure; return baseData; } diff --git a/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs b/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs index 211c2cf7..c882f060 100644 --- a/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs +++ b/Common/Service/MeterProcessState/Controllers/FileUpToDateController.cs @@ -214,7 +214,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers sb.AppendLine($" , '{crc}' "); sb.AppendLine($" , '{Metersize}' "); sb.AppendLine($" , '{Region}' "); - sb.AppendLine($" , 0 "); // [CurrentVerionForProd] + sb.AppendLine($" , 0 "); // [CurrentVersionForProd] sb.AppendLine($" select @@IDENTITY "); var retDT = dataacces.ExecuteQuery(sb.ToString()); @@ -269,7 +269,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers sb.AppendLine($" ,[FileCrc] "); sb.AppendLine($" ,[MeterSize] "); sb.AppendLine($" ,[Region] "); - sb.AppendLine($" ,[CurrentVerionForProd] "); + sb.AppendLine($" ,[CurrentVersionForProd] "); sb.AppendLine($" ,files.[FileName] "); sb.AppendLine($" ,files.FileContent "); sb.AppendLine($" FROM [Auftrag].[dbo].[Cordonel_Lut] lut "); @@ -287,7 +287,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers } if (ForProd.HasValue) { - sb.AppendLine($" and CurrentVerionForProd ={(ForProd.Value? "1" : "0") } "); + sb.AppendLine($" and CurrentVersionForProd ={(ForProd.Value? "1" : "0") } "); } var retDT = dataacces.ExecuteQuery(sb.ToString()); diff --git a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs index 95c67927..75f5a498 100644 --- a/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs +++ b/Common/Service/MeterProcessState/Controllers/FinalCheckController.cs @@ -1,8 +1,4 @@ -using Logic.ProductionToProductMapper.Cordonel; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Service.Core; -using System; +using System; using System.Collections.Generic; using System.Data; using System.Linq; @@ -11,45 +7,42 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using System.Web.Http; +using Logic.ProductionToProductMapper.Cordonel; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Service.Core; using Xylem.Common.Logic.ProductionOrderCore; using Xylem.Common.Logic.ProductionOrderCore.KitronTestResults; using Xylem.Common.Logic.ProductionOrderCore.OrderData; using Xylem.Common.Logic.ProductionOrderCore.Vako; -namespace Service.MeterProcessState.Controllers +namespace Xylem.Common.Service.MeterProcessState.Controllers { [RoutePrefix("api/FinalCheck")] public class FinalCheckController : ApiController { - - - public static class GlobalConfig { - public static Lazy connectionString = new Lazy(() - => - System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString + public static Lazy ConnectionString = new Lazy(() + => System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString ); } - //LocalWebRequest - - /// /// Get Radio Configuration from database matching the PcbID /// - /// PcbID from Meter + /// PcbID from Meter /// [Route("GetProgrammingParameters"), HttpGet] - public async Task GetProgrammingParameters(string PcbID) + public async Task GetProgrammingParameters(String pcbID) { try { return await Task.Run(() => { var builder = new StringBuilder(); - var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.connectionString.Value); + var ret = OrderProgrammingParameters.GetProgrammingParameters(pcbID, GlobalConfig.ConnectionString.Value); foreach (var r in ret.Where(r => r.RegisterName == "SENSUSRADIO_EncryptionKey")) { foreach (var t in r.RegisterValue) @@ -77,30 +70,26 @@ namespace Service.MeterProcessState.Controllers /// PcbID from Meter /// [Route("GetEncryptionKey"), HttpGet] - public async Task GetEncryptionKey(string PcbID) + public async Task GetEncryptionKey(String PcbID) { try { return await Task.Run(() => { var builder = new StringBuilder(); - var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.connectionString.Value); + var ret = OrderProgrammingParameters.GetProgrammingParameters(PcbID, GlobalConfig.ConnectionString.Value); - var key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Csd); + var key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Csd) ?? + ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Vako); - if (key == null) + if (key != null) { - key = ret.FirstOrDefault(r => r.RegisterName == "SENSUSRADIO_EncryptionKey" && r.Source == ProgrammingSource.Vako); + foreach (var t in key.RegisterValue) + { + builder.Append(t.ToString("x2")); + } } - - - foreach (var t in key.RegisterValue) - { - builder.Append(t.ToString("x2")); - } - - - + return Request.CreateResponse(HttpStatusCode.OK, builder.ToString()); }); @@ -117,14 +106,14 @@ namespace Service.MeterProcessState.Controllers /// PcbID from Meter /// [Route("GetRadioConfiguration"), HttpGet] - public async Task GetRadioConfiguration(string PcbID, bool withPressure) + public async Task GetRadioConfiguration(String PcbID, Boolean withPressure) { try { return await Task.Run(() => { - var radio = OrderRadioParameter.GetRadioPramas(PcbID, GlobalConfig.connectionString.Value, withPressure ? "p" : ""); + var radio = OrderRadioParameter.GetRadioParams(PcbID, GlobalConfig.ConnectionString.Value, withPressure ? "p" : ""); if (radio != null) { @@ -158,13 +147,13 @@ namespace Service.MeterProcessState.Controllers /// PcbID from Meter /// [Route("GetConfiguration"), HttpGet] - public async Task GetConfiguration(string PcbID) + public async Task GetConfiguration(String PcbID) { try { return await Task.Run(() => { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { @@ -181,9 +170,9 @@ namespace Service.MeterProcessState.Controllers } //MapData.Rows[0]["Adresse"] - var ra = (long)MapData.Rows[0]["Adresse"] - 10000000000; + var ra = (Int64)MapData.Rows[0]["Adresse"] - 10000000000; - var resultDic = new Dictionary(); + var resultDic = new Dictionary(); resultDic.Add("SENSUSRADIO_RadioAddress", ra); @@ -220,13 +209,13 @@ namespace Service.MeterProcessState.Controllers [Route("GetOrderOverview"), HttpGet] - public async Task GetOrderOverview(int ProductionOrderNumber, int? CheckPcbId = null) + public async Task GetOrderOverview(Int32 ProductionOrderNumber, Int32? CheckPcbId = null) { try { return await Task.Run(async () => { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { @@ -281,10 +270,10 @@ namespace Service.MeterProcessState.Controllers foreach (DataRow row in MapData.Rows) { - ret.Count = (int)row["menge"]; - ret.AssignedPicking = (int)row["AssignedPicking"]; - ret.PressureTested = (int)row["PressureTested"]; - ret.HeliumTested = (int)row["HeliumTested"]; + ret.Count = (Int32)row["menge"]; + ret.AssignedPicking = (Int32)row["AssignedPicking"]; + ret.PressureTested = (Int32)row["PressureTested"]; + ret.HeliumTested = (Int32)row["HeliumTested"]; } if (CheckPcbId.HasValue) { @@ -310,12 +299,12 @@ namespace Service.MeterProcessState.Controllers } } [Route("GetKitronProductionResults"), HttpGet] - public async Task GetKitronProductionResults(int? SerialNumber = null, string PcbID = "") + public async Task GetKitronProductionResults(Int32? SerialNumber = null, String PcbID = "") { try { - var ret = new Dictionary(); - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + var ret = new Dictionary(); + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { @@ -378,12 +367,12 @@ namespace Service.MeterProcessState.Controllers [Route("GetKitronProductionDate"), HttpGet] - public async Task GetKitronProductionDate(int CheckPcbId) + public async Task GetKitronProductionDate(Int32 CheckPcbId) { try { var ret = new DateTimeOffset(); - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { @@ -435,12 +424,12 @@ namespace Service.MeterProcessState.Controllers [Route("GetPossibleRadioLengths"), HttpGet] - public async Task GetPossibleRadioLengths(int CheckPcbId) + public async Task GetPossibleRadioLengths(Int32 CheckPcbId) { try { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { var sb = new StringBuilder(); @@ -451,8 +440,8 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine(" where [ID_PCB] = @PcbId "); sb.AppendLine(" order by ID_TEST desc "); var dt = dataacces.ExecuteQuery(sb.ToString()); - int? frq = null; - var listLength = new List(); + Int32? frq = null; + var listLength = new List(); foreach (var item in dt.Select()) { try @@ -491,7 +480,7 @@ namespace Service.MeterProcessState.Controllers } - var sbRet = new List(); + var sbRet = new List(); foreach (var item in listLength) { @@ -529,7 +518,7 @@ namespace Service.MeterProcessState.Controllers } [Route("GetOrderDetails"), HttpGet] - public async Task GetOrderDetails(int ProductionOrderNumber, int? CheckPcbId = null) + public async Task GetOrderDetails(Int32 ProductionOrderNumber, Int32? CheckPcbId = null) { try { @@ -542,14 +531,14 @@ namespace Service.MeterProcessState.Controllers return Request.CreateResponse(HttpStatusCode.ExpectationFailed, ex); } } - private PickingCompareItem GetPickingItem(int ProductionOrderNumber, int? CheckPcbId) + private PickingCompareItem GetPickingItem(Int32 ProductionOrderNumber, Int32? CheckPcbId) { var ignorProductionDate = new DateTime(); return GetPickingItem(ProductionOrderNumber, CheckPcbId, out ignorProductionDate); } - private PickingCompareItem GetPickingItem(int ProductionOrderNumber, int? CheckPcbId, out DateTime dateTime) + private PickingCompareItem GetPickingItem(Int32 ProductionOrderNumber, Int32? CheckPcbId, out DateTime dateTime) { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { var lastProdDate = new DateTime(); List programming = new List(); @@ -586,8 +575,8 @@ namespace Service.MeterProcessState.Controllers foreach (DataRow row in checkAppsData.Rows) { - uint AppID = uint.MaxValue; - uint Version = uint.MaxValue; + UInt32 AppID = uint.MaxValue; + UInt32 Version = uint.MaxValue; if (uint.TryParse(row["CordonelCurrentFw_AppID"].ToString(), out AppID) && uint.TryParse(row["CordonelCurrentFw_Version"].ToString(), out Version)) { checkAppsIdVersion.Add(AppID, Version); @@ -624,7 +613,7 @@ namespace Service.MeterProcessState.Controllers if (dt.Rows.Count == 1) { //invert is a skip not a do value - SkipRadioCheck = (bool)dt.Rows[0]["SkipRadioParameters"]; + SkipRadioCheck = (Boolean)dt.Rows[0]["SkipRadioParameters"]; } @@ -778,7 +767,7 @@ namespace Service.MeterProcessState.Controllers } } - private static bool findMatchingTestResult(ref DateTime lastProdDate, string LengthString, string dnString, RadioTest radioTestResult) + private static Boolean findMatchingTestResult(ref DateTime lastProdDate, String LengthString, String dnString, RadioTest radioTestResult) { var TestStepLoopCalibratesOk = radioTestResult.TestStepLoopCalibrate.Values.Where(w => w != null && w.ResultCalibration != null && w.LengthCode != null && w.ResultCalibration.ToLower() == "ok" && w.LengthCode.StartsWith($"DN{dnString}")).ToList(); @@ -917,7 +906,7 @@ namespace Service.MeterProcessState.Controllers //} [Route("SetMetersizeProgrammingData"), HttpPost] - public async Task SetMetersizeProgrammingData(MeterSize ParameterMeterSize, [FromBody] string listOfDnParamsRaw) + public async Task SetMetersizeProgrammingData(MeterSize ParameterMeterSize, [FromBody] String listOfDnParamsRaw) { try @@ -926,7 +915,7 @@ namespace Service.MeterProcessState.Controllers - var listOfDnParams = JsonConvert.DeserializeObject>(listOfDnParamsRaw); + var listOfDnParams = JsonConvert.DeserializeObject>(listOfDnParamsRaw); var sb = new StringBuilder(); sb.AppendLine($" delete [Auftrag].[dbo].[CordonelMeterSizesParameter] where [Dn_InternalId] = { ParameterMeterSize.GetHashCode()} "); foreach (var item in listOfDnParams) @@ -935,7 +924,7 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine($" select {ParameterMeterSize.GetHashCode()}, '{item.Key}', {item.Value};"); } - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { return dataacces.ExecuteQuery(sb.ToString()) != null; })); @@ -953,7 +942,7 @@ namespace Service.MeterProcessState.Controllers [Route("GetMetersizeProgrammingData"), HttpGet] public async Task GetMetersizeProgrammingData(MeterSize MeterSize) { - var programming = new Dictionary(); + var programming = new Dictionary(); var sb = new StringBuilder(); try { @@ -964,7 +953,7 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine($" inner join [Auftrag].[dbo].[CordonelMeterSizesParameter] para on size.Dn_InternalId = para.[Dn_InternalId] "); sb.AppendLine($" where size.[Dn_InternalId] = {MeterSize.GetHashCode()} "); - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { var MapData = dataacces.ExecuteQuery(sb.ToString()); @@ -992,12 +981,12 @@ namespace Service.MeterProcessState.Controllers } [Route("GetVakoPogramming"), HttpGet] - public async Task GetVakoPogramming(int ProductionOrderNumber) + public async Task GetVakoPogramming(Int32 ProductionOrderNumber) { try { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { List programming = new List(); GetVakoProgramming(ProductionOrderNumber, dataacces, programming); @@ -1011,7 +1000,7 @@ namespace Service.MeterProcessState.Controllers } [Route("GetSingleVakoKey"), HttpGet] - public async Task GetSingleVakoKey(int ProductionOrderNumber, string KeyName) + public async Task GetSingleVakoKey(Int32 ProductionOrderNumber, String KeyName) { try { @@ -1019,8 +1008,8 @@ namespace Service.MeterProcessState.Controllers { - var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.connectionString.Value, ProductionOrderNumber); - var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, rawVako.Type); + var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.ConnectionString.Value, ProductionOrderNumber); + var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, rawVako.Type); var vakoData = VakoParser.Parse(rawVako, rawMapping); var hitList = vakoData.KeyValues.FindAll(g => g.Name == KeyName); if (hitList.Count != 1) @@ -1048,17 +1037,17 @@ namespace Service.MeterProcessState.Controllers { var ret = new List(); - var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, "GNS"); + var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, "GNS"); var grpd = rawMapping.GroupBy(g => g.Name); foreach (var item in grpd) { var l = item.ToList(); - var digits = new List { }; - for (int i = 1; i <= l.First().Laenge; i++) + var digits = new List { }; + for (Int32 i = 1; i <= l.First().Laenge; i++) { digits.Add(l.First().Stelle + i); } - var d = new Dictionary(); + var d = new Dictionary(); foreach (var lvalues in l) { try @@ -1087,19 +1076,19 @@ namespace Service.MeterProcessState.Controllers public partial class VakoNew { - public string Name { get; set; } + public String Name { get; set; } - public long[] Digits { get; set; } + public Int64[] Digits { get; set; } - public Dictionary Values { get; set; } + public Dictionary Values { get; set; } } - private static void GetVakoProgramming(int ProductionOrderNumber, SqlDataAccess dataacces, List programming) + private static void GetVakoProgramming(Int32 ProductionOrderNumber, SqlDataAccess dataacces, List programming) { - var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.connectionString.Value, ProductionOrderNumber); - var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.connectionString.Value, rawVako.Type); + var rawVako = VakoDbAdapter.GetRawVako(GlobalConfig.ConnectionString.Value, ProductionOrderNumber); + var rawMapping = VakoDbAdapter.GetVakoMapping(GlobalConfig.ConnectionString.Value, rawVako.Type); var vakoData = VakoParser.Parse(rawVako, rawMapping); @@ -1123,18 +1112,18 @@ namespace Service.MeterProcessState.Controllers foreach (DataRow row in MapData.Rows) { - programming.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (byte[])row["RegisterValue"])); + programming.Add(new ProgrammingParameters(row["RegisterName"].ToString(), (Byte[])row["RegisterValue"])); } } [Route("GetLastState")] - public async Task GetLastState(string PcbId) + public async Task GetLastState(String PcbId) { try { return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { - using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value)) + using (var dataacces = new SqlDataAccess(GlobalConfig.ConnectionString.Value)) { var dt = dataacces.ExecuteQuery($"select top 1 [ProcessState_State] from dbo.MeterProcessState where ProcessState_PcbId like '{PcbId}' order by ProcessState_DateUtc desc "); foreach (var item in dt.Select()) diff --git a/Common/Service/MeterProcessState/Controllers/FwUpdateController.cs b/Common/Service/MeterProcessState/Controllers/FwUpdateController.cs index 0780ea13..b982c88f 100644 --- a/Common/Service/MeterProcessState/Controllers/FwUpdateController.cs +++ b/Common/Service/MeterProcessState/Controllers/FwUpdateController.cs @@ -726,8 +726,8 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers public async Task GetRecoveryFile(int PcbID, int? RadioFrq, string Region, string FlexnetVersion) { - var file = new RecoverySettings() { PcbID = PcbID, RadioFrequencyMhz = RadioFrq, Region = Region, Release = FlexnetVersion }; - file.RecoveryRegisters = new List(); + var file = new RecoverySettings() { PcbId = PcbID, RadioFrequencyMhz = RadioFrq, Region = Region, Release = FlexnetVersion }; + file.RecoveryRegisters = new List(); file.RecoveryRegisters.Add(new RecoveryRegisterItem() { RegisterIdent = "GENESISFLOW_SealDisplay", WriteValue = new byte[] { 0x00, 0x00, 0x00, 0x00 }, IsCiritcal = true, ReadbackValue = new byte[] { 0x00, 0x00, 0x00, 0x00 } }); diff --git a/Common/Service/MeterProcessState/Controllers/GenesisMeterController.cs b/Common/Service/MeterProcessState/Controllers/GenesisMeterController.cs index 0507873c..9a4aa496 100644 --- a/Common/Service/MeterProcessState/Controllers/GenesisMeterController.cs +++ b/Common/Service/MeterProcessState/Controllers/GenesisMeterController.cs @@ -183,7 +183,7 @@ namespace Service.MeterProcessState.Controllers var dtCalibrationResultsLogInfo = dataacces.ExecuteQuery(sb.ToString()); foreach (var item in dtCalibrationResultsLogInfo.Select()) { - ret.First(f => f.DbId == (int)item["CalibrationResultsID"])?.AddAditonlaLog((string)item["LogKey"], (string)item["LogText"]); + ret.First(f => f.DbId == (int)item["CalibrationResultsID"])?.AddAdditionalLog((string)item["LogKey"], (string)item["LogText"]); } } diff --git a/Common/Service/MeterProcessState/Controllers/MarriageController.cs b/Common/Service/MeterProcessState/Controllers/MarriageController.cs index 568194eb..9d3036c0 100644 --- a/Common/Service/MeterProcessState/Controllers/MarriageController.cs +++ b/Common/Service/MeterProcessState/Controllers/MarriageController.cs @@ -531,7 +531,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers if (dr["AlreadyMarried"].ToString() == "1") { - ret = ret | MarriagePossibleEnum.NotPossibleDueAlredayMatch; + ret = ret | MarriagePossibleEnum.NotPossibleDueToAlreadyMarried; } if (dr["SerialNumberBlocked"].ToString() == "1") @@ -540,7 +540,7 @@ namespace Xylem.Common.Service.MeterProcessState.Controllers } if (dr["PcbBlocked"].ToString() == "1") { - ret = ret | MarriagePossibleEnum.NotPossibleDuePcblocked; + ret = ret | MarriagePossibleEnum.NotPossibleDuePcbLocked; } if (dr["PcbBlocked"].ToString() == "1") diff --git a/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs b/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs index fc2bacf1..954c080f 100644 --- a/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs +++ b/Common/Service/MeterProcessState/Controllers/ProccesStateController.cs @@ -119,7 +119,7 @@ namespace Service.MeterProcessState.Controllers query.AppendLine(" ,@TestPressure"); query.AppendLine(" ,@TesterName)"); - foreach (var item in testResult.Testpoints) + foreach (var item in testResult.TestPoints) { query.AppendLine(" INSERT INTO [dbo].[Cordonel_PressureTest_TestPoints]"); query.AppendLine(" ([CordonelPressureTest_Id]"); @@ -237,12 +237,12 @@ namespace Service.MeterProcessState.Controllers var testID = (int)drMain["CordonelPressureTest_Id"]; - add.Testpoints = new List(); + add.TestPoints = new List(); foreach (var drTestPoints in dtTestPoints.Select($"CordonelPressureTest_Id = {testID}")) { - add.Testpoints.Add( + add.TestPoints.Add( new PressureTestPoints() { Ident = (int)drTestPoints["CordonelPressureTest_TestPointNr"], diff --git a/Common/Service/MeterProcessState/Controllers/RegisterWatchController.cs b/Common/Service/MeterProcessState/Controllers/RegisterWatchController.cs index 64b132f7..ee4c2f39 100644 --- a/Common/Service/MeterProcessState/Controllers/RegisterWatchController.cs +++ b/Common/Service/MeterProcessState/Controllers/RegisterWatchController.cs @@ -55,7 +55,7 @@ namespace Service.MeterProcessState.Controllers sb.AppendLine(" and (@Adress is null or [Address] = @Adress ) "); sb.AppendLine(" order by [Address] desc, [date] desc "); - var ret = new List(); + var ret = new List(); return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() => { @@ -82,7 +82,7 @@ namespace Service.MeterProcessState.Controllers { value = null; } - ret.Add(new RegisterHisory((string)row["PcbId"], adressP, value, (DateTime)row["date"])); + ret.Add(new RegisterHistory((string)row["PcbId"], adressP, value, (DateTime)row["date"])); } } return ret; diff --git a/Common/Tools/Tools.JsonToXlsHelper/Program.cs b/Common/Tools/Tools.JsonToXlsHelper/Program.cs index 24dc710f..fda06c0d 100644 --- a/Common/Tools/Tools.JsonToXlsHelper/Program.cs +++ b/Common/Tools/Tools.JsonToXlsHelper/Program.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Text; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; +using Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterProperties; namespace Tools.JsonToXlsHelper { diff --git a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache index 133b97f0..0028f628 100644 --- a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache +++ b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -0d85a5b3a7561b41163c20e5dc7713bcd0d65555 +f64d563def603c89cafafa61a3219ba97e1e344c diff --git a/Common/Ui/GenesisToolBox/FrmFwUpdate.Designer.cs b/Common/Ui/GenesisToolBox/FrmFwUpdate.Designer.cs index adb9c4d9..d24b6c16 100644 --- a/Common/Ui/GenesisToolBox/FrmFwUpdate.Designer.cs +++ b/Common/Ui/GenesisToolBox/FrmFwUpdate.Designer.cs @@ -37,6 +37,7 @@ this.label2 = new System.Windows.Forms.Label(); this.cbComSlot = new System.Windows.Forms.ComboBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.btnRebootMeter = new System.Windows.Forms.Button(); this.groupBox5 = new System.Windows.Forms.GroupBox(); this.btnUploadConfig = new System.Windows.Forms.Button(); this.groupBox4 = new System.Windows.Forms.GroupBox(); @@ -109,7 +110,6 @@ this.cbxFilterFWType = new System.Windows.Forms.ComboBox(); this.chbFilterIsDeveloper = new System.Windows.Forms.CheckBox(); this.saveConfigFile = new System.Windows.Forms.SaveFileDialog(); - this.btnRebootMeter = new System.Windows.Forms.Button(); this.grpSetup.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox5.SuspendLayout(); @@ -250,6 +250,16 @@ this.groupBox2.TabStop = false; this.groupBox2.Text = "Applications "; // + // btnRebootMeter + // + this.btnRebootMeter.Location = new System.Drawing.Point(951, 476); + this.btnRebootMeter.Name = "btnRebootMeter"; + this.btnRebootMeter.Size = new System.Drawing.Size(116, 25); + this.btnRebootMeter.TabIndex = 23; + this.btnRebootMeter.Text = "METER REBOOT"; + this.btnRebootMeter.UseVisualStyleBackColor = true; + this.btnRebootMeter.Click += new System.EventHandler(this.btnRebootMeter_Click); + // // groupBox5 // this.groupBox5.Controls.Add(this.btnUploadConfig); @@ -329,6 +339,7 @@ this.gbxManualTimingControl.TabIndex = 17; this.gbxManualTimingControl.TabStop = false; this.gbxManualTimingControl.Text = "Timing Control"; + this.gbxManualTimingControl.Visible = false; // // label8 // @@ -428,6 +439,7 @@ this.gbxManualUploadAndVerification.TabIndex = 15; this.gbxManualUploadAndVerification.TabStop = false; this.gbxManualUploadAndVerification.Text = "Manual Verification"; + this.gbxManualUploadAndVerification.Visible = false; // // btnVerifyFiles // @@ -478,7 +490,7 @@ this.groupBox3.Size = new System.Drawing.Size(126, 49); this.groupBox3.TabIndex = 12; this.groupBox3.TabStop = false; - this.groupBox3.Text = "Automatic"; + this.groupBox3.Text = "Execute"; // // btnUpdateFw // @@ -578,6 +590,7 @@ this.cbxConsecutiveFilePartsRetryEnable.TabIndex = 23; this.cbxConsecutiveFilePartsRetryEnable.Text = "Retry Consecutive File Parts"; this.cbxConsecutiveFilePartsRetryEnable.UseVisualStyleBackColor = true; + this.cbxConsecutiveFilePartsRetryEnable.Visible = false; this.cbxConsecutiveFilePartsRetryEnable.CheckedChanged += new System.EventHandler(this.cbxConsecutiveFilePartsRetryEnable_CheckedChanged); // // label6 @@ -588,6 +601,7 @@ this.label6.Size = new System.Drawing.Size(26, 13); this.label6.TabIndex = 22; this.label6.Text = "[kB]"; + this.label6.Visible = false; // // label5 // @@ -597,6 +611,7 @@ this.label5.Size = new System.Drawing.Size(73, 13); this.label5.TabIndex = 21; this.label5.Text = "File Part Sizes"; + this.label5.Visible = false; // // cbFilePartSize // @@ -614,6 +629,7 @@ this.cbFilePartSize.Size = new System.Drawing.Size(44, 21); this.cbFilePartSize.TabIndex = 20; this.cbFilePartSize.Text = "2"; + this.cbFilePartSize.Visible = false; // // cbxSingleFilePartsRetryEnable // @@ -626,6 +642,7 @@ this.cbxSingleFilePartsRetryEnable.TabIndex = 19; this.cbxSingleFilePartsRetryEnable.Text = "Retry Single File Parts"; this.cbxSingleFilePartsRetryEnable.UseVisualStyleBackColor = true; + this.cbxSingleFilePartsRetryEnable.Visible = false; this.cbxSingleFilePartsRetryEnable.CheckedChanged += new System.EventHandler(this.cbxSingleFilePartsRetryEnable_CheckedChanged); // // cbxManualControl @@ -981,16 +998,6 @@ // this.saveConfigFile.Filter = "configuration file (*.hex)|*.hex"; // - // btnRebootMeter - // - this.btnRebootMeter.Location = new System.Drawing.Point(951, 476); - this.btnRebootMeter.Name = "btnRebootMeter"; - this.btnRebootMeter.Size = new System.Drawing.Size(116, 25); - this.btnRebootMeter.TabIndex = 23; - this.btnRebootMeter.Text = "METER REBOOT"; - this.btnRebootMeter.UseVisualStyleBackColor = true; - this.btnRebootMeter.Click += new System.EventHandler(this.btnRebootMeter_Click); - // // FrmFwUpdate // this.AccessibleRole = System.Windows.Forms.AccessibleRole.Sound; diff --git a/Common/Ui/GenesisToolBox/FrmFwUpdate.cs b/Common/Ui/GenesisToolBox/FrmFwUpdate.cs index d4241dbf..6289a737 100644 --- a/Common/Ui/GenesisToolBox/FrmFwUpdate.cs +++ b/Common/Ui/GenesisToolBox/FrmFwUpdate.cs @@ -665,7 +665,7 @@ namespace Xylem.Common.Ui.GenesisToolBox SetTimeDisplay(); text = RegisterConverter.ConvertTo( - _currentGenesis.ReadRegister(Register.Configexchange.PCBSerialNumber, 12)); + _currentGenesis.ReadRegister(Register.Configexchange.PcbSerialNumber, 12)); barOverallProgressUpdate.Value = barOverallProgressUpdate.Value + 4 > 100 ? 0 : barOverallProgressUpdate.Value + 4; var bootProcess = (Int32)(bootDelayMs * 100.0 / maxBootDelayMs); diff --git a/Common/Ui/GenesisToolBox/FrmFwUpdate.resx b/Common/Ui/GenesisToolBox/FrmFwUpdate.resx index 23ab59ed..14eefb68 100644 --- a/Common/Ui/GenesisToolBox/FrmFwUpdate.resx +++ b/Common/Ui/GenesisToolBox/FrmFwUpdate.resx @@ -132,12 +132,6 @@ True - - True - - - True - 465, 17 diff --git a/Common/Ui/GenesisToolBox/FrmLutManagement.Designer.cs b/Common/Ui/GenesisToolBox/FrmLutManagement.Designer.cs index 0fbec6ae..739a5708 100644 --- a/Common/Ui/GenesisToolBox/FrmLutManagement.Designer.cs +++ b/Common/Ui/GenesisToolBox/FrmLutManagement.Designer.cs @@ -303,8 +303,8 @@ namespace Xylem.Common.Ui.GenesisToolBox // // currentVerionForProdDataGridViewCheckBoxColumn // - this.currentVerionForProdDataGridViewCheckBoxColumn.DataPropertyName = "CurrentVerionForProd"; - this.currentVerionForProdDataGridViewCheckBoxColumn.HeaderText = "CurrentVerionForProd"; + this.currentVerionForProdDataGridViewCheckBoxColumn.DataPropertyName = "CurrentVersionForProd"; + this.currentVerionForProdDataGridViewCheckBoxColumn.HeaderText = "CurrentVersionForProd"; this.currentVerionForProdDataGridViewCheckBoxColumn.Name = "currentVerionForProdDataGridViewCheckBoxColumn"; this.currentVerionForProdDataGridViewCheckBoxColumn.ReadOnly = true; // diff --git a/Common/Ui/GenesisToolBox/FrmLutUpdate.cs b/Common/Ui/GenesisToolBox/FrmLutUpdate.cs index 6bbf3a7a..b27848c1 100644 --- a/Common/Ui/GenesisToolBox/FrmLutUpdate.cs +++ b/Common/Ui/GenesisToolBox/FrmLutUpdate.cs @@ -729,7 +729,7 @@ namespace Xylem.Common.Ui.GenesisToolBox foreach (var item in a) { - if (!Prod || item.CurrentVerionForProd) + if (!Prod || item.CurrentVersionForProd) { cbxDbLuts.Items.Add(item); } diff --git a/Common/Ui/GenesisToolBox/FrmMasterMapping.cs b/Common/Ui/GenesisToolBox/FrmMasterMapping.cs index e86467ca..bd7712c3 100644 --- a/Common/Ui/GenesisToolBox/FrmMasterMapping.cs +++ b/Common/Ui/GenesisToolBox/FrmMasterMapping.cs @@ -63,7 +63,7 @@ namespace Xylem.Common.Ui.GenesisToolBox Rev = 0, TesterName = "pc", TestPressure = "0", - Testpoints = new System.Collections.Generic.List() { new PressureTestPoints() { Ident = 1, Input = "0" } } + TestPoints = new System.Collections.Generic.List() { new PressureTestPoints() { Ident = 1, Input = "0" } } }; ret = LocalWebRequest.PostRequestAsync(url, json: mutedResult); diff --git a/Common/Ui/GenesisToolBox/FrmRegisterHistory.cs b/Common/Ui/GenesisToolBox/FrmRegisterHistory.cs index 949d9064..25caff14 100644 --- a/Common/Ui/GenesisToolBox/FrmRegisterHistory.cs +++ b/Common/Ui/GenesisToolBox/FrmRegisterHistory.cs @@ -32,7 +32,7 @@ namespace Xylem.Common.Ui.GenesisToolBox // // registerHisoryBindingSource // - this.registerHisoryBindingSource.DataSource = typeof(RegisterHisory); + this.registerHisoryBindingSource.DataSource = typeof(RegisterHistory); var configFilePath = "configuration.json"; if (!new FileInfo(configFilePath).Exists) @@ -78,7 +78,7 @@ namespace Xylem.Common.Ui.GenesisToolBox // // registerHisoryBindingSource // - this.registerHisoryBindingSource.DataSource = typeof(RegisterHisory); + this.registerHisoryBindingSource.DataSource = typeof(RegisterHistory); pcbID = _pcbID; registerSelection = new Dictionary(); registerSelection.Add(_registerDefinition.GetIdent(), _registerDefinition.RegisterAddress); @@ -102,7 +102,7 @@ namespace Xylem.Common.Ui.GenesisToolBox } var url = ServiceUrls.RegisterWatchServiceUrl() + $"GetRegisterHistory?PcbID={txtPcbId.Text}&Address={BitConverter.ToString(adress)}"; - var dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); + var dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); dgvHist.DataSource = dt; diff --git a/Common/Ui/GenesisToolBox/FrmStreamingQuality.cs b/Common/Ui/GenesisToolBox/FrmStreamingQuality.cs index 3a5ce0d7..2c3acf6f 100644 --- a/Common/Ui/GenesisToolBox/FrmStreamingQuality.cs +++ b/Common/Ui/GenesisToolBox/FrmStreamingQuality.cs @@ -27,7 +27,7 @@ namespace Xylem.Common.Ui.GenesisToolBox public partial class FrmStreamingQuality : Form { private GenesisMeterStreamingQuality _currentGenesis; - private MeterBatch _meterBatch = new MeterBatch("C:\\Users\\drabesch_ro\\Downloads\\ReleaseV1.1.2.6\\"); + private MeterBatch _meterBatch = new MeterBatch(); private readonly ILogger _logger; private const Int32 SampleRateHz = 16; private Int32 _channels; diff --git a/Common/Ui/GenesisToolBox/frmRegisterStore.cs b/Common/Ui/GenesisToolBox/frmRegisterStore.cs index 9334ebb4..730cb81c 100644 --- a/Common/Ui/GenesisToolBox/frmRegisterStore.cs +++ b/Common/Ui/GenesisToolBox/frmRegisterStore.cs @@ -2090,13 +2090,13 @@ namespace Xylem.Common.Ui.GenesisToolBox var url = ServiceUrls.RegisterWatchServiceUrl() + $"GetRegisterHistory?PcbID={_currentGenesis.PcbId}&Address=01-09"; - var dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); + var dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); var lastCharge = dt.OrderByDescending(d => d.Date).First().Value; url = ServiceUrls.RegisterWatchServiceUrl() + $"GetRegisterHistory?PcbID={_currentGenesis.PcbId}&Address=01-0A"; - dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); + dt = JsonConvert.DeserializeObject>(LocalWebRequest.GetRequest(url)); var lastSeconds = dt.OrderByDescending(d => d.Date).First().Value; diff --git a/Common/Ui/GenesisToolBox/frmSetup.cs b/Common/Ui/GenesisToolBox/frmSetup.cs index cd6460b6..b96629e7 100644 --- a/Common/Ui/GenesisToolBox/frmSetup.cs +++ b/Common/Ui/GenesisToolBox/frmSetup.cs @@ -7,7 +7,6 @@ using System.Drawing; using System.IO; using System.IO.Ports; using System.Linq; -using System.Runtime.CompilerServices; using System.Threading; using System.Windows.Forms; using System.Xml.Linq; @@ -281,11 +280,11 @@ namespace Xylem.Common.Ui.GenesisToolBox { if (portList.All(pl => pl != (String)row[StreamingPortString])) { - ret.Rows.Add(row[StreamingPortString].ToString(), "NA"); + ret.Rows.Add(row[StreamingPortString].ToString(), BaseSerialPort.PortNotAssigned); } if (portList.All(pl => pl != (String)row[RequestPortString])) { - ret.Rows.Add(row[RequestPortString].ToString(), "NA"); + ret.Rows.Add(row[RequestPortString].ToString(), BaseSerialPort.PortNotAssigned); } } diff --git a/Common/Ui/LegacyGenesisControl/ctlBenchRdy.cs b/Common/Ui/LegacyGenesisControl/ctlBenchRdy.cs index 80fc73b2..97215ed8 100644 --- a/Common/Ui/LegacyGenesisControl/ctlBenchRdy.cs +++ b/Common/Ui/LegacyGenesisControl/ctlBenchRdy.cs @@ -446,7 +446,7 @@ namespace XylemCommonUiLegacyGenCtl { if (item.Value.Enabled) { - if (item.Value.Metersize != MeterSize.NAN && biggestMeterSize < item.Value.Metersize) + if (item.Value.Metersize != MeterSize.NA && biggestMeterSize < item.Value.Metersize) { biggestMeterSize = item.Value.Metersize; } diff --git a/Common/Ui/LegacyGenesisControl/ctlMeterReady.cs b/Common/Ui/LegacyGenesisControl/ctlMeterReady.cs index d04aaeb7..e9d32536 100644 --- a/Common/Ui/LegacyGenesisControl/ctlMeterReady.cs +++ b/Common/Ui/LegacyGenesisControl/ctlMeterReady.cs @@ -65,7 +65,7 @@ namespace XylemCommonUiLegacyGenCtl public string CalibrationRun { get; set; } public int LastTestBechState { get; set; } - public MeterSize Metersize { get; set; } = MeterSize.NAN; + public MeterSize Metersize { get; set; } = MeterSize.NA; public ctlMeterReady() { InitializeComponent(); diff --git a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs index 85915707..17bd4226 100644 --- a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs +++ b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs @@ -182,7 +182,8 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb $"&Build={swLicense.Build}&ValidTo={swLicense.ValidTo:yyyy-MM-ddTHH:mm:ss}" + $"&Description={swLicense.Description ?? "null"}&ProgramNameIsUnique={swLicense.ProgramNameIsUnique}"; var requestResponse = LocalWebRequest.PostRequestAsyncAndGetContent(url, 1200); - if (string.IsNullOrEmpty(requestResponse) && !JsonConvert.DeserializeObject(requestResponse)) + if (requestResponse != null && string.IsNullOrEmpty(requestResponse) && + !JsonConvert.DeserializeObject(requestResponse)) { DbIsConnected = false; return false; diff --git a/ServiceFwUpdate/Common/FwUpdateSafe/CordonelSettings.cs b/ServiceFwUpdate/Common/FwUpdateSafe/CordonelSettings.cs index da2e0b54..60457239 100644 --- a/ServiceFwUpdate/Common/FwUpdateSafe/CordonelSettings.cs +++ b/ServiceFwUpdate/Common/FwUpdateSafe/CordonelSettings.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe { diff --git a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoveryRegisterItem.cs b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoveryRegisterItem.cs index fbca7469..c8cf9998 100644 --- a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoveryRegisterItem.cs +++ b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoveryRegisterItem.cs @@ -1,36 +1,34 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Xylem.ServiceFwUpdate.Common.FwUpdateSafe.MeterRecovery; -namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe +namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe.MeterRecovery { + /// + /// Recovery of registers in the field + /// public class RecoveryRegisterItem { /// - /// Registername, use the latest configuration.json to make sure that the adress will be correct + /// Register name, use the latest configuration.json to make sure that the adress will be correct /// - public string RegisterIdent { get; set; } + public String RegisterIdent { get; set; } /// /// Content to write /// - public byte[] WriteValue { get; set; } + public Byte[] WriteValue { get; set; } /// /// check if the wirtten value is sett like this /// Null or not set if a read back is not needed /// - public byte[] ReadbackValue { get; set; } + public Byte[] ReadbackValue { get; set; } /// /// Mark Update as failed if write was not successful /// - public bool IsCiritcal { get; set; } + public Boolean IsCiritcal { get; set; } /// diff --git a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoverySettings.cs b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoverySettings.cs index 22d72987..79a0846a 100644 --- a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoverySettings.cs +++ b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RecoverySettings.cs @@ -1,35 +1,35 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe.MeterRecovery { + /// + /// + /// public class RecoverySettings { /// /// Null if check in not necessary if is an number check it agianst the pcbid from meter /// - public int? PcbID { get; set; } + public Int32? PcbId { get; set; } /// /// Null if check in not necessary if is an number check it agianst the radio FRQ /// - public int? RadioFrequencyMhz { get; set; } + public Int32? RadioFrequencyMhz { get; set; } /// - /// Null till meter handels regions + /// Null till meter handles regions /// - public string Region { get; set; } = null; + public String Region { get; set; } = null; /// - /// Null till meter handels regions + /// Null till meter handles regions /// - public string Release { get; set; } + public String Release { get; set; } /// /// User name /// - public string ApproverName { get; set; } + public String ApproverName { get; set; } /// @@ -42,9 +42,13 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe.MeterRecovery /// public List RecoveryRegisters { get; set; } - public string GenerateFileName() + /// + /// File name for this recovery register set + /// + /// + public String GenerateFileName() { - return $"{PcbID}_{RadioFrequencyMhz}_{Region}_{Release}.config"; + return $"{PcbId}_{RadioFrequencyMhz}_{Region}_{Release}.config"; } } diff --git a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RegisterRecoveryAccess.cs b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RegisterRecoveryAccess.cs index 4341cc2e..281e04f2 100644 --- a/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RegisterRecoveryAccess.cs +++ b/ServiceFwUpdate/Common/FwUpdateSafe/MeterRecovery/RegisterRecoveryAccess.cs @@ -1,9 +1,21 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe.MeterRecovery { + /// + /// Recovery rules + /// public enum RegisterRecoveryAccess { + /// + /// Set this register always + /// SetAlways, + /// + /// Set register if it has the default value + /// SetIfDefault, + /// + /// Set the register if it is zero + /// SetIfZero } diff --git a/ServiceFwUpdate/Common/FwUpdateSafe/ReportTemplate.cs b/ServiceFwUpdate/Common/FwUpdateSafe/ReportTemplate.cs index a4c55b4e..b3d8b4f6 100644 --- a/ServiceFwUpdate/Common/FwUpdateSafe/ReportTemplate.cs +++ b/ServiceFwUpdate/Common/FwUpdateSafe/ReportTemplate.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Xylem.ServiceFwUpdate.Common.FwUpdateSafe { diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs index 163207e8..f267faf7 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateSw/FrmServiceFwUpdateSw.cs @@ -1802,7 +1802,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw } #endregion --------------------------------------- Tools ------------------------------------------------------ - #region ------------------------------------------ Common Prozess Routines ------------------------------------ + #region ------------------------------------------ Common Process Routines ------------------------------------ /// /// Common routine to convert objects to process states. /// Objects are sorted: @@ -2082,7 +2082,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw var progress = (Int32)e.ActualProcessPercent; UiInvoker.ProgressBarInvoker(barActualProgressUpdate, progress > 100 ? 100 : progress); } - #endregion --------------------------------------- Common Prozess Routines ------------------------------------ + #endregion --------------------------------------- Common Process Routines ------------------------------------ #region ------------------------------------------ Reboot ----------------------------------------------------- @@ -2157,7 +2157,7 @@ namespace Xylem.ServiceFwUpdate.Ui.ServiceFwUpdateSw if (_bootDelayCtrMs % internalCommunicationDelayMs == 0) { text = RegisterConverter.ConvertTo( - _currentGenesis.ReadRegister(Register.Configexchange.PCBSerialNumber, 12)); + _currentGenesis.ReadRegister(Register.Configexchange.PcbSerialNumber, 12)); } ProcessUpdate_Event(this, new ProcessExecEventArgs(Resources.StrUpdateAppAndRestartMeter,