Index: leahi_dialin/dd/modules/heaters.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -24,7 +24,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 @@ -49,8 +49,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, @@ -65,7 +63,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 @@ -83,7 +81,23 @@ self.dbg8 = 0.0 self.dbg9 = 0.0 - + + +# ============================================================ 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"]) @@ -94,37 +108,55 @@ @param message: published DD heaters data message @returns none """ - 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_vars(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 + +# ============================================================ Overrides and Requests ============================================================ def cmd_heaters_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends broadcast time interval.