Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions ev3dev/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1613,6 +1613,7 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
self._bin_data_format = None
self._bin_data_size = None
self._bin_data = None
self._mode_scale = {}

__slots__ = [
# ~autogen generic-class-slots classes.sensor>currentClass
Expand All @@ -1632,8 +1633,21 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
'_bin_data_format',
'_bin_data_size',
'_bin_data',
'_mode_scale'
]

def _scale(self, mode):
"""
Returns value scaling coefficient for the given mode.
"""
if self._mode_scale.contains(mode):
scale = self._mode_scale[mode]
else:
scale = 10**(-self.decimals)
self._mode_scale[mode] = scale

return scale

# ~autogen generic-get-set classes.sensor>currentClass

@property
Expand Down Expand Up @@ -2116,7 +2130,7 @@ def distance_centimeters(self):
if self.auto_mode:
self.mode = self.MODE_US_DIST_CM

return self.value(0)
return self.value(0) * self._scale('US_DIST_CM')

@property
def distance_inches(self):
Expand All @@ -2128,7 +2142,7 @@ def distance_inches(self):
if self.auto_mode:
self.mode = self.MODE_US_DIST_IN

return self.value(0)
return self.value(0) * self._scale('US_DIST_IN')

@property
def other_sensor_present(self):
Expand Down Expand Up @@ -2309,7 +2323,7 @@ def sound_pressure(self):
if self.auto_mode:
self.mode = self.MODE_DB

return self.value(0)
return self.value(0) * self._scale('DB')

@property
def sound_pressure_low(self):
Expand All @@ -2321,7 +2335,7 @@ def sound_pressure_low(self):
if self.auto_mode:
self.mode = self.MODE_DBA

return self.value(0)
return self.value(0) * self._scale('DBA')

class LightSensor(Sensor):

Expand Down Expand Up @@ -2361,7 +2375,7 @@ def reflected_light_intensity(self):
if self.auto_mode:
self.mode = self.MODE_REFLECT

return self.value(0)
return self.value(0) * self._scale('REFLECT')

@property
def ambient_light_intensity(self):
Expand All @@ -2372,7 +2386,7 @@ def ambient_light_intensity(self):
if self.auto_mode:
self.mode = self.MODE_AMBIENT

return self.value(0)
return self.value(0) * self._scale('AMBIENT')


# ~autogen
Expand Down
2 changes: 1 addition & 1 deletion templates/special-sensors.liquid
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ assign propName = prop.propertyName | upcase | underscore_spaces%}

return {%
for value_index in mapping.sourceValue
%}self.value({{ value_index }}){% unless forloop.last %}, {% endunless %}{%
%}self.value({{ value_index }}){% if mapping.type contains 'float' %} * self._scale('{{ mode }}'){% endif %}{% unless forloop.last %}, {% endunless %}{%
endfor %}
{% endfor %}{%
endfor %}