Hardware/TBalancer/TBalancer.cs
changeset 63 1a7c13ac7348
parent 57 142907c75be4
child 64 15181001ee61
     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