using FanControl.Plugins;
namespace FanControl.ChromeboxEC;
/// 风扇控制:ectool fanduty <percent>
public sealed class ChromeboxECControlSensor : IPluginControlSensor2
{
private readonly string _ectoolPath;
private readonly string[] _autoFanArgs;
private float? _value;
public ChromeboxECControlSensor(string ectoolPath, string[] autoFanArgs)
{
_ectoolPath = ectoolPath;
_autoFanArgs = autoFanArgs;
}
public string Id => "ChromeboxEC_Control";
public string Name => "Chromebox EC Fan";
public string Origin => "ectool fanduty";
public float? Value => _value;
public string? PairedFanSensorId => "ChromeboxEC_Fan";
/// 设置风扇占空比 0–100,调用 ectool fanduty
public void Set(float val)
{
_value = val;
var duty = (int)Math.Clamp(Math.Round(val), 0, 100);
EctoolRunner.Run(_ectoolPath, ["fanduty", duty.ToString()]);
}
/// 禁用控制时恢复 EC 自动风扇,调用 ectool autofanctrl
public void Reset()
{
_value = null;
if (_autoFanArgs is { Length: > 0 })
EctoolRunner.Run(_ectoolPath, _autoFanArgs);
}
public void Update() { }
}