using System.Diagnostics.CodeAnalysis; using InnovEnergy.Lib.Devices.Battery48TL.DataTypes; using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes; using InnovEnergy.Lib.StatusApi.DeviceTypes; using InnovEnergy.Lib.Units; using InnovEnergy.Lib.Units.Composite; namespace InnovEnergy.Lib.Devices.Battery48TL; #pragma warning disable CS0169, CS0649 [SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "UnusedMember.Global")] [BigEndian] // alarm/warning flags public record Battery48TlRegisters : IBattery { [InputRegister(1004)] internal UInt16 _LedStates; [InputRegister(1005)] internal UInt64 _WarningFlags; [InputRegister(1009)] internal UInt64 _AlarmFlags; [InputRegister(1013)] internal UInt16 _IoStates; [InputRegister(999, Scale = 0.01)] internal Double _Voltage ; [InputRegister(1000, Scale = 0.01, Offset = -10000)] internal Double _Current ; [InputRegister(1053, Scale = 0.1)] internal Double _Soc; [InputRegister(1014, Scale = 0.1, Offset = -400)] internal Double _TemperatureBoard ; [InputRegister(1015, Scale = 0.1, Offset = -400)] internal Double _TemperatureCellsCenter ; [InputRegister(1016, Scale = 0.1, Offset = -400)] internal Double _TemperatureCellsLeft ; [InputRegister(1017, Scale = 0.1, Offset = -400)] internal Double _TemperatureCellsRight ; public DcBus Dc => DcBus.FromVoltageCurrent(_Voltage, _Current); public Percent Soc => _Soc; public Leds Leds => this.ParseLeds(); public Temperatures Temperature => this.ParseBatteryTemperatures(); public Boolean ConnectedToDcBus => this.ParseConnectedToDcBus(); public Boolean Heating => this.ParseHeating(); public Boolean Eoc => this.ParseEoc(); public IReadOnlyList Warnings => this.ParseWarnings().ToList() ; public IReadOnlyList Alarms => this.ParseAlarms().ToList() ; // // public Decimal CellsVoltage { get; init; } // // public Decimal MaxChargingPower { get; init; } // public Decimal MaxDischargingPower { get; init; } }