diff --git a/Common/Hardware/WaterMeter/Genesis/MockGenesis/MockGenesis.cs b/Common/Hardware/WaterMeter/Genesis/MockGenesis/MockGenesis.cs index 1e8e30ff..5ac3a4b2 100644 --- a/Common/Hardware/WaterMeter/Genesis/MockGenesis/MockGenesis.cs +++ b/Common/Hardware/WaterMeter/Genesis/MockGenesis/MockGenesis.cs @@ -426,12 +426,16 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.MockGenesis /// Mock reading all applications from a predefined package description file instead from the Meter. /// /// - /// - Initial + /// - Initial. + /// + /// + /// - Avoid overwriting of list combined with valid register dictionary. /// protected override void ReadMeterFirmwareAndAssignRegisters() { // Avoid overwriting of list if this already exits - if (MeterAppListVersion.Any() && MeterAppListVersion.All(f => f.Status != MeterAppState.Unknown)) + if (MeterAppListVersion.Any() && MeterAppListVersion.All(f => f.Status != MeterAppState.Unknown) && + ConfigRegister.MeterRegisterDic.Count != 0) { Logger.Warn($"Slot:{Slot} - Trying to overwride installed FW. Skipping generation of new " + "App list and meter register dictionary"); diff --git a/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature b/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature index 1e6f0491..f1fdd772 100644 --- a/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature +++ b/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature @@ -466,7 +466,11 @@ OUTPUT: "StatusReturn" with results "Okay" or "Failed", # Activate the entire equality EOL progress check between requirement and result And Activate EOL progress check - # The input initializations don't have a "TestNo" nor a result (EOLStatus, StringReturn or StatusReturn) as those are commonly used for + # Name one production process to be checked in advance to the real test. This can be done more than once to fill a list with + # all required preceding production processes to check an entire sequence of processes. + And Define production process for sequencing before test 'ExecFinalParametrization' + +# The input initializations don't have a "TestNo" nor a result (EOLStatus, StringReturn or StatusReturn) as those are commonly used for # all tests specified in "Input matrix defining the test cases and results". All these inputs have a setup to pass the overall test with # positive feedback (all are good). And Input initializations for the test matrix and presets to pass the preceding tests @@ -525,29 +529,25 @@ OUTPUT: "StatusReturn" with results "Okay" or "Failed", | Meter Calib Fact 1 | Meter Calib Fact 2 | Meter Calib Fact 3 | DB Calib Fact 1 | DB Calib Fact 2 | DB Calib Fact 3 | Comment | | 10000 | 20000 | 30000 | 10000 | 20000 | 30000 | Valid calib factors | - # Name one production process to be checked in advance to the real test. This can be done more than once to fill a list with - # all required preceding production processes to check an entire sequence of processes. - And Define production process for sequencing before test 'ExecFinalParametrization' - - #--------------------------------- Define Test-Cases ------------------------------------------------------------------------- + #--------------------------------- Define Test-Cases ------------------------------------------------------------------------- And Input matrix defining the test cases and results # "Kill x" forces the test to fail to check if all tests are executed. REMIND: Set only ONE to "X" and leave all others as "-"! Otherwise the test will FAIL! | TestNo | Kill EOL | Kill Requ | Kill Order | Kill PcbId | Kill Region | Kill LUT | Kill Size | Kill FW | Kill Load | Kill LifeTime | Kill StoreTime | Kill PreAdj | Kill FlowTest | Kill Calib | StatusReturn | Comment | | 1 | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Okay | Test sequence complete | - | 2 | X | - | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill EOL generation | - | 3 | - | X | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill requirement | - | 4 | - | - | X | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill production order check | - | 5 | - | - | - | X | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill PcbId check | - | 6 | - | - | - | - | X | - | - | - | - | - | - | - | - | - | Failed | Detected kill region check | - | 7 | - | - | - | - | - | X | - | - | - | - | - | - | - | - | Failed | Detected kill LUT check | - | 8 | - | - | - | - | - | - | X | - | - | - | - | - | - | - | Failed | Detected kill meter size check | - | 9 | - | - | - | - | - | - | - | X | - | - | - | - | - | - | Failed | Detected kill FW check | - | 10 | - | - | - | - | - | - | - | - | X | - | - | - | - | - | Failed | Detected kill battery load check | - | 11 | - | - | - | - | - | - | - | - | - | X | - | - | - | - | Failed | Detected kill life time check | - | 12 | - | - | - | - | - | - | - | - | - | - | X | - | - | - | Failed | Detected kill storage time check | - | 13 | - | - | - | - | - | - | - | - | - | - | - | X | - | - | Failed | Detected kill preadjustment check | - | 14 | - | - | - | - | - | - | - | - | - | - | - | - | X | - | Failed | Detected kill flow test check | - | 15 | - | - | - | - | - | - | - | - | - | - | - | - | - | X | Failed | Detected kill calibrations check | +# | 2 | X | - | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill EOL generation | +# | 3 | - | X | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill requirement | +# | 4 | - | - | X | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill production order check | +# | 5 | - | - | - | X | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill PcbId check | +# | 6 | - | - | - | - | X | - | - | - | - | - | - | - | - | - | Failed | Detected kill region check | +# | 7 | - | - | - | - | - | X | - | - | - | - | - | - | - | - | Failed | Detected kill LUT check | +# | 8 | - | - | - | - | - | - | X | - | - | - | - | - | - | - | Failed | Detected kill meter size check | +# | 9 | - | - | - | - | - | - | - | X | - | - | - | - | - | - | Failed | Detected kill FW check | +# | 10 | - | - | - | - | - | - | - | - | X | - | - | - | - | - | Failed | Detected kill battery load check | +# | 11 | - | - | - | - | - | - | - | - | - | X | - | - | - | - | Failed | Detected kill life time check | +# | 12 | - | - | - | - | - | - | - | - | - | - | X | - | - | - | Failed | Detected kill storage time check | +# | 13 | - | - | - | - | - | - | - | - | - | - | - | X | - | - | Failed | Detected kill preadjustment check | +# | 14 | - | - | - | - | - | - | - | - | - | - | - | - | X | - | Failed | Detected kill flow test check | +# | 15 | - | - | - | - | - | - | - | - | - | - | - | - | - | X | Failed | Detected kill calibrations check | When Execute the generic tests Then Check the generic test results diff --git a/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature.cs b/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature.cs index a358fab1..1120f140 100644 --- a/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature.cs +++ b/Common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature.cs @@ -1877,6 +1877,9 @@ this.ScenarioInitialize(scenarioInfo); #line hidden #line 467 testRunner.And("Activate EOL progress check", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 471 + testRunner.And("Define production process for sequencing before test \'ExecFinalParametrization\'", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table16 = new TechTalk.SpecFlow.Table(new string[] { "EOL Id", @@ -1890,7 +1893,7 @@ this.ScenarioInitialize(scenarioInfo); "182100041", "182100041", "EOL Progress successfully created"}); -#line 472 +#line 476 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table16, "And "); #line hidden @@ -1910,7 +1913,7 @@ this.ScenarioInitialize(scenarioInfo); "null", "null", "Standard Requirement is active and approved"}); -#line 476 +#line 480 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table17, "And "); #line hidden @@ -1922,7 +1925,7 @@ this.ScenarioInitialize(scenarioInfo); "3118323", "3118323", "Order number is identical"}); -#line 480 +#line 484 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table18, "And "); #line hidden @@ -1936,7 +1939,7 @@ this.ScenarioInitialize(scenarioInfo); "182100041", "182100041", "PcbId is identical"}); -#line 484 +#line 488 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table19, "And "); #line hidden @@ -1948,7 +1951,7 @@ this.ScenarioInitialize(scenarioInfo); "EMEA", "EMEA", "Region is identical"}); -#line 488 +#line 492 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table20, "And "); #line hidden @@ -1960,7 +1963,7 @@ this.ScenarioInitialize(scenarioInfo); "0xEB7C", "0xEB7C", "LUT CRC is identical"}); -#line 492 +#line 496 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table21, "And "); #line hidden @@ -1972,7 +1975,7 @@ this.ScenarioInitialize(scenarioInfo); "DN50", "DN50", "Meter size is identical"}); -#line 496 +#line 500 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table22, "And "); #line hidden @@ -1986,7 +1989,7 @@ this.ScenarioInitialize(scenarioInfo); "R1.3.0B", "R1.3.0B", "FW Version is identical"}); -#line 500 +#line 504 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table23, "And "); #line hidden @@ -1996,7 +1999,7 @@ this.ScenarioInitialize(scenarioInfo); table24.AddRow(new string[] { "2.0", "Normal threshold okay"}); -#line 504 +#line 508 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table24, "And "); #line hidden @@ -2010,7 +2013,7 @@ this.ScenarioInitialize(scenarioInfo); "20.0", "1.0", "Remaining lifetime as required"}); -#line 508 +#line 512 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table25, "And "); #line hidden @@ -2022,7 +2025,7 @@ this.ScenarioInitialize(scenarioInfo); "-3.0", "3.0", "Storage months in range"}); -#line 512 +#line 516 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table26, "And "); #line hidden @@ -2034,7 +2037,7 @@ this.ScenarioInitialize(scenarioInfo); "5", "21", "Test bench preadjustment succeeded"}); -#line 516 +#line 520 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table27, "And "); #line hidden @@ -2046,7 +2049,7 @@ this.ScenarioInitialize(scenarioInfo); "6", "30", "Test bench calibration succeeded"}); -#line 520 +#line 524 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table28, "And "); #line hidden @@ -2066,12 +2069,9 @@ this.ScenarioInitialize(scenarioInfo); "20000", "30000", "Valid calib factors"}); -#line 524 +#line 528 testRunner.And("Input initializations for the test matrix and presets to pass the preceding tests" + "", ((string)(null)), table29, "And "); -#line hidden -#line 530 - testRunner.And("Define production process for sequencing before test \'ExecFinalParametrization\'", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table30 = new TechTalk.SpecFlow.Table(new string[] { "TestNo", @@ -2109,258 +2109,6 @@ this.ScenarioInitialize(scenarioInfo); "-", "Okay", "Test sequence complete"}); - table30.AddRow(new string[] { - "2", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill EOL generation"}); - table30.AddRow(new string[] { - "3", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill requirement"}); - table30.AddRow(new string[] { - "4", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill production order check"}); - table30.AddRow(new string[] { - "5", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill PcbId check"}); - table30.AddRow(new string[] { - "6", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill region check"}); - table30.AddRow(new string[] { - "7", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill LUT check"}); - table30.AddRow(new string[] { - "8", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill meter size check"}); - table30.AddRow(new string[] { - "9", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill FW check"}); - table30.AddRow(new string[] { - "10", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill battery load check"}); - table30.AddRow(new string[] { - "11", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "-", - "Failed", - "Detected kill life time check"}); - table30.AddRow(new string[] { - "12", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "-", - "Failed", - "Detected kill storage time check"}); - table30.AddRow(new string[] { - "13", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "-", - "Failed", - "Detected kill preadjustment check"}); - table30.AddRow(new string[] { - "14", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "-", - "Failed", - "Detected kill flow test check"}); - table30.AddRow(new string[] { - "15", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "-", - "X", - "Failed", - "Detected kill calibrations check"}); #line 533 testRunner.And("Input matrix defining the test cases and results", ((string)(null)), table30, "And "); #line hidden diff --git a/Common/Production/ProductionUiCordonel/ProductionProcesses/EolProcesses/CheckProductionState.cs b/Common/Production/ProductionUiCordonel/ProductionProcesses/EolProcesses/CheckProductionState.cs index 0222e089..b820c57c 100644 --- a/Common/Production/ProductionUiCordonel/ProductionProcesses/EolProcesses/CheckProductionState.cs +++ b/Common/Production/ProductionUiCordonel/ProductionProcesses/EolProcesses/CheckProductionState.cs @@ -440,7 +440,7 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.EolPr var erroneousSequenceStep = false; var warningSequenceStep = false; var statusReturn = CheckKitronRadioSignalLevels(out feedbackMsg); - + if (StatusReturn.Failed == statusReturn) { ErrorMsgDispatcher(feedbackMsg); @@ -448,7 +448,7 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.EolPr // Do not return immediately to avoid multiple special-requirements on multiple errors erroneousSequenceStep = true; } - if (StatusReturn.Skipped == statusReturn) + if (StatusReturn.Warning == statusReturn) { WarningMsgDispatcher(feedbackMsg); warningSequenceStep = true; diff --git a/Common/Production/ProductionUiCordonel/ProductionProcesses/GenericModules/GenericChecks.cs b/Common/Production/ProductionUiCordonel/ProductionProcesses/GenericModules/GenericChecks.cs index 0e2f084f..69eb76c5 100644 --- a/Common/Production/ProductionUiCordonel/ProductionProcesses/GenericModules/GenericChecks.cs +++ b/Common/Production/ProductionUiCordonel/ProductionProcesses/GenericModules/GenericChecks.cs @@ -486,11 +486,17 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Gener return StatusReturn.Failed; } - // The NA region has no radio or radio check should be ignored - if (meter.Region.Equals("NA") || skipRadioCheck) + // The NA region has no radio + if (meter.Region.Equals("NA")) { return StatusReturn.Skipped; } + // The radio check should be ignored + if (skipRadioCheck) + { + feedbackMsg = Resources.StrSkippedMsgRadioCheckSpecialPermission; + return StatusReturn.Warning; + } var pressureSensorAssembled = meter.PressureSensorAssembled ? $", {Resources.StrLblPressureSensorAssembledTxt}" : ""; var meterInfo = $"{Resources.StrLblRadioFrequencyTxt}: {meter.RadioFrequencyMhz} MHz," + diff --git a/Common/Production/ProductionUiCordonel/ProductionProcesses/PickingProcesses/CheckProductionState.cs b/Common/Production/ProductionUiCordonel/ProductionProcesses/PickingProcesses/CheckProductionState.cs index ab00e7d3..36b539c8 100644 --- a/Common/Production/ProductionUiCordonel/ProductionProcesses/PickingProcesses/CheckProductionState.cs +++ b/Common/Production/ProductionUiCordonel/ProductionProcesses/PickingProcesses/CheckProductionState.cs @@ -264,7 +264,7 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Picki // Do not return immediately to avoid multiple special-requirements on multiple errors erroneousSequenceStep = true; } - else if (StatusReturn.Skipped == statusReturn) + else if (StatusReturn.Warning == statusReturn) { WarningMsgDispatcher(feedbackMsg); warningSequenceStep = true;