Skip to content

Commit 4a2a8ec

Browse files
committed
hw-mgmgt: thermal: TC add config parameters validation.
TC add config parameters validation for module FR: 4448446 Signed-off-by: Oleksandr Shamray <[email protected]>
1 parent ed7ac17 commit 4a2a8ec

File tree

1 file changed

+90
-6
lines changed

1 file changed

+90
-6
lines changed

usr/usr/bin/hw_management_thermal_control_2_5.py

Lines changed: 90 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,37 @@ class CONST(object):
242242
avg = avg_acc / input_smooth_level
243243
"""
244244

245+
SENSOR_PARAM_RANGE = {
246+
r'module\d+': {
247+
"val_min_offset": {
248+
"min": -30000,
249+
"max": -5000,
250+
},
251+
"val_max_offset": {
252+
"min": -30000,
253+
"max": 0,
254+
},
255+
"pwm_min": {
256+
"min": 20,
257+
"max": 100,
258+
},
259+
"pwm_max": {
260+
"min": 30,
261+
"max": 100,
262+
}
263+
},
264+
r'.*': {
265+
"pwm_min": {
266+
"min": 20,
267+
"max": 100,
268+
},
269+
"pwm_max": {
270+
"min": 30,
271+
"max": 100,
272+
}
273+
}
274+
}
275+
245276
# fmt: off
246277
SENSOR_DEF_CONFIG = {
247278
r'psu\d+_fan': {"type": "psu_fan_sensor",
@@ -1340,6 +1371,13 @@ def start(self):
13401371
self.log.info("Starting {}".format(self.name))
13411372
self.pwm_min = int(self.sensors_config.get("pwm_min", CONST.PWM_MIN))
13421373
self.pwm_max = int(self.sensors_config.get("pwm_max", CONST.PWM_MAX))
1374+
if not self.validate_sensor_param("pwm_min", self.pwm_min):
1375+
self.log.error("{}: pwm_min incorrect value ({})".format(self.name, self.pwm_min), 1)
1376+
raise ValueError("Incorrect value of pwm_min {}".format(self.pwm_min))
1377+
if not self.validate_sensor_param("pwm_max", self.pwm_max):
1378+
self.log.error("{}: pwm_max incorrect value ({})".format(self.name, self.pwm_max), 1)
1379+
raise ValueError("Incorrect value of pwm_max {}".format(self.pwm_max))
1380+
13431381
self.pwm_regulator.update_param(self.val_min, self.val_max, self.pwm_min, self.pwm_max)
13441382
self.refresh_attr_period = self.sensors_config.get("refresh_attr_period", 0)
13451383
if self.refresh_attr_period:
@@ -1563,6 +1601,37 @@ def read_val_min_max(self, filename, trh_type, scale=1):
15631601
self.log.debug("Set {} {} : {}".format(self.name, trh_type, val))
15641602
return val
15651603

1604+
# ----------------------------------------------------------------------
1605+
def validate_sensor_param(self, param_name, param_value):
1606+
"""
1607+
@summary: Validate sensor parameter value
1608+
"""
1609+
if not isinstance(param_value, (int, float)):
1610+
self.log.error("{}: {} value({}) is not a number".format(self.name, param_name, param_value), repeat=1)
1611+
return False
1612+
param_value = float(param_value)
1613+
for sensor_name_mask, sensor_param_list in SENSOR_PARAM_RANGE.items():
1614+
if re.match(sensor_name_mask, self.name):
1615+
if param_name in sensor_param_list:
1616+
param_value_range = sensor_param_list[param_name]
1617+
if "min" in param_value_range:
1618+
if param_value < param_value_range["min"]:
1619+
self.log.info("{}: {} value({}) is out of range({}-{})".format(self.name,
1620+
param_name,
1621+
param_value,
1622+
param_value_range["min"],
1623+
param_value_range["max"]))
1624+
return False
1625+
if "max" in param_value_range:
1626+
if param_value > param_value_range["max"]:
1627+
self.log.info("{}: {} value({}) is out of range({}-{})".format(self.name,
1628+
param_name,
1629+
param_value,
1630+
param_value_range["min"],
1631+
param_value_range["max"]))
1632+
return False
1633+
return True
1634+
15661635
# ----------------------------------------------------------------------
15671636
def check_sensor_blocked(self, name=None):
15681637
"""
@@ -1831,6 +1900,25 @@ def __init__(self, cmd_arg, sys_config, name, tc_logger):
18311900
self.scale = CONST.TEMP_SENSOR_SCALE / scale_value
18321901
self.val_lcrit = self.read_val_min_max(None, "val_lcrit", self.scale)
18331902
self.val_hcrit = self.read_val_min_max(None, "val_hcrit", self.scale)
1903+
1904+
self.pwm_min = float(self.sensors_config.get("pwm_min", CONST.PWM_MIN))
1905+
self.pwm_max = float(self.sensors_config.get("pwm_max", CONST.PWM_MAX))
1906+
if not self.validate_sensor_param("pwm_min", self.pwm_min):
1907+
self.log.error("{}: pwm_min incorrect value ({})".format(self.name, self.pwm_min), repeat=1)
1908+
raise ValueError("Incorrect value of pwm_min {}".format(self.pwm_min))
1909+
if not self.validate_sensor_param("pwm_max", self.pwm_max):
1910+
self.log.error("{}: pwm_max incorrect value ({})".format(self.name, self.pwm_max), repeat=1)
1911+
raise ValueError("Incorrect value of pwm_max {}".format(self.pwm_max))
1912+
1913+
self.val_min_offset = self.sensors_config.get("val_min_offset", 0)
1914+
self.val_max_offset = self.sensors_config.get("val_max_offset", 0)
1915+
if not self.validate_sensor_param("val_min_offset", self.val_min_offset):
1916+
self.log.error("{}: val_min_offset incorrect value ({})".format(self.name, self.val_min_offset), repeat=1)
1917+
raise ValueError("Incorrect value of val_min_offset {}".format(self.val_min_offset))
1918+
if not self.validate_sensor_param("val_max_offset", self.val_max_offset):
1919+
self.log.error("{}: val_max_offset incorrect value ({})".format(self.name, self.val_max_offset), repeat=1)
1920+
raise ValueError("Incorrect value of val_max_offset {}".format(self.val_max_offset))
1921+
18341922
self.refresh_attr()
18351923

18361924
# ----------------------------------------------------------------------
@@ -1839,14 +1927,10 @@ def refresh_attr(self):
18391927
@summary: refresh sensor attributes.
18401928
@return None
18411929
"""
1842-
self.pwm_min = float(self.sensors_config.get("pwm_min", CONST.PWM_MIN))
1843-
self.pwm_max = float(self.sensors_config.get("pwm_max", CONST.PWM_MAX))
1844-
val_min_offset = self.sensors_config.get("val_min_offset", 0)
1845-
val_max_offset = self.sensors_config.get("val_max_offset", 0)
18461930
val_max = self.read_val_min_max("thermal/{}_temp_crit".format(self.base_file_name), "val_max", scale=self.scale)
18471931
if val_max != 0:
1848-
self.val_min = val_max + val_min_offset / self.scale
1849-
self.val_max = val_max + val_max_offset / self.scale
1932+
self.val_max = val_max + self.val_max_offset / self.scale
1933+
self.val_min = self.val_max + self.val_min_offset / self.scale
18501934
else:
18511935
self.val_max = 0.0
18521936
self.val_min = 0.0

0 commit comments

Comments
 (0)