change sensor scaling algorithm for exponential scales
- scale values should be exponentials (10^x)
- implement adjust factor
depends on Iaf2d5e30df620212dd3c9e821d6462964520dc44
Change-Id: Id4e1dfad0def21f9f1d341d859c3b2c237dea080
Signed-off-by: Edward A. James <eajames@us.ibm.com>
diff --git a/obmc/sensors.py b/obmc/sensors.py
index fcb3ee6..e5c79ef 100644
--- a/obmc/sensors.py
+++ b/obmc/sensors.py
@@ -165,20 +165,28 @@
def setByPoll(self, value):
scale = self.properties[HwmonSensor.IFACE_NAME]['scale']
offset = self.properties[HwmonSensor.IFACE_NAME]['offset']
+ try:
+ adjust = self.properties[HwmonSensor.IFACE_NAME]['adjust']
+ if adjust == 0:
+ adjust = 1
+ except:
+ adjust = 1
+
if self.value_dirty:
## new value externally set, so just return to hwmon
## process to write value
self.value_dirty = False
- val = (
+ val = int((
self.properties[SensorValue.IFACE_NAME]['value']
- - offset) * scale
+ - offset) * adjust)
return [True, val]
else:
- # Keep the val as integer. scale may be floating point
- val = int(value/scale + offset)
+ # Keep the val as integer. adjust may be floating point
+ val = int(value/adjust + offset)
if (val != self.value):
SensorValue.setValue(self, val)
- self.check_thresholds(val)
+ # scale the value to check threshold
+ self.check_thresholds(val * (10 ** scale))
self.value = val
return [False, 0]