diff --git a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs index f455890cb..43fd695ea 100644 --- a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs +++ b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs @@ -36,7 +36,7 @@ public partial class Battery48TlRecord public Current BusCurrent => _BusCurrent; - public Current CellsCurrent => _CellsCurrent; + public Current CellsCurrent => _CellsCurrent; public Current HeatingCurrent => _BusCurrent - _CellsCurrent; public DcPower HeatingPower => HeatingCurrent * Dc.Voltage; @@ -45,7 +45,7 @@ public partial class Battery48TlRecord // When The battery is full charged (reached EOC) the Time Since TOC is set to 0 public TimeSpan TimeSinceTOC => TimeSpan.FromMinutes(_TimeSinceToc); - public Boolean CalibrationChargeRequested => TimeSinceTOC > TimeSpan.FromDays(7); // From AF0A (Fw Version) Each 14 days , we do calibration. But there is wait time for all batteries to request and for next day calibration rule we put this 13 days + public Boolean CalibrationChargeRequested => TimeSinceTOC > TimeSpan.FromDays(7); // From AF0A (Fw Version) Each 14 days , But Max and Peter asked for 7 days. public readonly struct Leds_ { @@ -124,42 +124,36 @@ public partial class Battery48TlRecord } [SuppressMessage("ReSharper", "StringLiteralTypo")] - private Strings ParseAlarms() + private IEnumerable ParseAlarms() { - var x = new List - { - "Tam : BMS temperature too low", - }; - return x; - - // UInt64 x = 0b100; - // Boolean HasBit(Int16 bit) => (x & 1uL << bit) > 0;//(_AlarmFlags & 1uL << bit) > 0; - // if (HasBit(0) ) yield return "Tam : BMS temperature too low"; - // if (HasBit(2) ) yield return "TaM2 : BMS temperature too high"; - // if (HasBit(3) ) yield return "Tbm : Battery temperature too low"; - // if (HasBit(5) ) yield return "TbM2 : Battery temperature too high"; - // if (HasBit(7) ) yield return "VBm2 : Bus voltage too low"; - // if (HasBit(9) ) yield return "VBM2 : Bus voltage too high"; - // if (HasBit(11)) yield return "IDM2 : Discharge current too high"; - // if (HasBit(12)) yield return "ISOB : Electrical insulation failure"; - // if (HasBit(13)) yield return "MSWE : Main switch failure"; - // if (HasBit(14)) yield return "FUSE : Main fuse blown"; - // if (HasBit(15)) yield return "HTRE : Battery failed to warm up"; - // if (HasBit(16)) yield return "TCPE : Temperature sensor failure"; - // if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails"; - // if (HasBit(18)) yield return "CME : Current sensor failure"; - // if (HasBit(19)) yield return "HWFL : BMS hardware failure"; - // if (HasBit(20)) yield return "HWEM : Hardware protection tripped"; - // if (HasBit(21)) yield return "ThM : Heatsink temperature too high"; - // if (HasBit(23)) yield return "vsm2 : Low string voltage failure"; - // if (HasBit(25)) yield return "vsM2 : String voltage too high"; - // if (HasBit(27)) yield return "iCM2 : Charge current too high"; - // if (HasBit(29)) yield return "iDM2 : Discharge current too high"; - // if (HasBit(31)) yield return "MID2 : String voltage unbalance too high"; - // if (HasBit(42)) yield return "HTFS : Heater Fuse Blown"; - // if (HasBit(43)) yield return "DATA : Parameters out of range"; - // if (HasBit(45)) yield return "CELL2: Unbalance string voltages"; - // if (HasBit(46)) yield return "HEBT : Loss of heartbeat"; + Boolean HasBit(Int16 bit) => (_AlarmFlags & 1uL << bit) > 0; + + if (HasBit(0) ) yield return "Tam : BMS temperature too low"; + if (HasBit(2) ) yield return "TaM2 : BMS temperature too high"; + if (HasBit(3) ) yield return "Tbm : Battery temperature too low"; + if (HasBit(5) ) yield return "TbM2 : Battery temperature too high"; + if (HasBit(7) ) yield return "VBm2 : Bus voltage too low"; + if (HasBit(9) ) yield return "VBM2 : Bus voltage too high"; + if (HasBit(11)) yield return "IDM2 : Discharge current too high"; + if (HasBit(12)) yield return "ISOB : Electrical insulation failure"; + if (HasBit(13)) yield return "MSWE : Main switch failure"; + if (HasBit(14)) yield return "FUSE : Main fuse blown"; + if (HasBit(15)) yield return "HTRE : Battery failed to warm up"; + if (HasBit(16)) yield return "TCPE : Temperature sensor failure"; + if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails"; + if (HasBit(18)) yield return "CME : Current sensor failure"; + if (HasBit(19)) yield return "HWFL : BMS hardware failure"; + if (HasBit(20)) yield return "HWEM : Hardware protection tripped"; + if (HasBit(21)) yield return "ThM : Heatsink temperature too high"; + if (HasBit(23)) yield return "vsm2 : Low string voltage failure"; + if (HasBit(25)) yield return "vsM2 : String voltage too high"; + if (HasBit(27)) yield return "iCM2 : Charge current too high"; + if (HasBit(29)) yield return "iDM2 : Discharge current too high"; + if (HasBit(31)) yield return "MID2 : String voltage unbalance too high"; + if (HasBit(42)) yield return "HTFS : Heater Fuse Blown"; + if (HasBit(43)) yield return "DATA : Parameters out of range"; + if (HasBit(45)) yield return "CELL2: Unbalance string voltages"; + if (HasBit(46)) yield return "HEBT : Loss of heartbeat"; } [SuppressMessage("ReSharper", "StringLiteralTypo")]