namespace InnovEnergy.Lib.Devices.BatteryDeligreen; public class AlarmBitMessage { public readonly struct AlarmEvent1_ { private readonly Byte _record; public Boolean VoltageSensorFault => (_record & (1 << 0)) == 1; public Boolean TemperatureSensorFault => (_record & (1 << 1)) == 1; public Boolean CurrentSensorFault => (_record & (1 << 2)) == 1; public Boolean KeySwitchFault => (_record & (1 << 3)) == 1; public Boolean CellVoltageDropoutFault => (_record & (1 << 4)) == 1; public Boolean ChargeSwitchFault => (_record & (1 << 5)) == 1; public Boolean DischargeSwitchFault => (_record & (1 << 6)) == 1; public Boolean CurrentLimitSwitchFault => (_record & (1 << 7)) == 1; public AlarmEvent1_(Byte record) => _record = record; } // Enum for Alarm Event 1 //public enum AlarmEvent1 //{ // VoltageSensorFault, // TemperatureSensorFault, // CurrentSensorFault, // KeySwitchFault, // CellVoltageDropoutFault, // ChargeSwitchFault, // DischargeSwitchFault, // CurrentLimitSwitchFault //} // Enum for Alarm Event 2 public enum AlarmEvent2 { MonomerHighVoltageAlarm, MonomerOvervoltageProtection, MonomerLowVoltageAlarm, MonomerUnderVoltageProtection, HighVoltageAlarmForTotalVoltage, OvervoltageProtectionForTotalVoltage, LowVoltageAlarmForTotalVoltage, UnderVoltageProtectionForTotalVoltage } // Enum for Alarm Event 3 public enum AlarmEvent3 { ChargeHighTemperatureAlarm, ChargeOverTemperatureProtection, ChargeLowTemperatureAlarm, ChargeUnderTemperatureProtection, DischargeHighTemperatureAlarm, DischargeOverTemperatureProtection, DischargeLowTemperatureAlarm, DischargeUnderTemperatureProtection } // Enum for Alarm Event 4 public enum AlarmEvent4 { EnvironmentHighTemperatureAlarm, EnvironmentOverTemperatureProtection, EnvironmentLowTemperatureAlarm, EnvironmentUnderTemperatureProtection, PowerOverTemperatureProtection, PowerHighTemperatureAlarm, CellLowTemperatureHeating, ReservationBit } // Enum for Alarm Event 5 public enum AlarmEvent5 { ChargeOverCurrentAlarm, ChargeOverCurrentProtection, DischargeOverCurrentAlarm, DischargeOverCurrentProtection, TransientOverCurrentProtection, OutputShortCircuitProtection, TransientOverCurrentLockout, OutputShortCircuitLockout } // Enum for Alarm Event 6 public enum AlarmEvent6 { ChargeHighVoltageProtection, IntermittentRechargeWaiting, ResidualCapacityAlarm, ResidualCapacityProtection, CellLowVoltageChargingProhibition, OutputReversePolarityProtection, OutputConnectionFault, InsideBit } // Enum for On-Off State public enum OnOffState { DischargeSwitchState, ChargeSwitchState, CurrentLimitSwitchState, HeatingSwitchState, ReservationBit1, ReservationBit2, ReservationBit3, ReservationBit4 } // Enum for Equilibrium State 1 public enum EquilibriumState1 { Cell01Equilibrium, Cell02Equilibrium, Cell03Equilibrium, Cell04Equilibrium, Cell05Equilibrium, Cell06Equilibrium, Cell07Equilibrium, Cell08Equilibrium } // Enum for Equilibrium State 2 public enum EquilibriumState2 { Cell09Equilibrium, Cell10Equilibrium, Cell11Equilibrium, Cell12Equilibrium, Cell13Equilibrium, Cell14Equilibrium, Cell15Equilibrium, Cell16Equilibrium } // Enum for System State public enum SystemState { Discharge, Charge, FloatingCharge, ReservationBit1, Standby, Shutdown, ReservationBit2, ReservationBit3 } // Enum for Disconnection State 1 public enum DisconnectionState1 { Cell01Disconnection, Cell02Disconnection, Cell03Disconnection, Cell04Disconnection, Cell05Disconnection, Cell06Disconnection, Cell07Disconnection, Cell08Disconnection } // Enum for Disconnection State 2 public enum DisconnectionState2 { Cell09Disconnection, Cell10Disconnection, Cell11Disconnection, Cell12Disconnection, Cell13Disconnection, Cell14Disconnection, Cell15Disconnection, Cell16Disconnection } // Enum for Alarm Event 7 public enum AlarmEvent7 { InsideBit1, InsideBit2, InsideBit3, InsideBit4, AutomaticChargingWaiting, ManualChargingWaiting, InsideBit5, InsideBit6 } // Enum for Alarm Event 8 public enum AlarmEvent8 { EepStorageFault, RtcError, VoltageCalibrationNotPerformed, CurrentCalibrationNotPerformed, ZeroCalibrationNotPerformed, InsideBit1, InsideBit2, InsideBit3 } }