2011-01-20 21:31:54 +00:00
|
|
|
|
/*
|
|
|
|
|
|
2012-05-27 14:23:31 +00:00
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2011-01-20 21:31:54 +00:00
|
|
|
|
|
2014-12-30 16:02:52 +00:00
|
|
|
|
Copyright (C) 2010-2014 Michael Möller <mmoeller@openhardwaremonitor.org>
|
2012-05-27 14:23:31 +00:00
|
|
|
|
|
2011-01-20 21:31:54 +00:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
|
|
|
|
namespace OpenHardwareMonitor.Hardware {
|
|
|
|
|
|
|
|
|
|
internal delegate void ControlEventHandler(Control control);
|
|
|
|
|
|
|
|
|
|
internal class Control : IControl {
|
|
|
|
|
|
|
|
|
|
private readonly Identifier identifier;
|
|
|
|
|
private readonly ISettings settings;
|
|
|
|
|
private ControlMode mode;
|
|
|
|
|
private float softwareValue;
|
|
|
|
|
private float minSoftwareValue;
|
|
|
|
|
private float maxSoftwareValue;
|
|
|
|
|
|
|
|
|
|
public Control(ISensor sensor, ISettings settings, float minSoftwareValue,
|
|
|
|
|
float maxSoftwareValue)
|
|
|
|
|
{
|
|
|
|
|
this.identifier = new Identifier(sensor.Identifier, "control");
|
|
|
|
|
this.settings = settings;
|
|
|
|
|
this.minSoftwareValue = minSoftwareValue;
|
|
|
|
|
this.maxSoftwareValue = maxSoftwareValue;
|
|
|
|
|
|
|
|
|
|
if (!float.TryParse(settings.GetValue(
|
|
|
|
|
new Identifier(identifier, "value").ToString(), "0"),
|
|
|
|
|
NumberStyles.Float, CultureInfo.InvariantCulture,
|
|
|
|
|
out this.softwareValue))
|
|
|
|
|
{
|
|
|
|
|
this.softwareValue = 0;
|
|
|
|
|
}
|
|
|
|
|
int mode;
|
|
|
|
|
if (!int.TryParse(settings.GetValue(
|
|
|
|
|
new Identifier(identifier, "mode").ToString(),
|
2014-12-30 16:02:52 +00:00
|
|
|
|
((int)ControlMode.Undefined).ToString(CultureInfo.InvariantCulture)),
|
2011-01-20 21:31:54 +00:00
|
|
|
|
NumberStyles.Integer, CultureInfo.InvariantCulture,
|
|
|
|
|
out mode))
|
|
|
|
|
{
|
2014-12-30 16:02:52 +00:00
|
|
|
|
this.mode = ControlMode.Undefined;
|
2011-01-20 21:31:54 +00:00
|
|
|
|
} else {
|
|
|
|
|
this.mode = (ControlMode)mode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Identifier Identifier {
|
|
|
|
|
get {
|
|
|
|
|
return identifier;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ControlMode ControlMode {
|
|
|
|
|
get {
|
|
|
|
|
return mode;
|
|
|
|
|
}
|
|
|
|
|
private set {
|
|
|
|
|
if (mode != value) {
|
|
|
|
|
mode = value;
|
|
|
|
|
if (ControlModeChanged != null)
|
|
|
|
|
ControlModeChanged(this);
|
|
|
|
|
this.settings.SetValue(new Identifier(identifier, "mode").ToString(),
|
|
|
|
|
((int)mode).ToString(CultureInfo.InvariantCulture));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public float SoftwareValue {
|
|
|
|
|
get {
|
|
|
|
|
return softwareValue;
|
|
|
|
|
}
|
|
|
|
|
private set {
|
|
|
|
|
if (softwareValue != value) {
|
|
|
|
|
softwareValue = value;
|
|
|
|
|
if (SoftwareControlValueChanged != null)
|
|
|
|
|
SoftwareControlValueChanged(this);
|
|
|
|
|
this.settings.SetValue(new Identifier(identifier,
|
|
|
|
|
"value").ToString(),
|
|
|
|
|
value.ToString(CultureInfo.InvariantCulture));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetDefault() {
|
|
|
|
|
ControlMode = ControlMode.Default;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public float MinSoftwareValue {
|
|
|
|
|
get {
|
|
|
|
|
return minSoftwareValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public float MaxSoftwareValue {
|
|
|
|
|
get {
|
|
|
|
|
return maxSoftwareValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetSoftware(float value) {
|
|
|
|
|
ControlMode = ControlMode.Software;
|
|
|
|
|
SoftwareValue = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal event ControlEventHandler ControlModeChanged;
|
|
|
|
|
internal event ControlEventHandler SoftwareControlValueChanged;
|
|
|
|
|
}
|
|
|
|
|
}
|