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