Index: leahi_dialin/common/dd_defs.py =================================================================== diff -u -r01af2d84b2cb4aa87c58f10eb8af669820e71f49 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision 01af2d84b2cb4aa87c58f10eb8af669820e71f49) +++ leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -707,7 +707,7 @@ @unique -class DDBicartChFFillExecStates(DialinEnum): +class DDBicarbChFillExecStates(DialinEnum): BICARB_CHAMBER_START_STATE = 0 # Initial state of Chamber F fill BICARB_CARTRIDGE_FILL_WATER_START_STATE = 1 # Dry bicart fill water start state while dialysate delivery BICARB_CARTRIDGE_FILL_WATER_END_STATE = 2 # Dry bicart fill water end state while dialysate delivery @@ -718,7 +718,7 @@ BICARB_SUPPLY_VENT_END_STATE = 7 # Bicarb Chamber supply vent cartridge and Chamber F end state NUM_OF_BICARB_CHAMBER_FILL_EXEC_STATES = 8 # Number of Bicarb chamber fill state -DDBicartChFFillExecStates._str_list = { +DDBicarbChFillExecStates._str_list = { # Official Name : Accepted strings 'BICARB_CHAMBER_START_STATE': ['start'], 'BICARB_CARTRIDGE_FILL_WATER_START_STATE': ['cartridge fill start', 'cartridge priming start'], Index: leahi_dialin/common/dd_defs_proxy.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/common/dd_defs_proxy.py (.../dd_defs_proxy.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/common/dd_defs_proxy.py (.../dd_defs_proxy.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -59,7 +59,7 @@ # Sensor Attributes DDBalancingChamberStates = dd_defs.DDBalancingChamberStates DDBalancingChamberSwitchStates = dd_defs.DDBalancingChamberSwitchStates - DDBicartChFFillExecStates = dd_defs.DDBicartChFFillExecStates + DDBicartChFFillExecStates = dd_defs.DDBicarbChFillExecStates DDBloodLeakStates = dd_defs.DDBloodLeakStates DDConcentratePumpAttributes = dd_defs.DDConcentratePumpAttributes DDConcentratePumpStates = dd_defs.DDConcentratePumpStates Index: leahi_dialin/dd/dialysate_delivery.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -154,7 +154,7 @@ @property def dd_operation_mode(self) -> int: """ - The current Operation Mode + The Operation Mode """ return self._op_mode @@ -166,7 +166,7 @@ @property def dd_operation_sub_mode(self) -> int: """ - The current Operation Sub Mode + The Operation Sub Mode """ return self._sub_mode Index: leahi_dialin/dd/modules/dialysate_pump.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -51,8 +51,6 @@ function = self._handler_dialysate_pumps_sync) self.dd_dialysate_pump_timestamp = 0 #: The timestamp of the latest message - - #: The Dialysate Pumps data in dictionary format self.dd_dialysate_pumps = { dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name: { dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name: 0.0, @@ -81,6 +79,22 @@ } + +# ============================================================ Properties ============================================================ + @property + def dd_dialysate_pumps(self) -> dict: + """ + The Dialysate Pumps data + """ + return self._dialysate_pumps + + @dd_dialysate_pumps.setter + def dd_dialysate_pumps(self, value): + self._dialysate_pumps = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_dialysate_pumps_data", "dd_dialysate_pumps", "dd_dialysate_pump_timestamp",]) def _handler_dialysate_pumps_sync(self, message, timestamp=0.0): """ @@ -90,34 +104,34 @@ @param message: published dialysate pumps' data message @return: None """ - sensor_list =[] - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.STATE.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.STATE.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name, DataTypes.U32)) + msg_list =[] + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.STATE.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.STATE.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name, DataTypes.F32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name, DataTypes.U32)) + msg_list.append((self.dd_dialysate_pumps, dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name, dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name, DataTypes.U32)) - self.process_into_vars(dict_to_update = self.dd_dialysate_pumps, - decoder_list = sensor_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_dialysate_pump_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_dialysate_pump_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dialysate pump data broadcast interval override command Index: leahi_dialin/dd/modules/drybicart.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/drybicart.py (.../drybicart.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/drybicart.py (.../drybicart.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -16,17 +16,19 @@ # Module imports from logging import Logger +from typing import Union # Project imports from leahi_dialin.common.constants import NO_RESET , RESET +from leahi_dialin.common.dd_defs import DDBicarbChFillExecStates, DDDryBicartDrainExecStates, DDDryBicartFillExecStates +from leahi_dialin.common.disp_defs import BicarbTypes from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from dataclasses import dataclass from leahi_dialin.protocols.CAN import CanMessenger, CanChannels from leahi_dialin.utils.abstract_classes import AbstractSubSystem from leahi_dialin.utils.base import publish -from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray +from leahi_dialin.utils.conversions import integer_to_bytearray class DDDryBicart(AbstractSubSystem): @@ -52,26 +54,184 @@ function = self._handler_dry_bicart_sync) self.dd_dry_bicart_timestamp = 0.0 #: The timestamp of the last message - self.dd_dry_bicart_fill_execution_state = 0 #: The Dry Bicart fill execution state - self.dd_bicarb_chamber_fill_execution_state = 0 #: The Bicarb chamber fill execution state - self.dd_dry_bicart_drain_execution_state = 0 #: The Dry Bicart drain execution state - self.dd_dry_bicart_fill_cycle_counter = 0 #: The Dry Bicart fill cycle counter - self.dd_dry_bicart_max_fill_cycle_count = 0 #: The Dry Bicart max fill cycle state - self.dd_dry_bicart_fill_request = 0 #: Is fill requested for Dry Bicart or not - self.dd_bicarb_chamber_fill_request = 0 #: Is fill requested for Bicarb Chamber or not - self.dd_dry_bicart_drain_request = 0 #: Is drain requested for Dry Bicart or not - self.dd_dry_bicart_last_fill_time = 0 #: The Dry Bicart last fill time - self.dd_dry_bicart_current_fill_time = 0 #: The Dry Bicart current fill time - self.dd_dryBiCartType = 0 #: The Dry Bicart concentrate option index - self.dd_dryBiCartDrainTimePeriod = 0 #: The Dry Bicart drain time period in sec - self.dd_dry_bicart_timestamp = 0 #: The timestamp of the last message + self.dd_dry_bicart_fill_execution_state = DDDryBicartFillExecStates.NUM_OF_DRY_BICART_FILL_EXEC_STATES + self.dd_bicarb_chamber_fill_execution_state = DDBicarbChFillExecStates.NUM_OF_BICARB_CHAMBER_FILL_EXEC_STATES + self.dd_dry_bicart_drain_execution_state = DDDryBicartDrainExecStates.NUM_OF_DRY_BICART_DRAIN_EXEC_STATES + self.dd_dry_bicart_fill_cycle_counter = 0 + self.dd_dry_bicart_max_fill_cycle_count = 0 + self.dd_dry_bicart_fill_request = False + self.dd_dry_bicart_drain_request = False + self.dd_bicarb_chamber_fill_request = False + self.dd_dry_bicart_last_fill_time = 0 + self.dd_dry_bicart_current_fill_time = 0 + self.dry_bicart_type = BicarbTypes.NUM_OF_BICARB_TYPES + self.dry_bicart_drain_time_period = 0 + +# ============================================================ Properties ============================================================ + @property + def dd_dry_bicart_fill_execution_state(self) -> DDDryBicartFillExecStates: + """ + The Dry Bicart fill execution state + """ + return self._dry_bicart_fill_execution_state + + @dd_dry_bicart_fill_execution_state.setter + def dd_dry_bicart_fill_execution_state(self, value: Union[int, DDDryBicartFillExecStates]): + if isinstance(value, int): + self._dry_bicart_fill_execution_state = DDDryBicartFillExecStates(value) + else: + self._dry_bicart_fill_execution_state = value + + + @property + def dd_dry_bicart_drain_execution_state(self) -> DDDryBicartDrainExecStates: + """ + The Dry Bicart drain execution state + """ + return self._dry_bicart_drain_execution_state + + @dd_dry_bicart_drain_execution_state.setter + def dd_dry_bicart_drain_execution_state(self, value: Union[int, DDDryBicartDrainExecStates]): + if isinstance(value, int): + self._dry_bicart_drain_execution_state = DDDryBicartDrainExecStates(value) + else: + self._dry_bicart_drain_execution_state = value + + + @property + def dd_bicarb_chamber_fill_execution_state(self) -> DDBicarbChFillExecStates: + """ + The Bicarb chamber F fill execution state + """ + return self._bicarb_chamber_fill_execution_state + + @dd_bicarb_chamber_fill_execution_state.setter + def dd_bicarb_chamber_fill_execution_state(self, value: Union[int, DDBicarbChFillExecStates]): + if isinstance(value, int): + self._bicarb_chamber_fill_execution_state = DDBicarbChFillExecStates(value) + else: + self._bicarb_chamber_fill_execution_state = value + + + @property + def dd_dry_bicart_fill_cycle_counter(self) -> int: + """ + The Dry Bicart fill cycle counter + """ + return self._dry_bicart_fill_cycle_counter + + @dd_dry_bicart_fill_cycle_counter.setter + def dd_dry_bicart_fill_cycle_counter(self, value): + self._dry_bicart_fill_cycle_counter = value + + + @property + def dd_dry_bicart_max_fill_cycle_count(self) -> int: + """ + The Dry Bicart max fill cycle state + """ + return self._dry_bicart_max_fill_cycle_count + + @dd_dry_bicart_max_fill_cycle_count.setter + def dd_dry_bicart_max_fill_cycle_count(self, value): + self._dry_bicart_max_fill_cycle_count = value + + + @property + def dd_dry_bicart_fill_request(self) -> bool: + """ + Is fill requested for Dry Bicart or not + """ + return self._dry_bicart_fill_request + + @dd_dry_bicart_fill_request.setter + def dd_dry_bicart_fill_request(self, value): + self._dry_bicart_fill_request = value + + + @property + def dd_dry_bicart_drain_request(self) -> bool: + """ + Is drain requested for Dry Bicart or not + """ + return self._dry_bicart_drain_request + + @dd_dry_bicart_drain_request.setter + def dd_dry_bicart_drain_request(self, value): + self._dry_bicart_drain_request = value + + + @property + def dd_bicarb_chamber_fill_request(self) -> bool: + """ + Is fill requested for Bicarb Chamber or not + """ + return self._bicarb_chamber_fill_request + + @dd_bicarb_chamber_fill_request.setter + def dd_bicarb_chamber_fill_request(self, value): + self._bicarb_chamber_fill_request = value + + + @property + def dd_dry_bicart_last_fill_time(self) -> int: + """ + The Dry Bicart last fill time + """ + return self._dry_bicart_last_fill_time + + @dd_dry_bicart_last_fill_time.setter + def dd_dry_bicart_last_fill_time(self, value): + self._dry_bicart_last_fill_time = value + + + @property + def dd_dry_bicart_current_fill_time(self) -> int: + """ + The Dry Bicart current fill time + """ + return self._dry_bicart_current_fill_time + + @dd_dry_bicart_current_fill_time.setter + def dd_dry_bicart_current_fill_time(self, value): + self._dry_bicart_current_fill_time = value + + + @property + def dry_bicart_type(self) -> BicarbTypes: + """ + The Dry Bicart concentrate option + """ + return self._dry_bicart_type + + @dry_bicart_type.setter + def dry_bicart_type(self, value: Union[int, BicarbTypes]): + if isinstance(value, int): + self._dry_bicart_type = BicarbTypes(value) + else: + self._dry_bicart_type = value + + + @property + def dry_bicart_drain_time_period(self) -> int: + """ + The Dry Bicart drain time period in sec + """ + return self._dry_bicart_drain_time_period + + @dry_bicart_drain_time_period.setter + def dry_bicart_drain_time_period(self, value): + self._dry_bicart_drain_time_period = value + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_dry_bicart_data", "dd_dry_bicart_fill_execution_state", "dd_bicarb_chamber_fill_execution_state", "dd_dry_bicart_drain_execution_state", "dd_dry_bicart_fill_cycle_counter", "dd_dry_bicart_max_fill_cycle_count", "dd_dry_bicart_fill_request", "dry_bicarb_chamber_fill_request", "dd_dry_bicart_drain_request", - "dd_dry_bicart_last_fill_time", "dd_dry_bicart_current_fill_time", "dd_dryBiCartType", "dd_dryBiCartDrainTimePeriod", + "dd_dry_bicart_last_fill_time", "dd_dry_bicart_current_fill_time", "dry_bicart_type", "dry_bicart_drain_time_period", "dd_dry_bicart_timestamp"]) def _handler_dry_bicart_sync(self, message, timestamp=0.0): """ @@ -81,25 +241,25 @@ @return: None """ msg_list = [] - msg_list.append(('self.dd_dry_bicart_fill_execution_state', DataTypes.U32)) - msg_list.append(('self.dd_bicarb_chamber_fill_execution_state', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_drain_execution_state', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_fill_cycle_counter', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_max_fill_cycle_count', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_fill_request', DataTypes.U32)) - msg_list.append(('self.dd_bicarb_chamber_fill_request', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_drain_request', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_last_fill_time', DataTypes.U32)) - msg_list.append(('self.dd_dry_bicart_current_fill_time', DataTypes.U32)) - msg_list.append(('self.dd_dryBiCartType', DataTypes.U32)) - msg_list.append(('self.dd_dryBiCartDrainTimePeriod', DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_fill_execution_state, DataTypes.U32)) + msg_list.append((type(self).dd_bicarb_chamber_fill_execution_state, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_drain_execution_state, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_fill_cycle_counter, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_max_fill_cycle_count, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_fill_request, DataTypes.U32)) + msg_list.append((type(self).dd_bicarb_chamber_fill_request, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_drain_request, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_last_fill_time, DataTypes.U32)) + msg_list.append((type(self).dd_dry_bicart_current_fill_time, DataTypes.U32)) + msg_list.append((type(self).dry_bicart_type, DataTypes.U32)) + msg_list.append((type(self).dry_bicart_drain_time_period, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) - + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_dry_bicart_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_dry_bicart_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart data broadcast interval override command Index: leahi_dialin/dd/modules/gen_dialysate.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/gen_dialysate.py (.../gen_dialysate.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/gen_dialysate.py (.../gen_dialysate.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -16,9 +16,11 @@ # Module imports from logging import Logger +from typing import Union # Project imports from leahi_dialin.common.constants import NO_RESET +from leahi_dialin.common.dd_defs import DDGenDialysateModeStates from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override @@ -50,12 +52,68 @@ function = self._handler_gen_dialysate_sync) self.dd_gen_dialysate_timestamp = 0.0 #: The timestamp of the last message - self.execution_state = 0 #: The Execution state - self.dialysate_delivery_in_progress = 0 #: Is Dialysate delivery in progress or not - self.dialysate_good_to_deliver = 0 #: The Dialysate is good to delover or not - self.target_qd = 0.0 #: The Target Qd + self.execution_state = DDGenDialysateModeStates.NUM_OF_DD_GEND_MODE_STATES + self.dialysate_delivery_in_progress = False + self.dialysate_good_to_deliver = False + self.target_qd = 0.0 + +# ============================================================ Properties ============================================================ + @property + def execution_state(self) -> DDGenDialysateModeStates: + """ + The execution state + """ + return self._execution_state + + @execution_state.setter + def execution_state(self, value: Union[int, DDGenDialysateModeStates]): + if isinstance(value, int): + self._execution_state = DDGenDialysateModeStates(value) + else: + self._execution_state = value + + + @property + def dialysate_delivery_in_progress(self) -> bool: + """ + Is Dialysate delivery in progress or not + """ + return self._delivery_in_progress + + @dialysate_delivery_in_progress.setter + def dialysate_delivery_in_progress(self, value): + self._delivery_in_progress = value + + + + @property + def dialysate_good_to_deliver(self) -> bool: + """ + The Dialysate is good to delover or not + """ + return self._good_to_deliver + + @dialysate_good_to_deliver.setter + def dialysate_good_to_deliver(self, value): + self._good_to_deliver = value + + + @property + def target_qd(self) -> float: + """ + The Target Qd + """ + return self._target_qd + + @target_qd.setter + def target_qd(self, value): + self._target_qd = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_gen_dialysate_mode_data", "execution_state", "dialysate_delivery_in_progress", "dialysate_good_to_deliver", @@ -69,16 +127,17 @@ @return: None """ msg_list = [] - msg_list.append(('self.execution_state', DataTypes.U32)) - msg_list.append(('self.dialysate_delivery_in_progress', DataTypes.U32)) - msg_list.append(('self.dialysate_good_to_deliver', DataTypes.U32)) - msg_list.append(('self.target_qd', DataTypes.F32)) + msg_list.append((type(self).execution_state, DataTypes.U32)) + msg_list.append((type(self).dialysate_delivery_in_progress, DataTypes.BOOL)) + msg_list.append((type(self).dialysate_good_to_deliver, DataTypes.BOOL)) + msg_list.append((type(self).target_qd, DataTypes.F32)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_gen_dialysate_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_gen_dialysate_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the gen dialysate data broadcast interval override command 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. Index: leahi_dialin/dd/modules/levels.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/levels.py (.../levels.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -49,17 +49,44 @@ function = self._handler_levels_sync) self.dd_levels_timestamp = 0 #: The timestamp of the latest message - - #: The Level Sensors data in dictionary format self.dd_level_sensors = { dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name: 0, } - self.dd_bicarb_level = 0 #: The Bicarb level + self.dd_bicarb_level = 0 + + +# ============================================================ Properties ============================================================ + @property + def dd_level_sensors(self) -> dict: + """ + The Level Sensors data + """ + return self._level_sensors + + @dd_level_sensors.setter + def dd_level_sensors(self, value): + self._level_sensors = value + + + @property + def dd_bicarb_level(self) -> int: + """ + The Bicarb level + """ + return self._bicarb_level + + @dd_bicarb_level.setter + def dd_bicarb_level(self, value): + self._bicarb_level = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_level_data", "dd_level_sensors", "dd_bicarb_level", "dd_levels_timestamp"]) def _handler_levels_sync(self, message, timestamp=0.0): """ @@ -68,23 +95,19 @@ @param message: published levels data message @returns none """ - sensor_list =[] - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name, DataTypes.U32)) - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name, DataTypes.U32)) msg_list =[] - msg_list.append(('self.dd_bicarb_level', DataTypes.U32)) + msg_list.append((self.dd_level_sensors, dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name, DataTypes.U32)) + msg_list.append((self.dd_level_sensors, dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name, DataTypes.U32)) + msg_list.append((self.dd_level_sensors, dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name, DataTypes.U32)) + msg_list.append((self.dd_level_sensors, dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name, DataTypes.U32)) + msg_list.append((type(self).dd_bicarb_level, DataTypes.U32)) - self.process_into_vars(dict_to_update = self.dd_level_sensors, - 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()) + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_levels_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_levels_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends dd levels broadcast time interval override. Index: leahi_dialin/dd/modules/mixing_cntrl.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/mixing_cntrl.py (.../mixing_cntrl.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/mixing_cntrl.py (.../mixing_cntrl.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -23,7 +23,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 from leahi_dialin.common.dataclass.closed_loop_signals import ControllerSignals @@ -102,6 +102,154 @@ self.dd_mixing_control_timestamp = 0 #: The timestamp of the last message + +# ============================================================ Properties ============================================================ + @property + def bicarb_mixing_state(self) -> int: + """ + The Bicarb Mixing State + """ + return self._bicarb_mixing_state + + @bicarb_mixing_state.setter + def bicarb_mixing_state(self, value): + self._bicarb_mixing_state = value + + + @property + def bicarb_control_interval(self) -> int: + """ + The Bicarb Control Interval + """ + return self._bicarb_control_interval + + @bicarb_control_interval.setter + def bicarb_control_interval(self, value): + self._bicarb_control_interval = value + + + @property + def acid_mixing_state(self) -> int: + """ + The Acid Mixing State + """ + return self._acid_mixing_state + + @acid_mixing_state.setter + def acid_mixing_state(self, value): + self._acid_mixing_state = value + + + @property + def acid_control_interval(self) -> int: + """ + The Acid Control Interval + """ + return self._acid_control_interval + + @acid_control_interval.setter + def acid_control_interval(self, value): + self._acid_control_interval = value + + + @property + def current_bicarb_mix_volume(self) -> float: + """ + The Bicarb Current Mixing Volume + """ + return self._current_bicarb_mix_volume + + @current_bicarb_mix_volume.setter + def current_bicarb_mix_volume(self, value): + self._current_bicarb_mix_volume = value + + + @property + def last_bicarb_mix_volume(self) -> float: + """ + The Bicarb Last Mixing Volume + """ + return self._last_bicarb_mix_volume + + @last_bicarb_mix_volume.setter + def last_bicarb_mix_volume(self, value): + self._last_bicarb_mix_volume = value + + + @property + def current_acid_mix_volume(self) -> float: + """ + The Acid Current Mixing Volume + """ + return self._current_acid_mix_volume + + @current_acid_mix_volume.setter + def current_acid_mix_volume(self, value): + self._current_acid_mix_volume = value + + + @property + def last_acid_mix_volume(self) -> float: + """ + The Acid Last Mixing Volume + """ + return self._last_acid_mix_volume + + @last_acid_mix_volume.setter + def last_acid_mix_volume(self, value): + self._last_acid_mix_volume = value + + + @property + def bicarb_conductivity_pre_mix(self) -> float: + """ + The Bicarb Conductivity Pre Mixing + """ + return self._bicarb_conductivity_pre_mix + + @bicarb_conductivity_pre_mix.setter + def bicarb_conductivity_pre_mix(self, value): + self._bicarb_conductivity_pre_mix = value + + + @property + def bicarb_conductivity_post_mix(self) -> float: + """ + The Bicarb Conductivity Post Mixing + """ + return self._bicarb_conductivity_post_mix + + @bicarb_conductivity_post_mix.setter + def bicarb_conductivity_post_mix(self, value): + self._bicarb_conductivity_post_mix = value + + + @property + def acid_conductivity_post_mix(self) -> float: + """ + The Acid Conductivity Post Mixing + """ + return self._acid_conductivity_post_mix + + @acid_conductivity_post_mix.setter + def acid_conductivity_post_mix(self, value): + self._acid_conductivity_post_mix = value + + + @property + def total_conductivity(self) -> float: + """ + The Total Conductivity + """ + return self._total_conductivity + + @total_conductivity.setter + def total_conductivity(self, value): + self._total_conductivity = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_mixing_control_data", "bicarb_mixing_state", "bicarb_control_interval", "acid_mixing_state", "acid_control_interval", "bicarb_conductivity_pre_mix", "bicarb_conductivity_post_mix", "acid_conductivity_post_mix", @@ -122,54 +270,102 @@ @return: None """ msg_list = [] + msg_list.append((type(self).bicarb_mixing_state, DataTypes.U32)) + msg_list.append((type(self).bicarb_control_interval, DataTypes.U32)) + msg_list.append((type(self).acid_mixing_state, DataTypes.U32)) + msg_list.append((type(self).acid_control_interval, DataTypes.U32)) - msg_list.append(('self.bicarb_mixing_state', DataTypes.U32)) - msg_list.append(('self.bicarb_control_interval', DataTypes.U32)) - msg_list.append(('self.acid_mixing_state', DataTypes.U32)) - msg_list.append(('self.acid_control_interval', DataTypes.U32)) + msg_list.append((type(self).current_bicarb_mix_volume, DataTypes.F32)) + msg_list.append((type(self).last_bicarb_mix_volume, DataTypes.F32)) + msg_list.append((type(self).current_acid_mix_volume, DataTypes.F32)) + msg_list.append((type(self).last_acid_mix_volume, DataTypes.F32)) - msg_list.append(('self.current_bicarb_mix_volume', DataTypes.F32)) - msg_list.append(('self.last_bicarb_mix_volume', DataTypes.F32)) - msg_list.append(('self.current_acid_mix_volume', DataTypes.F32)) - msg_list.append(('self.last_acid_mix_volume', DataTypes.F32)) + msg_list.append((type(self).bicarb_conductivity_pre_mix, DataTypes.F32)) + msg_list.append((type(self).bicarb_conductivity_post_mix, DataTypes.F32)) + msg_list.append((type(self).acid_conductivity_post_mix, DataTypes.F32)) + msg_list.append((type(self).total_conductivity, DataTypes.F32)) - msg_list.append(('self.bicarb_conductivity_pre_mix', DataTypes.F32)) - msg_list.append(('self.bicarb_conductivity_post_mix', DataTypes.F32)) - msg_list.append(('self.acid_conductivity_post_mix', DataTypes.F32)) - msg_list.append(('self.total_conductivity', DataTypes.F32)) + # Temp debug values + bicarb_reference = LocalVars() + bicarb_measured = LocalVars() + bicarb_error = LocalVars() + bicarb_error_sum = LocalVars() + bicarb_error_sum_after = LocalVars() + bicarb_prop_output = LocalVars() + bicarb_integral_output = LocalVars() + bicarb_ff_output = LocalVars() + bicarb_control = LocalVars() + msg_list.append((bicarb_reference, DataTypes.F32)) + msg_list.append((bicarb_measured, DataTypes.F32)) + msg_list.append((bicarb_error, DataTypes.F32)) + msg_list.append((bicarb_error_sum, DataTypes.F32)) + msg_list.append((bicarb_error_sum_after, DataTypes.F32)) + msg_list.append((bicarb_prop_output, DataTypes.F32)) + msg_list.append((bicarb_integral_output, DataTypes.F32)) + msg_list.append((bicarb_ff_output, DataTypes.F32)) + msg_list.append((bicarb_control, DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_reference', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_measured', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_error', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_error_sum', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_error_sum_after_windup', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_proportional_output', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_integral_output ', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_signal_feed_forward_output', DataTypes.F32)) - msg_list.append(('self.bcarb_ctlrl_signal.control_singal_control', DataTypes.F32)) + acid_reference = LocalVars() + acid_measured = LocalVars() + acid_error = LocalVars() + acid_error_sum = LocalVars() + acid_error_sum_after = LocalVars() + acid_prop_output = LocalVars() + acid_integral_output = LocalVars() + acid_ff_output = LocalVars() + acid_control = LocalVars() + msg_list.append((acid_reference, DataTypes.F32)) + msg_list.append((acid_measured, DataTypes.F32)) + msg_list.append((acid_error, DataTypes.F32)) + msg_list.append((acid_error_sum, DataTypes.F32)) + msg_list.append((acid_error_sum_after, DataTypes.F32)) + msg_list.append((acid_prop_output, DataTypes.F32)) + msg_list.append((acid_integral_output, DataTypes.F32)) + msg_list.append((acid_ff_output, DataTypes.F32)) + msg_list.append((acid_control, DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_reference', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_measured', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_error', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_error_sum', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_error_sum_after_windup', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_proportional_output', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_integral_output ', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_signal_feed_forward_output', DataTypes.F32)) - msg_list.append(('self.acid_ctrl_signal.control_singal_control', DataTypes.F32)) + bicarb_kp_gain = LocalVars() + bicarb_ki_gain = LocalVars() + acid_kp_gain = LocalVars() + acid_ki_gain = LocalVars() + msg_list.append((bicarb_kp_gain, DataTypes.F32)) + msg_list.append((bicarb_ki_gain, DataTypes.F32)) + msg_list.append((acid_kp_gain, DataTypes.F32)) + msg_list.append((acid_ki_gain, DataTypes.F32)) - msg_list.append(('self.dd_bicarb_kp_gain', DataTypes.F32)) - msg_list.append(('self.dd_bicarb_ki_gain', DataTypes.F32)) + self.process_into_vars(decoder_list = msg_list, message = message) - msg_list.append(('self.dd_acid_kp_gain', DataTypes.F32)) - msg_list.append(('self.dd_acid_ki_gain', DataTypes.F32)) + # Not creating properties for temporary debug values + self.bcarb_ctlrl_signal.control_signal_reference = bicarb_reference.value + self.bcarb_ctlrl_signal.control_signal_measured = bicarb_measured.value + self.bcarb_ctlrl_signal.control_signal_error = bicarb_error.value + self.bcarb_ctlrl_signal.control_signal_error_sum = bicarb_error_sum.value + self.bcarb_ctlrl_signal.control_signal_error_sum_after_windup = bicarb_error_sum_after.value + self.bcarb_ctlrl_signal.control_signal_proportional_output = bicarb_prop_output.value + self.bcarb_ctlrl_signal.control_signal_integral_output = bicarb_integral_output.value + self.bcarb_ctlrl_signal.control_signal_feed_forward_output = bicarb_ff_output.value + self.bcarb_ctlrl_signal.control_singal_control = bicarb_control.value - self.process_into_vars(decoder_list = msg_list, - message = message) + self.acid_ctrl_signal.control_signal_reference = acid_reference.value + self.acid_ctrl_signal.control_signal_measured = acid_measured.value + self.acid_ctrl_signal.control_signal_error = acid_error.value + self.acid_ctrl_signal.control_signal_error_sum = acid_error_sum.value + self.acid_ctrl_signal.control_signal_error_sum_after_windup = acid_error_sum_after.value + self.acid_ctrl_signal.control_signal_proportional_output = acid_prop_output.value + self.acid_ctrl_signal.control_signal_integral_output = acid_integral_output.value + self.acid_ctrl_signal.control_signal_feed_forward_output = acid_ff_output.value + self.acid_ctrl_signal.control_singal_control = acid_control.value + self.dd_bicarb_kp_gain = bicarb_kp_gain.value + self.dd_bicarb_ki_gain = bicarb_ki_gain.value + self.dd_acid_kp_gain = acid_kp_gain.value + self.dd_acid_ki_gain = acid_ki_gain.value + self.dd_mixing_control_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_dialysate_mixing_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the mixing control data broadcast interval override command @@ -211,7 +407,7 @@ channel_id=CanChannels.dialin_to_dd_ch_id, msg_id=MsgIds.MSG_ID_DD_BICARB_MIX_VOL_OVERRIDE_REQUEST, entity_name='DD Bicarb Mix Vol', - override_text=str(bicarb_dose_vol), + override_text=str(bicarb_mix_vol), logger=self.logger, can_interface=self.can_interface) Index: leahi_dialin/dd/modules/post_gen_dialysate.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/post_gen_dialysate.py (.../post_gen_dialysate.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/post_gen_dialysate.py (.../post_gen_dialysate.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -16,9 +16,11 @@ # Module imports from logging import Logger +from typing import Union # Project imports from leahi_dialin.common.constants import NO_RESET +from leahi_dialin.common.dd_defs import DDPostGenDialysateStates from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override @@ -49,9 +51,27 @@ function = self._handler_post_gen_dialysate_sync) self.post_gen_state_timestamp = 0 #: The timestamp of the latest message - self.execution_state = 0 #: The execution state + self.execution_state = DDPostGenDialysateStates.NUM_OF_DD_POST_GEN_DIALYSATE_STATES +# ============================================================ Properties ============================================================ + @property + def execution_state(self) -> DDPostGenDialysateStates: + """ + The execution state + """ + return self._execution_state + + @execution_state.setter + def execution_state(self, value: Union[int, DDPostGenDialysateStates]): + if isinstance(value, int): + self._execution_state = DDPostGenDialysateStates(value) + else: + self._execution_state = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_post_gen_dialysate_state_data", "execution_state", "post_gen_state_timestamp"]) def _handler_post_gen_dialysate_sync(self, message, timestamp=0.0): """ @@ -61,13 +81,14 @@ @return: None """ msg_list =[] - msg_list.append(('self.execution_state', DataTypes.U32)) + msg_list.append((type(self).execution_state, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.post_gen_state_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_post_gen_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the broadcast time interval override for post gen dialysate data. Index: leahi_dialin/dd/modules/pre_gen_dialysate.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/pre_gen_dialysate.py (.../pre_gen_dialysate.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/pre_gen_dialysate.py (.../pre_gen_dialysate.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -16,9 +16,11 @@ # Module imports from logging import Logger +from typing import Union # Project imports from leahi_dialin.common.constants import NO_RESET +from leahi_dialin.common.dd_defs import DDPreGenDialysateStates from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override @@ -53,16 +55,95 @@ function = self._handler_pre_gen_request_sync) self.pre_gen_state_timestamp = 0 #: The timestamp of the latest Pre-Gen State message - self.execution_state = 0 #: The execution state + self.execution_state = DDPreGenDialysateStates.NUM_OF_DD_PRE_GEN_DIALYSATE_STATES self.pre_gen_request_timestamp = 0 #: The timestamp of the latest Pre-Gen Request message - self.pre_gen_start = 0 #: The Pre-Gen start value - self.pre_gen_dial_rate = 0.0 #: The Pre-Gen dialysate rate - self.pre_gen_dial_temp = 0.0 #: The Pre-Gen dialysate temperature - self.pre_gen_acid = 0 #: The Pre-Gen acid concentrate option index - self.pre_gen_bicarb = 0 #: The Pre-Gen bicarb concentrate option index + self.pre_gen_start = 0 + self.pre_gen_dial_rate = 0.0 + self.pre_gen_dial_temp = 0.0 + self.pre_gen_acid = 0 + self.pre_gen_bicarb = 0 + +# ============================================================ Properties ============================================================ + @property + def execution_state(self) -> DDPreGenDialysateStates: + """ + The execution state + """ + return self._execution_state + + @execution_state.setter + def execution_state(self, value: Union[int, DDPreGenDialysateStates]): + if isinstance(value, int): + self._execution_state = DDPreGenDialysateStates(value) + else: + self._execution_state = value + + + @property + def pre_gen_start(self) -> int: + """ + he Pre-Gen start value + """ + return self._start + + @pre_gen_start.setter + def pre_gen_start(self, value: int): + self._start = value + + + @property + def pre_gen_dial_rate(self) -> float: + """ + The Pre-Gen dialysate rate + """ + return self._dial_rate + + @pre_gen_dial_rate.setter + def pre_gen_dial_rate(self, value: float): + self._dial_rate = value + + + @property + def pre_gen_dial_temp(self) -> float: + """ + The Pre-Gen dialysate temperature + """ + return self._dial_temp + + @pre_gen_dial_temp.setter + def pre_gen_dial_temp(self, value: float): + self._dial_temp = value + + + @property + def pre_gen_acid(self) -> int: + """ + he Pre-Gen acid concentrate option index + """ + return self._acid + + @pre_gen_acid.setter + def pre_gen_acid(self, value: int): + self._acid = value + + + @property + def pre_gen_bicarb(self) -> int: + """ + he Pre-Gen bicarb concentrate option index + """ + return self._bicarb + + @pre_gen_bicarb.setter + def pre_gen_bicarb(self, value: int): + self._bicarb = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_pre_gen_dialysate_state_data", "execution_state", "pre_gen_state_timestamp"]) def _handler_pre_gen_state_sync(self, message, timestamp=0.0): """ @@ -72,11 +153,9 @@ @return: None """ msg_list =[] - msg_list.append(('self.execution_state', DataTypes.U32)) + msg_list.append((type(self).execution_state, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) - + self.process_into_vars(decoder_list = msg_list, message = message) self.pre_gen_state_timestamp = timestamp @@ -92,17 +171,18 @@ @return: None """ msg_list =[] - msg_list.append(('self.pre_gen_start', DataTypes.U32)) - msg_list.append(('self.pre_gen_dial_rate', DataTypes.F32)) - msg_list.append(('self.pre_gen_dial_temp', DataTypes.F32)) - msg_list.append(('self.pre_gen_acid', DataTypes.U32)) - msg_list.append(('self.pre_gen_bicarb', DataTypes.U32)) + msg_list.append((type(self).pre_gen_start, DataTypes.U32)) + msg_list.append((type(self).pre_gen_dial_rate, DataTypes.F32)) + msg_list.append((type(self).pre_gen_dial_temp, DataTypes.F32)) + msg_list.append((type(self).pre_gen_acid, DataTypes.U32)) + msg_list.append((type(self).pre_gen_bicarb, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.pre_gen_request_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_pre_gen_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the broadcast time interval override for pre gen dialysate data. Index: leahi_dialin/dd/modules/pressure_sensors.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -48,8 +48,6 @@ function = self._handler_pressures_sync) self.dd_pressures_timestamp = 0 #: The timestamp of the latest message - - #: The Pressure Sensors data in dictionary format self.dd_pressures = { dd_enum_repository.DDPressureSensorNames.D9_PRES.name: 0.0, dd_enum_repository.DDPressureSensorNames.D66_PRES.name: 0.0, @@ -60,6 +58,22 @@ } + +# ============================================================ Properties ============================================================ + @property + def dd_pressures(self) -> dict: + """ + The Pressure Sensors data + """ + return self._pressures + + @dd_pressures.setter + def dd_pressures(self, value): + self._pressures = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_pressures_data", "dd_pressures", "dd_pressures_timestamp"]) def _handler_pressures_sync(self, message,timestamp=0.0): """ @@ -70,19 +84,19 @@ @return: none """ sensor_list =[] - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D9_PRES.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D66_PRES.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D51_PRES.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D18_PRES.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D41_PRES.name, DataTypes.F32)) - sensor_list.append((dd_enum_repository.DDPressureSensorNames.D87_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D9_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D66_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D51_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D18_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D41_PRES.name, DataTypes.F32)) + sensor_list.append((self.dd_pressures, dd_enum_repository.DDPressureSensorNames.D87_PRES.name, DataTypes.F32)) - self.process_into_vars(dict_to_update = self.dd_pressures, - decoder_list = sensor_list, - message = message) + self.process_into_vars(decoder_list = sensor_list, message = message) self.dd_pressures_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_pressure_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the pressure broadcast interval override command. Index: leahi_dialin/dd/modules/rinse_pump.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/rinse_pump.py (.../rinse_pump.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/rinse_pump.py (.../rinse_pump.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -19,6 +19,7 @@ # Project imports from leahi_dialin.common.constants import NO_RESET +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override @@ -50,11 +51,50 @@ function = self._handler_rinse_pump_sync) self.dd_rinse_pump_timestamp = 0 #: The timestamp of the latest message - self.d79_state = 0 #: The State of the D79 Pump - self.d79_pump_pwm = 0.0 #: The PWM of the D79 Pump - self.d79_pump_rpm = 0 #: The RPM of the D79 Pump + self.d79_state = 0 + self.d79_pump_pwm = 0.0 + self.d79_pump_rpm = 0 + +# ============================================================ Properties ============================================================ + @property + def d79_state(self) -> int: + """ + The D79 Rinse Pump's State + """ + return self._state + + @d79_state.setter + def d79_state(self, value: int): + self._state = value + + @property + def d79_pump_pwm(self) -> float: + """ + The D79 Rinse Pump's PWM + """ + return self._pwm + + @d79_pump_pwm.setter + def d79_pump_pwm(self, value: float): + self._pwm = value + + + @property + def d79_pump_rpm(self) -> int: + """ + The D79 Rinse Pump's RPM + """ + return self._rpm + + @d79_pump_rpm.setter + def d79_pump_rpm(self, value: int): + self._rpm = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_rinse_pump_data", "d79_state", "d79_pump_pwm", "d79_pump_rpm", "dd_rinse_pump_timestamp"]) @@ -66,15 +106,16 @@ @return: None """ msg_list =[] - msg_list.append(('self.d79_state', DataTypes.U32)) - msg_list.append(('self.d79_pump_pwm', DataTypes.F32)) - msg_list.append(('self.d79_pump_rpm', DataTypes.U32)) + msg_list.append((type(self).d79_state, DataTypes.U32)) + msg_list.append((type(self).d79_pump_pwm, DataTypes.F32)) + msg_list.append((type(self).d79_pump_rpm, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_rinse_pump_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_rinse_pump_data_publish_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the rinse pump data publish interval override command Index: leahi_dialin/dd/modules/spent_chamber_fill.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/spent_chamber_fill.py (.../spent_chamber_fill.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/spent_chamber_fill.py (.../spent_chamber_fill.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -49,11 +49,51 @@ function = self._handler_spent_chamber_fill_sync) self.dd_spent_chamber_timestamp = 0 #: The timestamp of the latest message - self.execution_state = 0 #: The execution state - self.switching_period = 0 #: The switching period - self.total_spent_chamber_fill_counter = 0 #: The total spent chamber fill counter + self.execution_state = 0 + self.switching_period = 0 + self.total_spent_chamber_fill_counter = 0 + +# ============================================================ Properties ============================================================ + @property + def execution_state(self) -> int: + """ + The execution state + """ + return self._execution_state + + @execution_state.setter + def execution_state(self, value: int): + self._execution_state = value + + + @property + def switching_period(self) -> int: + """ + The switching period + """ + return self._switching_period + + @switching_period.setter + def switching_period(self, value: int): + self._switching_period = value + + + @property + def total_spent_chamber_fill_counter(self) -> int: + """ + The total spent chamber fill counter + """ + return self._total_spent_chamber_fill_counter + + @total_spent_chamber_fill_counter.setter + def total_spent_chamber_fill_counter(self, value: int): + self._total_spent_chamber_fill_counter = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_spent_chamber_fill_data", "execution_state", "switching_period", "total_spent_chamber_fill_counter", @@ -66,15 +106,16 @@ @return: None """ msg_list =[] - msg_list.append(('self.execution_state', DataTypes.U32)) - msg_list.append(('self.switching_period', DataTypes.U32)) - msg_list.append(('self.total_spent_chamber_fill_counter', DataTypes.U32)) + msg_list.append((type(self).execution_state, DataTypes.U32)) + msg_list.append((type(self).switching_period, DataTypes.U32)) + msg_list.append((type(self).total_spent_chamber_fill_counter, DataTypes.U32)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_spent_chamber_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_spent_chamber_fill_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the spent chamber fill data broadcast interval override command Index: leahi_dialin/dd/modules/substitution_pump.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/substitution_pump.py (.../substitution_pump.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/substitution_pump.py (.../substitution_pump.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -15,7 +15,6 @@ ############################################################################ # Module imports -import struct from logging import Logger # Project imports @@ -51,7 +50,7 @@ message_id = MsgIds.MSG_ID_DD_SUBSTITUTION_PUMP_DATA.value, function = self._handler_substitution_pump_sync) - #: The substitution pump data in dictionary format + self.dd_substitution_pump_timestamp = 0 #: The timestamp of the latest message self.dd_substitution_pumps = { dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name: { dd_enum_repository.DDSubstitutionPumpAttributes.TARGET_SPEED.name: 0.0, @@ -60,8 +59,24 @@ dd_enum_repository.DDSubstitutionPumpAttributes.MEASURED_SPEED.name: 0.0, } } - self.dd_substitution_pump_timestamp = 0 #: The timestamp of the latest message + + +# ============================================================ Properties ============================================================ + @property + def dd_substitution_pumps(self) -> dict: + """ + The Substitution Pumps data + """ + return self._substitution_pumps + + @dd_substitution_pumps.setter + def dd_substitution_pumps(self, value): + self._substitution_pumps = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_rinse_pump_data", "dd_substitution_pumps", "dd_substitution_pump_timestamp"]) @@ -72,18 +87,18 @@ @param message: published substitution pump data message @return: None """ - substitution_pump_list = [] - substitution_pump_list.append((dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.TARGET_SPEED.name, DataTypes.F32)) - substitution_pump_list.append((dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) - substitution_pump_list.append((dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.STATE.name, DataTypes.U32)) - substitution_pump_list.append((dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) + msg_list = [] + msg_list.append((self.dd_substitution_pumps, dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.TARGET_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_substitution_pumps, dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.CURRENT_SPEED.name, DataTypes.F32)) + msg_list.append((self.dd_substitution_pumps, dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.STATE.name, DataTypes.U32)) + msg_list.append((self.dd_substitution_pumps, dd_enum_repository.DDSubstitutionPumpNames.D92_PUMP.name, dd_enum_repository.DDSubstitutionPumpAttributes.MEASURED_SPEED.name, DataTypes.F32)) - self.process_into_vars(dict_to_update = self.dd_substitution_pumps, - decoder_list = substitution_pump_list, - message = message) - + self.process_into_vars(decoder_list = msg_list, message = message) self.dd_substitution_pump_timestamp = timestamp + + +# ============================================================ Overrides and Requests ============================================================ def cmd_substitution_pump_data_publish_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the substitution pump data publish interval override command @@ -127,5 +142,3 @@ override_text=str(spd), logger=self.logger, can_interface=self.can_interface) - - Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -44,8 +44,6 @@ function = self._handler_temperature_sensors_sync) self.dd_temperatures_timestamp = 0.0 #: The timestamp of the latest message - - #: The Temperature Sensors data in dictionary format self.dd_temperatures = { dd_enum_repository.DDTemperatureSensorNames.D1_TEMP.name: 0.0, dd_enum_repository.DDTemperatureSensorNames.D78_TEMP.name: 0.0, @@ -128,6 +126,8 @@ self.dd_temperatures_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_temperatures_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends broadcast time interval. Index: leahi_dialin/dd/proxies/td_proxy.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -64,7 +64,7 @@ @property def dialysate_delivery_request(self) -> dict: """ - The current Operation Mode + The Dialysate Delivery Request data """ return self._dialysate_delivery_request Index: leahi_dialin/fp/filtration_purification.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -143,7 +143,7 @@ @property def fp_operation_mode(self) -> int: """ - The current Operation Mode + The Operation Mode """ return self._op_mode @@ -155,7 +155,7 @@ @property def fp_operation_sub_mode(self) -> int: """ - The current Operation Sub Mode + The Operation Sub Mode """ return self._sub_mode Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 -reca9e15bc984af2b7f59eb38f3836ca354ee1251 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision eca9e15bc984af2b7f59eb38f3836ca354ee1251) @@ -152,7 +152,7 @@ @property def td_operation_mode(self) -> int: """ - The current Operation Mode + The Operation Mode """ return self._op_mode @@ -164,7 +164,7 @@ @property def td_operation_sub_mode(self) -> int: """ - The current Operation Sub Mode + The Operation Sub Mode """ return self._sub_mode