33 lines
995 B
C#
33 lines
995 B
C#
|
using System.Collections.Immutable;
|
||
|
using InnovEnergy.Lib.Victron.VeDBus;
|
||
|
|
||
|
|
||
|
namespace InnovEnergy.VenusLogger.Parsers;
|
||
|
|
||
|
using VeProps = ImmutableDictionary<String, VeProperty>;
|
||
|
|
||
|
public record VenusSettings(Boolean HasAcOutBus, Boolean HasDcSystem);
|
||
|
|
||
|
public static class Settings
|
||
|
{
|
||
|
|
||
|
|
||
|
private static VenusSettings DefaultSettings { get; } = new VenusSettings(true, true);
|
||
|
|
||
|
public static VenusSettings GetSettings(this IEnumerable<ServiceProperties> services)
|
||
|
{
|
||
|
return services
|
||
|
.Where(VeService.IsSettingsService)
|
||
|
.Select(s=>s.Properties)
|
||
|
.Select(GetSettings)
|
||
|
.FirstOrDefault(DefaultSettings);
|
||
|
}
|
||
|
|
||
|
private static VenusSettings GetSettings(this VeProps props)
|
||
|
{
|
||
|
var hasAcOut = props.TryGetProperty("/Settings/SystemSetup/HasAcOutSystem", true);
|
||
|
var hasDcSystem = props.TryGetProperty("/Settings/SystemSetup/HasDcSystem", true);
|
||
|
|
||
|
return new VenusSettings(hasAcOut, hasDcSystem);
|
||
|
}
|
||
|
}
|