forked from jmarucha/FanControl.Liquidctl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LiquidctlPlugin.cs
83 lines (69 loc) · 2.27 KB
/
LiquidctlPlugin.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.IO;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using FanControl.Plugins;
namespace FanControl.Liquidctl
{
public class LiquidctlPlugin : IPlugin2
{
internal List<LiquidctlDevice> devices = new List<LiquidctlDevice>();
internal IPluginLogger logger;
public string Name => "LiquidctlPlugin";
public LiquidctlPlugin(IPluginLogger pluginLogger)
{
logger = pluginLogger;
}
public void Initialize()
{
LiquidctlCLIWrapper.Initialize(logger);
}
public void Load(IPluginSensorsContainer _container)
{
List<LiquidctlStatusJSON> input = LiquidctlCLIWrapper.ReadStatus();
foreach (LiquidctlStatusJSON liquidctl in input)
{
LiquidctlDevice device = new LiquidctlDevice(liquidctl, logger);
logger.Log(device.GetDeviceInfo());
if (device.hasPumpSpeed)
{
_container.FanSensors.Add(device.pumpSpeed);
}
if (device.hasPumpDuty)
{
_container.ControlSensors.Add(device.pumpDuty);
}
if (device.hasLiquidTemperature)
{
_container.TempSensors.Add(device.liquidTemperature);
}
if (device.hasFanSpeed)
{
_container.FanSensors.Add(device.fanSpeed);
_container.ControlSensors.Add(device.fanControl);
}
for (int i = 0; i<20; i++)
{
if (device.hasMultipleFanSpeed[i])
{
_container.FanSensors.Add(device.fanSpeedMultiple[i]);
_container.ControlSensors.Add(device.fanControlMultiple[i]);
}
}
devices.Add(device);
}
}
public void Close()
{
devices.Clear();
}
public void Update()
{
foreach (LiquidctlDevice device in devices)
{
device.LoadJSON();
}
}
}
}