Index: leahi_dialin/dd/modules/heaters.py =================================================================== diff -u -r5c1132f5aadff6082afa56588ad1f4a64f828cd9 -r6caa49d072aceb2655d605de5d2eea52ab1a8911 --- leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision 5c1132f5aadff6082afa56588ad1f4a64f828cd9) +++ leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision 6caa49d072aceb2655d605de5d2eea52ab1a8911) @@ -25,7 +25,7 @@ from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import CanMessenger, CanChannels -from leahi_dialin.utils.abstract_classes import AbstractSubSystem +from leahi_dialin.utils.abstract_classes import AbstractSubSystem, LocalVars from leahi_dialin.utils.base import publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -50,8 +50,6 @@ function = self._handler_heaters_sync) self.dd_heaters_timestamp = 0.0 #: The timestamp of the latest message - - #: The Heaters data in dictionary format self.dd_heaters = { dd_enum_repository.DDHeaterNames.D5_HEAT.name: { dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name: 0.0, @@ -66,7 +64,7 @@ dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name: 0.0, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name: 0, - dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name: None, # D45 Heater doesn't use this attribute + dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name: None, # D45 Heater doesn't use this attribute dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name: None # D45 Heater doesn't use this attribute @@ -85,7 +83,23 @@ self.dbg9 = 0.0 self.handler_execution_times = [] - + + +# ============================================================ Properties ============================================================ + @property + def dd_heaters(self) -> dict: + """ + The Heaters data + """ + return self._heaters + + @dd_heaters.setter + def dd_heaters(self, value): + self._heaters = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_heaters_data", "dd_heaters", "dbg1", "dbg2", "dbg3", "dbg4", "dbg5", "dbg6", "dbg7", "dbg8", "dbg9", "dd_heaters_timestamp"]) @@ -97,38 +111,56 @@ @returns none """ start = time.perf_counter() - sensor_list = [] - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name, DataTypes.F32)) - msg_list =[] - msg_list.append(('self.dbg1', DataTypes.F32)) - msg_list.append(('self.dbg2', DataTypes.F32)) - msg_list.append(('self.dbg3', DataTypes.F32)) - msg_list.append(('self.dbg4', DataTypes.F32)) - msg_list.append(('self.dbg5', DataTypes.F32)) - msg_list.append(('self.dbg6', DataTypes.F32)) - msg_list.append(('self.dbg7', DataTypes.F32)) - msg_list.append(('self.dbg8', DataTypes.F32)) - msg_list.append(('self.dbg9', DataTypes.F32)) + msg_list = [] + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_DUTY_CYCLE.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_TARGET_TEMP.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name, DataTypes.U32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D45_HEAT.name, dd_enum_repository.DDHeaterAttributes.HEAT_STATE.name, DataTypes.U32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.FEED_FORWARD.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.PWM_PERIOD.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.ADJUSTED_TARGET_TEMP.name, DataTypes.F32)) + msg_list.append((self.dd_heaters, dd_enum_repository.DDHeaterNames.D5_HEAT.name, dd_enum_repository.DDHeaterAttributes.TARGET_TEMP_TD.name, DataTypes.F32)) - self.process_into_dict(dict_to_update = self.dd_heaters, - decoder_list = sensor_list, - message = message) - self.process_into_vars(decoder_list = msg_list, - message = message, - start_from_byte = len(sensor_list) * DataTypes.U32.size()) + # Temp debug values + dbg1 = LocalVars('dbg1') + dbg2 = LocalVars('dbg2') + dbg3 = LocalVars('dbg3') + dbg4 = LocalVars('dbg4') + dbg5 = LocalVars('dbg5') + dbg6 = LocalVars('dbg6') + dbg7 = LocalVars('dbg7') + dbg8 = LocalVars('dbg8') + dbg9 = LocalVars('dbg9') + msg_list.append((dbg1, DataTypes.F32)) + msg_list.append((dbg2, DataTypes.F32)) + msg_list.append((dbg3, DataTypes.F32)) + msg_list.append((dbg4, DataTypes.F32)) + msg_list.append((dbg5, DataTypes.F32)) + msg_list.append((dbg6, DataTypes.F32)) + msg_list.append((dbg7, DataTypes.F32)) + msg_list.append((dbg8, DataTypes.F32)) + msg_list.append((dbg9, DataTypes.F32)) + + self.process_into_vars(decoder_list = msg_list, message = message) + + # Not creating properties for temporary debug values + self.dbg1 = dbg1.value + self.dbg2 = dbg2.value + self.dbg3 = dbg3.value + self.dbg4 = dbg4.value + self.dbg5 = dbg5.value + self.dbg6 = dbg6.value + self.dbg7 = dbg7.value + self.dbg8 = dbg8.value + self.dbg9 = dbg9.value self.dd_heaters_timestamp = timestamp self.handler_execution_times.append((timestamp, message, time.perf_counter() - start)) + +# ============================================================ Overrides and Requests ============================================================ def cmd_heaters_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends broadcast time interval.