From 8c0ebcb8714a6e1e6cfea0caf255c3a37ff37bd4 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 9 Jul 2020 10:10:16 +0200 Subject: [PATCH] Diverter : 'static int nextIdx' not incremented when DebugLevel == DebugMode.Off --- TBF/BenchControl/Elde/Diverter/Diverter.cs | 123 +++++++++++---------- 1 file changed, 63 insertions(+), 60 deletions(-) diff --git a/TBF/BenchControl/Elde/Diverter/Diverter.cs b/TBF/BenchControl/Elde/Diverter/Diverter.cs index ec427c647..77f522454 100644 --- a/TBF/BenchControl/Elde/Diverter/Diverter.cs +++ b/TBF/BenchControl/Elde/Diverter/Diverter.cs @@ -75,80 +75,83 @@ namespace TBF.BenchControl.Elde.Diverter controlBoard = TbfComponents.FindComponent(cfg.ParentName, components) as ControlBoardDev; if (controlBoard == null) throw new Exception("Cannot find " + Name + " parent"); - if (diverterCfg.BitNr < 0 || diverterCfg.BitNr >= 64) throw new ArgumentOutOfRangeException("position"); - this.mask = (((UInt128)1) << diverterCfg.BitNr); - - switchTimeStart = new FloatBox(diverterCfg.DfltSwithTimeStartMs / 1000.0f); - switchTimeEnd = new FloatBox(diverterCfg.DfltSwithTimeEndMs / 1000.0f); - - diverterNr0 = nextIdx++; - /// - if (Diverters == null || Diverters.Length < nextIdx) - { - GenericDevices.IDiverter[] divertersSoFar = Diverters; - - Diverters = new GenericDevices.IDiverter[nextIdx]; - - if (divertersSoFar != null) - { - for (int i = 0; i < divertersSoFar.Length; i++) Diverters[i] = divertersSoFar[i]; - - } - - Diverters[nextIdx - 1] = this; - } - - /// Prepare arguments of SendCalibData() - if (diverterCfg.AdcNr >= 0 && diverterCfg.AdcNr < controlBoard.RegValveCalib.GetLength(0)) - { - controlBoard.RegValveCalib[diverterCfg.AdcNr, 0] = (uint)diverterCfg.AdcValueToSink; - controlBoard.RegValveCalib[diverterCfg.AdcNr, 1] = (uint)diverterCfg.AdcValueToTank; - } - else - { - log.ErrorFormat("Unable to set {0} ADC levels: RegValveCalib array size={1}, diverter AdcNr={2}", - Name, controlBoard.RegValveCalib.GetLength(0), diverterCfg.AdcNr); - } - - - int divNrFromName; - if (!int.TryParse(Name.Substring(3), out divNrFromName)) + if (cfg.DebugLevel != Config.Entities.DebugMode.Off) { - divNrFromName = nextIdx; - } + if (diverterCfg.BitNr < 0 || diverterCfg.BitNr >= 64) throw new ArgumentOutOfRangeException("position"); + this.mask = (((UInt128)1) << diverterCfg.BitNr); + + switchTimeStart = new FloatBox(diverterCfg.DfltSwithTimeStartMs / 1000.0f); + switchTimeEnd = new FloatBox(diverterCfg.DfltSwithTimeEndMs / 1000.0f); + + diverterNr0 = nextIdx++; + /// + if (Diverters == null || Diverters.Length < nextIdx) + { + GenericDevices.IDiverter[] divertersSoFar = Diverters; + + Diverters = new GenericDevices.IDiverter[nextIdx]; + + if (divertersSoFar != null) + { + for (int i = 0; i < divertersSoFar.Length; i++) Diverters[i] = divertersSoFar[i]; + + } + + Diverters[nextIdx - 1] = this; + } + + /// Prepare arguments of SendCalibData() + if (diverterCfg.AdcNr >= 0 && diverterCfg.AdcNr < controlBoard.RegValveCalib.GetLength(0)) + { + controlBoard.RegValveCalib[diverterCfg.AdcNr, 0] = (uint)diverterCfg.AdcValueToSink; + controlBoard.RegValveCalib[diverterCfg.AdcNr, 1] = (uint)diverterCfg.AdcValueToTank; + } + else + { + log.ErrorFormat("Unable to set {0} ADC levels: RegValveCalib array size={1}, diverter AdcNr={2}", + Name, controlBoard.RegValveCalib.GetLength(0), diverterCfg.AdcNr); + } + + + int divNrFromName; + if (!int.TryParse(Name.Substring(3), out divNrFromName)) + { + divNrFromName = nextIdx; + } #if GENESIS || PETERSBURG_50 || PETERSBURG_200 || FUZHOU_50 || FUZHOU_150 || FUZHOU_300 || ROMA_200 - flowMtrNr4Cmd = divNrFromName + 1; + flowMtrNr4Cmd = divNrFromName + 1; #elif BADGER_STREDNA_TRAT - flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : ((divNrFromName == 2) ? 9 : 20); + flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : ((divNrFromName == 2) ? 9 : 20); #elif BADGER_VELKA_TRAT - flowMtrNr4Cmd = ((divNrFromName % 10) == 1) ? 0x11 : (((divNrFromName % 10) == 2) ? 0x22 : 0x33); + flowMtrNr4Cmd = ((divNrFromName % 10) == 1) ? 0x11 : (((divNrFromName % 10) == 2) ? 0x22 : 0x33); #elif FUZHOU_100 - flowMtrNr4Cmd = divNrFromName; + flowMtrNr4Cmd = divNrFromName; #elif CEVAK_200 - flowMtrNr4Cmd = (divNrFromName == 4) ? 5 : divNrFromName; + flowMtrNr4Cmd = (divNrFromName == 4) ? 5 : divNrFromName; #elif DEWA_300 || PUCHONG_200 - flowMtrNr4Cmd = divNrFromName + 2; /// Div1: 1,2,3, Div2: 4, Div3: 5, Div4: 6, Div5: 7 + flowMtrNr4Cmd = divNrFromName + 2; /// Div1: 1,2,3, Div2: 4, Div3: 5, Div4: 6, Div5: 7 #elif TURA_IPERL || TURA_IPERL_NEW - flowMtrNr4Cmd = divNrFromName + 16 * divNrFromName; + flowMtrNr4Cmd = divNrFromName + 16 * divNrFromName; #elif FILIPINY_50 - flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : 7; + flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : 7; #elif GELSENWASSER - switch (divNrFromName) - { - default: - case 1: flowMtrNr4Cmd = 1; break; - case 2: flowMtrNr4Cmd = 0x12; break; - case 3: flowMtrNr4Cmd = 3; break; - case 4: flowMtrNr4Cmd = 5; break; - } + switch (divNrFromName) + { + default: + case 1: flowMtrNr4Cmd = 1; break; + case 2: flowMtrNr4Cmd = 0x12; break; + case 3: flowMtrNr4Cmd = 3; break; + case 4: flowMtrNr4Cmd = 5; break; + } #else - flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : 3; + flowMtrNr4Cmd = (divNrFromName == 1) ? 1 : 3; #endif - diverterToTankOp = new SwitchDiverterOp(controlBoard, true, flowMtrNr4Cmd); - diverterToSinkOp = new SwitchDiverterOp(controlBoard, false, flowMtrNr4Cmd); + diverterToTankOp = new SwitchDiverterOp(controlBoard, true, flowMtrNr4Cmd); + diverterToSinkOp = new SwitchDiverterOp(controlBoard, false, flowMtrNr4Cmd); - log.Debug(this.ToString()); + log.Debug(this.ToString()); + } } ///