using InnovEnergy.Lib.Protocols.Modbus.Conversions; using InnovEnergy.Lib.Utils; namespace InnovEnergy.Lib.Devices.EmuMeter; public static class Conversions { // TODO: integrate into ModbusRegisters public static IReadOnlyList ToSingles(this ModbusRegisters regs) { return regs .Chunk(2) .Select(c => c.Reverse().SelectMany(BitConverter.GetBytes).ToArray()) .Select(d => BitConverter.ToSingle(d)) .ToList(); } public static IReadOnlyList ToDecimals(this ModbusRegisters regs) { return regs .Chunk(2) .Select(c => c.Reverse().SelectMany(BitConverter.GetBytes).ToArray()) .Select(d => BitConverter.ToSingle(d)) .Select(d => d.ConvertTo()) .ToList(); } // ReSharper disable once InconsistentNaming public static IReadOnlyList ToUInt64s(this ModbusRegisters regs) { return regs .SelectMany(d => BitConverter.GetBytes(d).Reverse()) .Chunk(8) .Select(c => c.Reverse().ToArray()) .Select(d => BitConverter.ToUInt64(d)) .ToList(); } }