1.1 --- a/Hardware/TBalancer/TBalancer.cs Tue Feb 23 19:45:40 2010 +0000
1.2 +++ b/Hardware/TBalancer/TBalancer.cs Sat Feb 27 15:55:17 2010 +0000
1.3 @@ -73,30 +73,37 @@
1.4 this.icon = Utilities.EmbeddedResources.GetImage("bigng.png");
1.5 this.protocolVersion = protocolVersion;
1.6
1.7 + ParameterDescription[] parameter = new ParameterDescription[] {
1.8 + new ParameterDescription("Offset", "Temperature offset.", 0)
1.9 + };
1.10 int offset = 0;
1.11 for (int i = 0; i < digitalTemperatures.Length; i++)
1.12 digitalTemperatures[i] = new Sensor("Digital Sensor #" + (i + 1),
1.13 - offset + i, SensorType.Temperature, this);
1.14 + offset + i, null, SensorType.Temperature, this, parameter);
1.15 offset += digitalTemperatures.Length;
1.16
1.17 for (int i = 0; i < analogTemperatures.Length; i++)
1.18 analogTemperatures[i] = new Sensor("Analog Sensor #" + (i + 1),
1.19 - offset + i, SensorType.Temperature, this);
1.20 + offset + i, null, SensorType.Temperature, this, parameter);
1.21 offset += analogTemperatures.Length;
1.22
1.23 for (int i = 0; i < sensorhubTemperatures.Length; i++)
1.24 sensorhubTemperatures[i] = new Sensor("Sensorhub Sensor #" + (i + 1),
1.25 - offset + i, SensorType.Temperature, this);
1.26 + offset + i, null, SensorType.Temperature, this, parameter);
1.27 offset += sensorhubTemperatures.Length;
1.28
1.29 for (int i = 0; i < sensorhubFlows.Length; i++)
1.30 sensorhubFlows[i] = new Sensor("Flowmeter #" + (i + 1),
1.31 - offset + i, SensorType.Flow, this);
1.32 + offset + i, null, SensorType.Flow, this, new ParameterDescription[] {
1.33 + new ParameterDescription("Impulse Rate",
1.34 + "The impulse rate of the flowmeter in pulses/L", 509)
1.35 + });
1.36 offset += sensorhubFlows.Length;
1.37
1.38 for (int i = 0; i < miniNGTemperatures.Length; i++)
1.39 - miniNGTemperatures[i] = new Sensor("miniNG #" + (i / 2 + 1) +
1.40 - " Sensor #" + (i % 2 + 1), offset + i, SensorType.Temperature, this);
1.41 + miniNGTemperatures[i] = new Sensor("miniNG #" + (i / 2 + 1) +
1.42 + " Sensor #" + (i % 2 + 1), offset + i, null, SensorType.Temperature,
1.43 + this, parameter);
1.44 offset += miniNGTemperatures.Length;
1.45
1.46 alternativeRequest = new MethodDelegate(DelayedAlternativeRequest);
1.47 @@ -138,7 +145,8 @@
1.48 for (int i = 0; i < 2; i++) {
1.49 Sensor sensor = miniNGTemperatures[number * 2 + i];
1.50 if (data[offset + 7 + i] > 0) {
1.51 - sensor.Value = 0.5f * data[offset + 7 + i];
1.52 + sensor.Value = 0.5f * data[offset + 7 + i] +
1.53 + sensor.Parameters[0].Value;
1.54 ActivateSensor(sensor);
1.55 } else {
1.56 DeactivateSensor(sensor);
1.57 @@ -179,7 +187,8 @@
1.58
1.59 for (int i = 0; i < digitalTemperatures.Length; i++)
1.60 if (data[238 + i] > 0) {
1.61 - digitalTemperatures[i].Value = 0.5f * data[238 + i];
1.62 + digitalTemperatures[i].Value = 0.5f * data[238 + i] +
1.63 + digitalTemperatures[i].Parameters[0].Value;
1.64 ActivateSensor(digitalTemperatures[i]);
1.65 } else {
1.66 DeactivateSensor(digitalTemperatures[i]);
1.67 @@ -187,7 +196,8 @@
1.68
1.69 for (int i = 0; i < analogTemperatures.Length; i++)
1.70 if (data[260 + i] > 0) {
1.71 - analogTemperatures[i].Value = 0.5f * data[260 + i];
1.72 + analogTemperatures[i].Value = 0.5f * data[260 + i] +
1.73 + analogTemperatures[i].Parameters[0].Value;
1.74 ActivateSensor(analogTemperatures[i]);
1.75 } else {
1.76 DeactivateSensor(analogTemperatures[i]);
1.77 @@ -195,7 +205,8 @@
1.78
1.79 for (int i = 0; i < sensorhubTemperatures.Length; i++)
1.80 if (data[246 + i] > 0) {
1.81 - sensorhubTemperatures[i].Value = 0.5f * data[246 + i];
1.82 + sensorhubTemperatures[i].Value = 0.5f * data[246 + i] +
1.83 + sensorhubTemperatures[i].Parameters[0].Value;
1.84 ActivateSensor(sensorhubTemperatures[i]);
1.85 } else {
1.86 DeactivateSensor(sensorhubTemperatures[i]);
1.87 @@ -204,7 +215,7 @@
1.88 for (int i = 0; i < sensorhubFlows.Length; i++)
1.89 if (data[231 + i] > 0 && data[234] > 0) {
1.90 float pulsesPerSecond = ((float)data[231 + i]) / data[234];
1.91 - const float pulsesPerLiter = 509;
1.92 + float pulsesPerLiter = sensorhubFlows[i].Parameters[0].Value;
1.93 sensorhubFlows[i].Value = pulsesPerSecond * 3600 / pulsesPerLiter;
1.94 ActivateSensor(sensorhubFlows[i]);
1.95 } else {
1.96 @@ -216,12 +227,15 @@
1.97
1.98 if (fans[i] == null)
1.99 fans[i] = new Sensor("Fan #" + (i + 1), i, maxRPM, SensorType.Fan,
1.100 - this);
1.101 + this, new ParameterDescription[] {
1.102 + new ParameterDescription("MaxRPM",
1.103 + "Maximum revolutions per minute (RPM) of the fan.", maxRPM)
1.104 + });
1.105
1.106 - if ((data[136] & (1 << i)) == 0)
1.107 - fans[i].Value = maxRPM * 0.01f * data[156 + i]; // pwm mode
1.108 - else
1.109 - fans[i].Value = maxRPM * 0.01f * data[141 + i]; // analog mode
1.110 + if ((data[136] & (1 << i)) == 0) // pwm mode
1.111 + fans[i].Value = fans[i].Parameters[0].Value * 0.01f * data[156 + i];
1.112 + else // analog mode
1.113 + fans[i].Value = fans[i].Parameters[0].Value * 0.01f * data[141 + i];
1.114 ActivateSensor(fans[i]);
1.115 }
1.116