Index: leahi_dialin/common/__init__.py =================================================================== diff -u -r79d11a95ac4fd3d0e379e0bf0e740d7ea7e9c88f -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/common/__init__.py (.../__init__.py) (revision 79d11a95ac4fd3d0e379e0bf0e740d7ea7e9c88f) +++ leahi_dialin/common/__init__.py (.../__init__.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -21,7 +21,7 @@ else: from .alarm_defs import * from .alarm_priorities import * - from .td_defs import td_enum_repository - from .dd_defs import dd_enum_repository - from .fp_defs import fp_enum_repository + from .td_defs_proxy import td_enum_repository + from .dd_defs_proxy import dd_enum_repository + from .fp_defs_proxy import fp_enum_repository from .ui_defs import * Index: leahi_dialin/common/dd_defs.py =================================================================== diff -u -reb312be9dab95907142103419bc1804713789e8d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision eb312be9dab95907142103419bc1804713789e8d) +++ leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -8,7 +8,7 @@ # @file dd_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 28-Jan-2026 +# @date (last) 25-Feb-2026 # @author (original) Peter Lucia # @date (original) 22-Jun-2021 # @@ -825,51 +825,3 @@ 'VALVE_STATE_OPEN': ['open'], 'NUM_OF_VALVE_STATES': [], } - - - -# ================================================== Creates a singleton ================================================== -class DD_Defs(): - - DDOpModes = DDOpModes - DDFaultStates = DDFaultStates - DDFaultNVDataStates = DDFaultNVDataStates - DDServiceStates = DDServiceStates - DDInitStates = DDInitStates - DDStandbyStates = DDStandbyStates - DDPreGenDialysateStates = DDPreGenDialysateStates - DDGenDialysateModeStates = DDGenDialysateModeStates - DDPostGenDialysateStates = DDPostGenDialysateStates - DDHeatDisinfectStates = DDHeatDisinfectStates - DDHeaterCoolingStates = DDHeaterCoolingStates - DDROPermeateStates = DDROPermeateStates - DDNotLegalStates = DDNotLegalStates - - DDEventList = DDEventList - DDEventDataTypes = DDEventDataTypes - - DDConcentratePumpNames = DDConcentratePumpNames - DDConductivitySensorNames = DDConductivitySensorNames - DDDialysatePumpNames = DDDialysatePumpNames - DDHeaterNames = DDHeaterNames - DDLevelSensorNames = DDLevelSensorNames - DDPistonPumpNames = DDPistonPumpNames - DDPressureSensorNames = DDPressureSensorNames - DDTemperatureSensorNames = DDTemperatureSensorNames - DDValveNames = DDValveNames - DDMonitoredVoltages = DDMonitoredVoltages - - DDBalancingChamberStates = DDBalancingChamberStates - DDBalancingChamberSwitchStates = DDBalancingChamberSwitchStates - DDBloodLeakStates = DDBloodLeakStates - DDConcentratePumpAttributes = DDConcentratePumpAttributes - DDConcentratePumpStates = DDConcentratePumpStates - DDDialysatePumpAttributes = DDDialysatePumpAttributes - DDDialysatePumpsStates =DDDialysatePumpsStates - DDHeaterStartStop = DDHeaterStartStop - DDHeaterAttributes = DDHeaterAttributes - DDHeaterExecState = DDHeaterExecState - DDPistonPumpAttributes = DDPistonPumpAttributes - DDValveStates = DDValveStates - -dd_enum_repository = DD_Defs() Index: leahi_dialin/common/dd_defs_proxy.py =================================================================== diff -u --- leahi_dialin/common/dd_defs_proxy.py (revision 0) +++ leahi_dialin/common/dd_defs_proxy.py (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -0,0 +1,63 @@ +########################################################################### +# +# Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file dd_defs_proxy.py +# +# @author (last) Zoltan Miskolci +# @date (last) 25-Feb-2026 +# @author (original) Zoltan Miskolci +# @date (original) 25-Feb-2026 +# +############################################################################ + +from .dd_defs import * + + +class DD_Defs(): + + DDOpModes = DDOpModes + DDFaultStates = DDFaultStates + DDFaultNVDataStates = DDFaultNVDataStates + DDServiceStates = DDServiceStates + DDInitStates = DDInitStates + DDStandbyStates = DDStandbyStates + DDPreGenDialysateStates = DDPreGenDialysateStates + DDGenDialysateModeStates = DDGenDialysateModeStates + DDPostGenDialysateStates = DDPostGenDialysateStates + DDHeatDisinfectStates = DDHeatDisinfectStates + DDHeaterCoolingStates = DDHeaterCoolingStates + DDROPermeateStates = DDROPermeateStates + DDNotLegalStates = DDNotLegalStates + + DDEventList = DDEventList + DDEventDataTypes = DDEventDataTypes + + DDConcentratePumpNames = DDConcentratePumpNames + DDConductivitySensorNames = DDConductivitySensorNames + DDDialysatePumpNames = DDDialysatePumpNames + DDHeaterNames = DDHeaterNames + DDLevelSensorNames = DDLevelSensorNames + DDPistonPumpNames = DDPistonPumpNames + DDPressureSensorNames = DDPressureSensorNames + DDTemperatureSensorNames = DDTemperatureSensorNames + DDValveNames = DDValveNames + DDMonitoredVoltages = DDMonitoredVoltages + + DDBalancingChamberStates = DDBalancingChamberStates + DDBalancingChamberSwitchStates = DDBalancingChamberSwitchStates + DDBloodLeakStates = DDBloodLeakStates + DDConcentratePumpAttributes = DDConcentratePumpAttributes + DDConcentratePumpStates = DDConcentratePumpStates + DDDialysatePumpAttributes = DDDialysatePumpAttributes + DDDialysatePumpsStates =DDDialysatePumpsStates + DDHeaterStartStop = DDHeaterStartStop + DDHeaterAttributes = DDHeaterAttributes + DDHeaterExecState = DDHeaterExecState + DDPistonPumpAttributes = DDPistonPumpAttributes + DDValveStates = DDValveStates + +dd_enum_repository = DD_Defs() Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -re1a3a4c8d35a8b07750c13799c2d2229e2914494 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision e1a3a4c8d35a8b07750c13799c2d2229e2914494) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -8,7 +8,7 @@ # @file fp_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 29-Jan-2026 +# @date (last) 25-Feb-2026 # @author (original) Peter Lucia # @date (original) 22-Jun-2021 # @@ -498,39 +498,3 @@ 'VALVE_STATE_OPEN': ['open'], 'NUM_OF_VALVE_STATES': [], } - - - -# ================================================== Creates a singleton ================================================== -class FP_Defs(): - - FPOpModes = FPOpModes - FPFaultStates = FPFaultStates - FPServiceStates = FPServiceStates - FPPostStates = FPPostStates - FPStandbyStates = FPStandbyStates - FPPreGenPermeateStates = FPPreGenPermeateStates - FPPreGenPDefStates = FPPreGenPDefStates - FPGenPermeateStates = FPGenPermeateStates - FPGenPermeateDefStates = FPGenPermeateDefStates - FPNotLegalStates = FPNotLegalStates - - FPEventList= FPEventList - FPEventDataTypes= FPEventDataTypes - - FPBoostPumpNames = FPBoostPumpNames - FPConductivitySensorNames = FPConductivitySensorNames - FPRORejectionRatioNames = FPRORejectionRatioNames - FPFlowSensorNames = FPFlowSensorNames - FPFloaterLevelSensorNames = FPFloaterLevelSensorNames - FPPressureSensorNames = FPPressureSensorNames - FPROPumpNames = FPROPumpNames - FPTemperatureSensorNames = FPTemperatureSensorNames - FPValveNames = FPValveNames - FPAllPumpNames = FPAllPumpNames - - FPFloaterLevels = FPFloaterLevels - FPPumpAttributes = FPPumpAttributes - FPValveStates = FPValveStates - -fp_enum_repository = FP_Defs() Index: leahi_dialin/common/fp_defs_proxy.py =================================================================== diff -u --- leahi_dialin/common/fp_defs_proxy.py (revision 0) +++ leahi_dialin/common/fp_defs_proxy.py (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -0,0 +1,51 @@ +########################################################################### +# +# Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file fp_defs_proxy.py +# +# @author (last) Zoltan Miskolci +# @date (last) 25-Feb-2026 +# @author (original) Zoltan Miskolci +# @date (original) 25-Feb-2026 +# +############################################################################ + +from .fp_defs import * + + +class FP_Defs(): + + FPOpModes = FPOpModes + FPFaultStates = FPFaultStates + FPServiceStates = FPServiceStates + FPPostStates = FPPostStates + FPStandbyStates = FPStandbyStates + FPPreGenPermeateStates = FPPreGenPermeateStates + FPPreGenPDefStates = FPPreGenPDefStates + FPGenPermeateStates = FPGenPermeateStates + FPGenPermeateDefStates = FPGenPermeateDefStates + FPNotLegalStates = FPNotLegalStates + + FPEventList= FPEventList + FPEventDataTypes= FPEventDataTypes + + FPBoostPumpNames = FPBoostPumpNames + FPConductivitySensorNames = FPConductivitySensorNames + FPRORejectionRatioNames = FPRORejectionRatioNames + FPFlowSensorNames = FPFlowSensorNames + FPFloaterLevelSensorNames = FPFloaterLevelSensorNames + FPPressureSensorNames = FPPressureSensorNames + FPROPumpNames = FPROPumpNames + FPTemperatureSensorNames = FPTemperatureSensorNames + FPValveNames = FPValveNames + FPAllPumpNames = FPAllPumpNames + + FPFloaterLevels = FPFloaterLevels + FPPumpAttributes = FPPumpAttributes + FPValveStates = FPValveStates + +fp_enum_repository = FP_Defs() Index: leahi_dialin/common/td_defs.py =================================================================== diff -u -r893966363336e5425afd5ad88a6e2d6f5b0ed916 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/common/td_defs.py (.../td_defs.py) (revision 893966363336e5425afd5ad88a6e2d6f5b0ed916) +++ leahi_dialin/common/td_defs.py (.../td_defs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -8,7 +8,7 @@ # @file td_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 29-Jan-2026 +# @date (last) 25-Feb-2026 # @author (original) Peter Lucia # @date (original) 04-Dec-2020 # @@ -754,49 +754,3 @@ 'VALVE_STATE_IDLE': ['idle'], 'VALVE_STATE_IN_TRANSITION': [], } - - - -# ================================================== Creates a singleton ================================================== -class TD_Defs(): - - TDOpModes = TDOpModes - TDFaultStates = TDFaultStates - TDServiceStates = TDServiceStates - TDInitStates = TDInitStates - TDStandbyStates = TDStandbyStates - TDTreatmentParamStates = TDTreatmentParamStates - TDPreTreatmentModesStates = TDPreTreatmentModesStates - TDTreatmentStates = TDTreatmentStates - TDPostTreatmentStates = TDPostTreatmentStates - TDNotLegalStates = TDNotLegalStates - TDPreTreatmentPrimeStates = TDPreTreatmentPrimeStates - TDDialysisStates = TDDialysisStates - TDTreatmentParameters = TDTreatmentParameters - - TDEventList = TDEventList - TDEventDataTypes = TDEventDataTypes - - TDAirPumpNames = TDAirPumpNames - TDAirTrapValveNames = TDAirTrapValveNames - TDAirTrapLevelSensorNames = TDAirTrapLevelSensorNames - TDAirBubbleDetectorNames = TDAirBubbleDetectorNames - TDEjectorNames = TDEjectorNames - TDPressureSensorNames = TDPressureSensorNames - TDTemperatureSensorNames = TDTemperatureSensorNames - TDSwitchNames = TDSwitchNames - TDValveNames = TDValveNames - TDMonitoredVoltages = TDMonitoredVoltages - - TDAirPumpAttributes = TDAirPumpAttributes - TDAirTrapLevelSensorAttributes = TDAirTrapLevelSensorAttributes - TDAirTrapState = TDAirTrapState - TDBloodFlowMotorAttributes = TDBloodFlowMotorAttributes - TDAirBubbleDetectorAttributes = TDAirBubbleDetectorAttributes - TDEjectorAttributes = TDEjectorAttributes - TDPressureSensorAttributes = TDPressureSensorAttributes - TDSwitchStatus = TDSwitchStatus - TDValvePositions = TDValvePositions - TDValveStates = TDValveStates - -td_enum_repository = TD_Defs() Index: leahi_dialin/common/td_defs_proxy.py =================================================================== diff -u --- leahi_dialin/common/td_defs_proxy.py (revision 0) +++ leahi_dialin/common/td_defs_proxy.py (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -0,0 +1,61 @@ +########################################################################### +# +# Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file td_defs_proxy.py +# +# @author (last) Zoltan Miskolci +# @date (last) 25-Feb-2026 +# @author (original) Zoltan Miskolci +# @date (original) 25-Feb-2026 +# +############################################################################ + +from .td_defs import * + + +class TD_Defs(): + + TDOpModes = TDOpModes + TDFaultStates = TDFaultStates + TDServiceStates = TDServiceStates + TDInitStates = TDInitStates + TDStandbyStates = TDStandbyStates + TDTreatmentParamStates = TDTreatmentParamStates + TDPreTreatmentModesStates = TDPreTreatmentModesStates + TDTreatmentStates = TDTreatmentStates + TDPostTreatmentStates = TDPostTreatmentStates + TDNotLegalStates = TDNotLegalStates + TDPreTreatmentPrimeStates = TDPreTreatmentPrimeStates + TDDialysisStates = TDDialysisStates + TDTreatmentParameters = TDTreatmentParameters + + TDEventList = TDEventList + TDEventDataTypes = TDEventDataTypes + + TDAirPumpNames = TDAirPumpNames + TDAirTrapValveNames = TDAirTrapValveNames + TDAirTrapLevelSensorNames = TDAirTrapLevelSensorNames + TDAirBubbleDetectorNames = TDAirBubbleDetectorNames + TDEjectorNames = TDEjectorNames + TDPressureSensorNames = TDPressureSensorNames + TDTemperatureSensorNames = TDTemperatureSensorNames + TDSwitchNames = TDSwitchNames + TDValveNames = TDValveNames + TDMonitoredVoltages = TDMonitoredVoltages + + TDAirPumpAttributes = TDAirPumpAttributes + TDAirTrapLevelSensorAttributes = TDAirTrapLevelSensorAttributes + TDAirTrapState = TDAirTrapState + TDBloodFlowMotorAttributes = TDBloodFlowMotorAttributes + TDAirBubbleDetectorAttributes = TDAirBubbleDetectorAttributes + TDEjectorAttributes = TDEjectorAttributes + TDPressureSensorAttributes = TDPressureSensorAttributes + TDSwitchStatus = TDSwitchStatus + TDValvePositions = TDValvePositions + TDValveStates = TDValveStates + +td_enum_repository = TD_Defs() Index: leahi_dialin/common/test_config_defs.py =================================================================== diff -u -r068eb7a6f52750ec3c1a862f515116075f5804ce -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision 068eb7a6f52750ec3c1a862f515116075f5804ce) +++ leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -32,8 +32,7 @@ TEST_CONFIG_DD_ENABLE_DOSING_OPEN_LOOP_CONTROL = 9 # (DD) Test configuration to switch to open loop control for concentrate dosing TEST_CONFIG_DD_DISABLE_UF_PUMP_SPEED_COMP = 10 # (DD) Test configuration to disable Ultrafiltration speed compensation TEST_CONFIG_DD_RUN_SOLO = 11 # (DD) Test configuration to run DD alone without the other subsystems - TEST_CONFIG_DD_DRY_BICART_TEST = 12 # (DD) Test configuration to test drybicart initial fill from pre-gen - NUM_OF_TEST_CONFIGS = 13 # Number of Test Configs + NUM_OF_TEST_CONFIGS = 12 # Number of Test Configs DDFPTestConfigOptions._str_list = {} @unique Index: leahi_dialin/dd/dialysate_delivery.py =================================================================== diff -u -r92a9aeaa33ff2827f569ae9a4087b2feb01669e6 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 92a9aeaa33ff2827f569ae9a4087b2feb01669e6) +++ leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -42,7 +42,7 @@ from .proxies.td_proxy import TDProxy from ..common.constants import NO_RESET -from ..common.dd_defs import dd_enum_repository +from ..common import dd_enum_repository from ..common.msg_defs import MsgIds, MsgFieldPositions, MsgFieldPositionsFWVersions from ..common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels @@ -105,46 +105,56 @@ self.cmd_log_in_to_dd() # create properties - self.dd_op_mode_timestamp = 0.0 - self.dd_debug_events_timestamp = 0.0 - self.dd_version_response_timestamp = 0.0 - self.dd_operation_mode = dd_enum_repository.DDOpModes.MODE_INIT.value - self.dd_operation_sub_mode = 0 - self.dd_logged_in = False + self.dd_op_mode_timestamp = 0.0 #: The timestamp of the latest operation mode message + self.dd_debug_events_timestamp = 0.0 #: The timestamp of the latest events message + self.dd_version_response_timestamp = 0.0 #: The timestamp of the latest DD version info message + self.dd_operation_mode = dd_enum_repository.DDOpModes.MODE_INIT.value #: The Operation Mode's value + self.dd_operation_sub_mode = 0 #: The Operation Sub-Mode's value + self.dd_logged_in = False #: The value showing if the user is logged in or not self.dd_set_logged_in_status(False) - self.dd_version = None - self.dd_fpga_version = None - self.dd_debug_events = [''] * self._DD_DEBUG_EVENT_LIST_COUNT - self.dd_debug_event_index = 0 - self.dd_last_debug_event = '' + self.dd_version = None #: The DD's version value + self.dd_fpga_version = None #: The DD's FPGA version value + self.dd_debug_events = [''] * self._DD_DEBUG_EVENT_LIST_COUNT #: The Debug Event's list + self.dd_debug_event_index = 0 #: The index of the last Event + self.dd_last_debug_event = '' #: The name of the last Event # Create command groups - self.alarms = DDAlarms(self.can_interface, self.logger) - self.balancing_chamber = DDBalancingChamber(self.can_interface, self.logger) - self.blood_leak = DDBloodLeak(self.can_interface, self.logger) - self.concentrate_pumps = DDConcentratePumps(self.can_interface, self.logger) - self.conductivity_sensors = DDConductivitySensors(self.can_interface, self.logger) - self.dialysate_pumps = DDDialysatePumps(self.can_interface, self.logger) - self.events = DDEvents(self.can_interface, self.logger) - self.gen_dialysate = DDGenDialysate(self.can_interface, self.logger) - self.heaters = DDHeaters(self.can_interface, self.logger) - self.levels = DDLevels(self.can_interface, self.logger) - self.post_gen_dialysate = DDPostGenDialysate(self.can_interface, self.logger) - self.pressure_sensors = DDPressureSensors(self.can_interface, self.logger) - self.pre_gen_dialysate = DDPreGenDialysate(self.can_interface, self.logger) - self.rinse_pump = DDRinsePump(self.can_interface, self.logger) - self.spent_chamber_fill = DDSpentChamberFill(self.can_interface, self.logger) - self.drybicart = DDDryBicart(self.can_interface, self.logger) - self.temperature_sensors = DDTemperatureSensors(self.can_interface, self.logger) - self.test_configs = DDTestConfig(self.can_interface, self.logger) - self.ultrafiltration = DDUltrafiltration(self.can_interface, self.logger) - self.valves = DDValves(self.can_interface, self.logger) - self.voltages = DDVoltages(self.can_interface, self.logger) + self.alarms = DDAlarms(self.can_interface, self.logger) #: The Alarms module + self.balancing_chamber = DDBalancingChamber(self.can_interface, self.logger) #: The Balancing Chamber module + self.blood_leak = DDBloodLeak(self.can_interface, self.logger) #: The Blood Leak module + self.concentrate_pumps = DDConcentratePumps(self.can_interface, self.logger) #: The Concentrat Pumps module + self.conductivity_sensors = DDConductivitySensors(self.can_interface, self.logger) #: The Conductivity Sensors module + self.dialysate_pumps = DDDialysatePumps(self.can_interface, self.logger) #: The Dialysate Pumps module + self.events = DDEvents(self.can_interface, self.logger) #: The Events module + self.gen_dialysate = DDGenDialysate(self.can_interface, self.logger) #: The Generate Dialysate module + self.heaters = DDHeaters(self.can_interface, self.logger) #: The Heaters module + self.levels = DDLevels(self.can_interface, self.logger) #: The Levels module + self.post_gen_dialysate = DDPostGenDialysate(self.can_interface, self.logger) #: The Post Generate Dialysate module + self.pressure_sensors = DDPressureSensors(self.can_interface, self.logger) #: The Pressure Sensors module + self.pre_gen_dialysate = DDPreGenDialysate(self.can_interface, self.logger) #: The Pre Generate Dialysate module + self.rinse_pump = DDRinsePump(self.can_interface, self.logger) #: The Rinse Pump module + self.spent_chamber_fill = DDSpentChamberFill(self.can_interface, self.logger) #: The Spent Chamber module + self.drybicart = DDDryBicart(self.can_interface, self.logger) #: The Dry Bicarb module + self.temperature_sensors = DDTemperatureSensors(self.can_interface, self.logger) #: The Temperature Sensors module + self.test_configs = DDTestConfig(self.can_interface, self.logger) #: The Test Configs module + self.ultrafiltration = DDUltrafiltration(self.can_interface, self.logger) #: The Ultrafiltration module + self.valves = DDValves(self.can_interface, self.logger) #: The Valves module + self.voltages = DDVoltages(self.can_interface, self.logger) #: The Voltages module - self.ro_proxy = ROProxy(self.can_interface, self.logger) - self.td_proxy = TDProxy(self.can_interface, self.logger) + self.ro_proxy = ROProxy(self.can_interface, self.logger) #: The RO Proxy module (imitates commands sent by DD) + self.td_proxy = TDProxy(self.can_interface, self.logger) #: The TD Proxy module (imitates commands sent by UI) + def dd_set_logged_in_status(self, logged_in: bool = False): + """ + Callback for dd logged in status change. + + @param logged_in: Logged in status for DD + @return: None + """ + self.dd_logged_in = logged_in + + @publish(["msg_id_dd_debug_event", "dd_debug_events_timestamp","dd_debug_events"]) def _handler_dd_debug_event_sync(self, message, timestamp = 0.0): payload = message['message'] @@ -167,16 +177,6 @@ self.dd_debug_event_index = 0 - @publish(["dd_logged_in"]) - def dd_set_logged_in_status(self, logged_in: bool = False): - """ - Callback for dd logged in status change. - @param logged_in boolean logged in status for DD - @return: none - """ - self.dd_logged_in = logged_in - - @publish(["msg_id_dd_op_mode_data", "dd_op_mode_timestamp","dd_operation_mode", "dd_operation_sub_mode"]) def _handler_dd_op_mode_sync(self, message, timestamp = 0.0): """ Index: leahi_dialin/dd/modules/alarms.py =================================================================== diff -u -r5bfe41cf9e45edebc1682c1d7af27b08ee0eb5ff -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/alarms.py (.../alarms.py) (revision 5bfe41cf9e45edebc1682c1d7af27b08ee0eb5ff) +++ leahi_dialin/dd/modules/alarms.py (.../alarms.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from leahi_dialin.common.alarm_defs import AlarmList from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -48,31 +48,26 @@ self.msg_id_dd_alarm_triggered = MsgIds.MSG_ID_ALARM_TRIGGERED.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_alarm_triggered, self._handler_alarm_triggered) - self.alarm_safety_shutdown_status = 0.0 + self.alarm_safety_shutdown_status = 0.0 #: The Alarm's Safety Shutdown status value - self.dd_alarm_info_timestamp = 0.0 - self.dd_alarm_triggered_timestamp = 0.0 - self.dd_alarm_cleared_timestamp = 0.0 - self.dd_alarm_condition_cleared_timestamp = 0.0 - # alarm states based on received TD alarm activation and alarm clear messages - self.alarm_states = [False] * 500 - # alarm condition states based on received TD alarm activation and clear condition messages - self.alarm_conditions = [False] * 500 - # alarm priorities based on received TD alarm activation messages - self.alarm_priorities = [0] * 500 - # alarm ranks based on received TD alarm activation messages - self.alarm_ranks = [0] * 500 - # alarm clear top only flags based on received TD alarm activation messages - self.alarm_clear_top_only_flags = [False] * 500 - # alarm debug data on alarm triggered message - self.alarm_data = [0, 0] * 500 + self.dd_alarm_info_timestamp = 0.0 #: The timestamp of the last Alarm Information message + self.dd_alarm_triggered_timestamp = 0.0 #: The timestamp of the last Alarm Triggered message + self.dd_alarm_cleared_timestamp = 0.0 #: The timestamp of the last Alarm Cleared message + self.dd_alarm_condition_cleared_timestamp = 0.0 #: The timestamp of the last Alarm Condition Cleared message - self.last_alarm_triggered = 0 - self.last_alarm_data_1 = 0.0 - self.last_alarm_data_2 = 0.0 + self.alarm_states = [False] * 500 #: The States of all Alarms data in list format + self.alarm_conditions = [False] * 500 #: The Conditions of all Alarms data in list format + self.alarm_priorities = [0] * 500 #: The Priorities of all Alarms data in list format + self.alarm_ranks = [0] * 500 #: The Ranks of all Alarms data in list format + self.alarm_clear_top_only_flags = [False] * 500 #: The Clear Top only flags of all Alarms data in list format + self.alarm_data = [0, 0] * 500 #: The all Alarms data in list format + self.last_alarm_triggered = 0 #: The timestamp when did the last alarm triggered + self.last_alarm_data_1 = 0.0 #: The last Alarm's data part 1 + self.last_alarm_data_2 = 0.0 #: The last Alarm's data part 2 + # alarm information - self.alarm_data_type = dict() + self.alarm_data_type = dict() #: The Alarm's Data type in dict format # Loop through the list of the event data type enum and update the dictionary for data_type in dd_enum_repository.DDEventDataTypes: Index: leahi_dialin/dd/modules/balancing_chamber.py =================================================================== diff -u -rf66c019100e98b49cd94fa0a69951a1a7c952da0 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/balancing_chamber.py (.../balancing_chamber.py) (revision f66c019100e98b49cd94fa0a69951a1a7c952da0) +++ leahi_dialin/dd/modules/balancing_chamber.py (.../balancing_chamber.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,15 +46,16 @@ self.msg_id_dd_bal_chamber_data = MsgIds.MSG_ID_DD_BAL_CHAMBER_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_bal_chamber_data, self._handler_balancing_chamber_sync) - self.execution_state = 0 - self.switching_state = 0 - self.switching_frequency = 0.0 - self.switching_period = 0 - self.bal_chamber_fill_in_progress = 0 - self.current_bal_chamber_switching_counter = 0 - self.is_pressure_stabilized_during_fill = 0 - self.bal_chamber_switch_only_state = 0 - self.dd_bal_chamber_timestamp = 0 + + self.execution_state = 0 #: The Execution state + self.switching_state = 0 #: The Switching state + self.switching_frequency = 0.0 #: The Switching frequency of the balancing chamber + self.switching_period = 0 #: The Switching period in ms + self.bal_chamber_fill_in_progress = 0 #: The Balancing chamber's fill in progress + self.current_bal_chamber_switching_counter = 0 #: The Balancing Chamber's switching counter + self.is_pressure_stabilized_during_fill = 0 #: Is pressure stabilized during fill or not + self.bal_chamber_switch_only_state = 0 #: The Balancing Chamber's switch only state + self.dd_bal_chamber_timestamp = 0 #: The timestamp of the last message @publish(["msg_id_dd_bal_chamber_data", Index: leahi_dialin/dd/modules/blood_leak.py =================================================================== diff -u -r41de945f9c773e54e965e80d9e46def828beb732 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/blood_leak.py (.../blood_leak.py) (revision 41de945f9c773e54e965e80d9e46def828beb732) +++ leahi_dialin/dd/modules/blood_leak.py (.../blood_leak.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from enum import unique from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -73,19 +73,19 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_send_blood_leak_emb_mode_response, self._handler_blood_leak_emb_mode_cmd_resp) - self.dd_blood_leak_status_timestamp = 0.0 - self.dd_blood_leak_emb_mode_response_timestamp = 0.0 - self.blood_leak_status = self.NO_BLOOD_LEAK_DETECTED - self.blood_leak_state = dd_enum_repository.DDBloodLeakStates.BLOOD_LEAK_INIT_STATE.value - self.blood_leak_emb_mode_cmds = dict() - self.blood_leak_error_persistent_ctr = 0 - self.blood_leak_serial_comm_state = 0 - self.blood_leak_intensity = 0 - self.blood_leak_blood_detect = 0 - self.blood_leak_intensity_moving_average = 0.0 - self.blood_leak_in_range_drift_status = 0 - self.blood_leak_upper_range_drift_status = 0 - self.blood_leak_time_elapsed_since_last_drift_zero_ms = 0 + self.dd_blood_leak_status_timestamp = 0.0 #: The timestamp of the last Blood Leak data message + self.dd_blood_leak_emb_mode_response_timestamp = 0.0 #: The timestamp of the last Emb Mode response message + self.blood_leak_status = self.NO_BLOOD_LEAK_DETECTED #: The Blood leak status + self.blood_leak_state = dd_enum_repository.DDBloodLeakStates.BLOOD_LEAK_INIT_STATE.value #: The Blood leak state + self.blood_leak_emb_mode_cmds = dict() #: The Blood leak Emb mode commands in dictionary format + self.blood_leak_error_persistent_ctr = 0 #: The Blood leak error persistent counter + self.blood_leak_serial_comm_state = 0 #: The Blood leak serial communication state + self.blood_leak_intensity = 0 #: The Blood leak intensity + self.blood_leak_blood_detect = 0 #: The Blood leak blood detected or not + self.blood_leak_intensity_moving_average = 0.0 #: The Blood leak intensity moving average + self.blood_leak_in_range_drift_status = 0 #: The Blood leak in range drift status + self.blood_leak_upper_range_drift_status = 0 #: The Blood leak upper range drift status + self.blood_leak_time_elapsed_since_last_drift_zero_ms = 0 #: The Elapsed time since the last zeroing in ms for cmd in EmbModeCommands.__members__: # Initialize all the embedded mode commands Index: leahi_dialin/dd/modules/concentrate_pump.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/concentrate_pump.py (.../concentrate_pump.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/dd/modules/concentrate_pump.py (.../concentrate_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -46,6 +46,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_conc_pump_data, self._handler_concentrate_pumps_sync) + self.dd_concentrate_pump_timestamp = 0.0 #: The timestamp of the last message + + #: The Concentrate Pumps data in dictionary format self.dd_concentrate_pumps = { dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name: { dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name: 0, @@ -82,9 +85,7 @@ } } - self.dd_concentrate_pump_timestamp = 0.0 - @publish(["msg_id_dd_conc_pump_data", "dd_concentrate_pumps", "dd_concentrate_pump_timestamp"]) def _handler_concentrate_pumps_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/dd/modules/conductivity_sensors.py =================================================================== diff -u -r8f6f5505aa923057e686bd3fbef4af8b518e349e -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 8f6f5505aa923057e686bd3fbef4af8b518e349e) +++ leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -49,6 +49,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_conductivity_data, self._handler_conductivity_sensors_sync) + self.dd_conductivity_timestamp = 0.0 #: The timestamp of the last message + + #: The Conductivity Sensors data in dictionary format self.dd_conductivity = { dd_enum_repository.DDConductivitySensorNames.D17_COND.name: 0.0, dd_enum_repository.DDConductivitySensorNames.D27_COND.name: 0.0, @@ -57,9 +60,7 @@ dd_enum_repository.DDConductivitySensorNames.D74_COND.name: 0.0 } - self.dd_conductivity_timestamp = 0.0 - @publish(["msg_id_dd_conductivity_data", "dd_conductivity", "dd_conductivity_timestamp"]) def _handler_conductivity_sensors_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/dd/modules/dd_test_configs.py =================================================================== diff -u -r914620537399ff9ecc4925fc56f8b8be567d184e -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/dd_test_configs.py (.../dd_test_configs.py) (revision 914620537399ff9ecc4925fc56f8b8be567d184e) +++ leahi_dialin/dd/modules/dd_test_configs.py (.../dd_test_configs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -39,15 +39,17 @@ self.can_interface = can_interface self.logger = logger - self.dd_test_configs = dict() - self.dd_test_configs_response_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.dd_to_dialin_ch_id self.msg_id_dd_send_test_config = MsgIds.MSG_ID_DD_SEND_TEST_CONFIGURATION.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_send_test_config, self._handler_dd_test_config_sync) + + self.dd_test_configs_response_timestamp = 0.0 #: The timestamp of the latest message + self.dd_test_configs = dict() #: The Test Config data in dictionary format + def get_test_config_status(self, config: int): """ Returns the status of a test config Index: leahi_dialin/dd/modules/dialysate_pump.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -48,6 +48,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_dialysate_pumps_data, 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, @@ -75,9 +78,7 @@ } } - self.dd_dialysate_pump_timestamp = 0 - @publish(["msg_id_dd_dialysate_pumps_data", "dd_dialysate_pumps", "dd_dialysate_pump_timestamp",]) def _handler_dialysate_pumps_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/dd/modules/drybicart.py =================================================================== diff -u -rbe50641ca58589da9cfcd9e837578c6662311ee2 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/drybicart.py (.../drybicart.py) (revision be50641ca58589da9cfcd9e837578c6662311ee2) +++ leahi_dialin/dd/modules/drybicart.py (.../drybicart.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,35 +46,34 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_dry_bicart_data, self._handler_dry_bicart_sync) - self.dd_dry_bicart_fill_execution_state = 0 - self.dd_bicarb_chamber_fill_execution_state = 0 - self.dd_dry_bicart_drain_execution_state = 0 - self.dd_dry_bicart_fill_cycle_counter = 0 - self.dd_dry_bicart_max_fill_cycle_count = 0 - self.dd_dry_bicart_fill_request = 0 - self.dd_bicarb_chamber_fill_request = 0 - self.dd_dry_bicart_drain_request = 0 - self.dd_dry_bicart_last_fill_time = 0 - self.dd_dry_bicart_current_fill_time = 0 - self.dd_dry_bicart_timestamp = 0 - self.dd_dryBiCartType = 0 - self.dd_dryBiCartDrainTimePeriod = 0 + self.dd_dry_bicart_timestamp = 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 + @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_timestamp"]) - def _handler_dry_bicart_sync(self, message, timestamp=0.0): """ Handles published dry bicart data messages. @param message: published dry bicart data message @return: None """ - self.dd_dry_bicart_fill_execution_state = struct.unpack('I', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] self.dd_bicarb_chamber_fill_execution_state = struct.unpack('I', bytearray( @@ -102,6 +101,7 @@ self.dd_dry_bicart_timestamp = timestamp + 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 @@ -113,7 +113,6 @@ @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ - return cmd_generic_broadcast_interval_override( ms=ms, reset=reset, @@ -123,6 +122,7 @@ logger=self.logger, can_interface=self.can_interface) + def cmd_bicart_max_fill_cycle_count_override(self, count: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart max cycle count override command @@ -132,7 +132,6 @@ @param count: int - count value to override max fill cycle count @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise - """ cycle_count = integer_to_bytearray(count) reset_byte_array = integer_to_bytearray(reset) @@ -148,6 +147,7 @@ logger=self.logger, can_interface=self.can_interface) + def cmd_dry_bicart_fill_request_override(self, start_stop: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart fill request override command @@ -156,9 +156,7 @@ @param start_stop: int - value to start or stop dry bicart fill ( start = 1, stop = 0 @return: 1 if successful, zero otherwise - """ - request = integer_to_bytearray(start_stop) reset_byte_array = integer_to_bytearray(reset) payload = reset_byte_array + request @@ -173,6 +171,7 @@ logger=self.logger, can_interface=self.can_interface) + def cmd_dry_bicart_bicarb_chamber_fill_request_override(self, start_stop: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart bicarbonate chamber F fill request override command @@ -181,9 +180,7 @@ @param start_stop: int - value to start or stop dry bicart fill ( start = 1, stop = 0 @return: 1 if successful, zero otherwise - """ - request = integer_to_bytearray(start_stop) reset_byte_array = integer_to_bytearray(reset) payload = reset_byte_array + request @@ -198,6 +195,7 @@ logger=self.logger, can_interface=self.can_interface) + def cmd_dry_bicart_drain_request_override(self, start_stop: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart drain request override command @@ -206,9 +204,7 @@ @param start_stop: int - value to start or stop dry bicart drain ( start = 1, stop = 0 @return: 1 if successful, zero otherwise - """ - request = integer_to_bytearray(start_stop) reset_byte_array = integer_to_bytearray(reset) payload = reset_byte_array + request @@ -223,6 +219,7 @@ logger=self.logger, can_interface=self.can_interface) + def cmd_dry_bicart_cartridge_size_override(self, small_large: int, reset: int = NO_RESET) -> int: """ Constructs and sends the dry bicart cartridge size override command @@ -231,9 +228,7 @@ @param small_large: int - value for small or large dry bicart ( small = 0, large = 1 @return: 1 if successful, zero otherwise - """ - cartridge_size = integer_to_bytearray(small_large) reset_byte_array = integer_to_bytearray(reset) payload = reset_byte_array + cartridge_size Index: leahi_dialin/dd/modules/events.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/events.py (.../events.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/dd/modules/events.py (.../events.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -41,10 +41,6 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.dd_events_timestamp = 0.0 - self.dd_event_op_mode = 0 - self.dd_event_sub_mode = 0 - self.dd_event_op_mode_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id @@ -56,9 +52,10 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_op_mode_data, self._handler_dd_op_mode_sync) - # Define the dictionaries - self._dd_event_dictionary = dict() - self._dd_event_data_type = dict() + self.dd_events_timestamp = 0.0 #: The timestamp of the last Event message + self.dd_event_op_mode = 0 #: The new Operation Mode value + self.dd_event_sub_mode = 0 #: The new Operation Sub-Mode value + self.dd_event_op_mode_timestamp = 0.0 #: The timestamp of the last Operation Mode change message # Dictionary of the mode as key and the sub mode states enum class as the value self._dd_op_mode_2_sub_mode = {dd_enum_repository.DDOpModes.MODE_FAUL.name: dd_enum_repository.DDFaultStates, @@ -73,6 +70,10 @@ dd_enum_repository.DDOpModes.MODE_ROPS.name: dd_enum_repository.DDROPermeateStates, dd_enum_repository.DDOpModes.MODE_NLEG.name: dd_enum_repository.DDNotLegalStates} + # Define the dictionaries + self._dd_event_dictionary = dict() + self._dd_event_data_type = dict() + # Loop through the list of the DD events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. for event in dd_enum_repository.DDEventList: Index: leahi_dialin/dd/modules/gen_dialysate.py =================================================================== diff -u -r26b51fdaa4392c915a1548bca456d4602b324be3 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/gen_dialysate.py (.../gen_dialysate.py) (revision 26b51fdaa4392c915a1548bca456d4602b324be3) +++ leahi_dialin/dd/modules/gen_dialysate.py (.../gen_dialysate.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -47,12 +47,12 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_gen_dialysate_mode_data, self._handler_gen_dialysate_sync) - self.execution_state = 0 - self.dialysate_delivery_in_progress = 0 - self.dialysate_good_to_deliver = 0 - self.targetQd = 0.0 - self.isBalancingChamberSwitchingActive = 0 - self.dd_gen_dialysate_timestamp = 0 + self.dd_gen_dialysate_timestamp = 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.targetQd = 0.0 #: The Target Qd + self.isBalancingChamberSwitchingActive = 0 #: Is the balancing chamber switching or not @publish(["msg_id_dd_gen_dialysate_mode_data", Index: leahi_dialin/dd/modules/heaters.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/dd/modules/heaters.py (.../heaters.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -40,6 +40,14 @@ self.can_interface = can_interface self.logger = logger + if self.can_interface is not None: + channel_id = DenaliChannels.dd_sync_broadcast_ch_id + self.msg_id_dd_heaters_data = MsgIds.MSG_ID_DD_HEATERS_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_heaters_data, 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, @@ -61,7 +69,7 @@ } } - #Temp Heater Debugging published fields + # Temp Heater Debugging published fields self.dbg1 = 0.0 self.dbg2 = 0.0 self.dbg3 = 0.0 @@ -72,14 +80,7 @@ self.dbg8 = 0.0 self.dbg9 = 0.0 - self.dd_heaters_timestamp = 0.0 - - if self.can_interface is not None: - channel_id = DenaliChannels.dd_sync_broadcast_ch_id - self.msg_id_dd_heaters_data = MsgIds.MSG_ID_DD_HEATERS_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_heaters_data, self._handler_heaters_sync) - - + @publish(["msg_id_dd_heaters_data", "dd_heaters", "dbg1", "dbg2", "dbg3", "dbg4", "dbg5", "dbg6", "dbg7", "dbg8", "dbg9", "dd_heaters_timestamp"]) Index: leahi_dialin/dd/modules/levels.py =================================================================== diff -u -r87d5fc1bdc694d2adaec08a38eea47a61c056f7d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 87d5fc1bdc694d2adaec08a38eea47a61c056f7d) +++ leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -45,14 +45,16 @@ self.msg_id_dd_level_data = MsgIds.MSG_ID_DD_LEVEL_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_level_data, 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.D6_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name: 0 } - self.dd_bicarb_level = 0 - self.dd_levels_timestamp = 0 + self.dd_bicarb_level = 0 #: The Bicarb level @publish(["msg_id_dd_level_data", "dd_level_sensors", "dd_bicarb_level", "dd_levels_timestamp"]) Index: leahi_dialin/dd/modules/post_gen_dialysate.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/post_gen_dialysate.py (.../post_gen_dialysate.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/post_gen_dialysate.py (.../post_gen_dialysate.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,8 +46,8 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_post_gen_dialysate_state_data, self._handler_post_gen_dialysate_sync) - self.execution_state = 0 - self.post_gen_state_timestamp = 0 + self.post_gen_state_timestamp = 0 #: The timestamp of the latest message + self.execution_state = 0 #: The execution state @publish(["msg_id_dd_post_gen_dialysate_state_data", "execution_state", "post_gen_state_timestamp"]) Index: leahi_dialin/dd/modules/pre_gen_dialysate.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/pre_gen_dialysate.py (.../pre_gen_dialysate.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/pre_gen_dialysate.py (.../pre_gen_dialysate.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -51,15 +51,15 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_pre_gen_dialysate_request_data, self._handler_pre_gen_request_sync) - self.execution_state = 0 - self.pre_gen_state_timestamp = 0 + self.pre_gen_state_timestamp = 0 #: The timestamp of the latest Pre-Gen State message + self.execution_state = 0 #: The execution state - self.pre_gen_request_timestamp = 0 - 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 + 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 @publish(["msg_id_dd_pre_gen_dialysate_state_data", "execution_state", "pre_gen_state_timestamp"]) Index: leahi_dialin/dd/modules/pressure_sensors.py =================================================================== diff -u -r9a97e1f14f267d899b1604a9584284d6074f9224 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 9a97e1f14f267d899b1604a9584284d6074f9224) +++ leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -46,6 +46,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_pressures_data, 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, @@ -55,9 +58,7 @@ dd_enum_repository.DDPressureSensorNames.D87_PRES.name: 0.0 } - self.dd_pressures_timestamp = 0 - @publish(["msg_id_dd_pressures_data", "dd_pressures", "dd_pressures_timestamp"]) def _handler_pressures_sync(self, message,timestamp=0.0): """ Index: leahi_dialin/dd/modules/rinse_pump.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/rinse_pump.py (.../rinse_pump.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/rinse_pump.py (.../rinse_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -47,10 +47,10 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_rinse_pump_data, self._handler_rinse_pump_sync) - self.d79_state = 0 - self.d79_pump_pwm = 0.0 - self.d79_pump_rpm = 0 - self.dd_rinse_pump_timestamp = 0 + 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 @publish(["msg_id_dd_rinse_pump_data", Index: leahi_dialin/dd/modules/spent_chamber_fill.py =================================================================== diff -u -r410054cfec7aee839266233249413b08b368fbd3 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/spent_chamber_fill.py (.../spent_chamber_fill.py) (revision 410054cfec7aee839266233249413b08b368fbd3) +++ leahi_dialin/dd/modules/spent_chamber_fill.py (.../spent_chamber_fill.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,10 +46,10 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_spent_chamber_fill_data, self._handler_spent_chamber_fill_sync) - self.execution_state = 0 - self.switching_period = 0 - self.total_spent_chamber_fill_counter = 0 - self.dd_spent_chamber_timestamp = 0 + 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 @publish(["msg_id_dd_spent_chamber_fill_data", Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -r66d171f4704fd77835314e6024e508587f001e8f -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -34,8 +34,16 @@ self.can_interface = can_interface self.logger: Logger = logger - # Dictionary of the temperature sensors - self.dd_temperatures_timestamp = 0.0 + + if self.can_interface is not None: + channel_id = DenaliChannels.dd_sync_broadcast_ch_id + self.msg_id_dd_temperature_data = MsgIds.MSG_ID_DD_TEMPERATURE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_temperature_data, + 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, @@ -61,13 +69,7 @@ dd_enum_repository.DDTemperatureSensorNames.D87_TEMP.name: 0.0 } - if self.can_interface is not None: - channel_id = DenaliChannels.dd_sync_broadcast_ch_id - self.msg_id_dd_temperature_data = MsgIds.MSG_ID_DD_TEMPERATURE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_temperature_data, - self._handler_temperature_sensors_sync) - @publish(["msg_id_dd_temperature_data", "dd_temperatures", "dd_temperatures_timestamp"]) def _handler_temperature_sensors_sync(self, message,timestamp=0.0): """ Index: leahi_dialin/dd/modules/ultrafiltration.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/ultrafiltration.py (.../ultrafiltration.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/ultrafiltration.py (.../ultrafiltration.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,11 +46,11 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_uf_data, self._handler_ultrafiltration_sync) - self.uf_exec_state = 0 - self.uf_rate = 0.0 - self.compensated_uf_rate = 0.0 - self.is_uf_requested = 0 - self.uf_timestamp = 0.0 + self.uf_timestamp = 0.0 #: The timestamp of the latest message + self.uf_exec_state = 0 #: The Ultrafiltration execution state + self.uf_rate = 0.0 #: The Ultrafiltration rate + self.compensated_uf_rate = 0.0 #: The Compensated Ultrafiltration rate + self.is_uf_requested = 0 #: Is Ultrafiltration requested or not @publish(["msg_id_dd_uf_data", "uf_exec_state","uf_rate", Index: leahi_dialin/dd/modules/valves.py =================================================================== diff -u -reb312be9dab95907142103419bc1804713789e8d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/valves.py (.../valves.py) (revision eb312be9dab95907142103419bc1804713789e8d) +++ leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from collections import OrderedDict from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -54,53 +54,51 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.valves_sensed_states = OrderedDict() - self.dd_valves_states_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id self.msg_id_dd_valves_states_data = MsgIds.MSG_ID_DD_VALVES_STATES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_valves_states_data, self._handler_valves_sync) - self.valve_states_all = 0x00000000 + self.dd_valves_states_timestamp = 0.0 #: The timestamp of the latest message + self.valve_states_all = 0x00000000 #: States of all the vales in binary format + self.valves_sensed_states = OrderedDict() #: The Valve's Sensed State data in dictionary format + self.d14_valv = {"id": dd_enum_repository.DDValveNames.D14_VALV.value, "state": DEENERGIZED} #: The D14 valve's value + self.d52_valv = {"id": dd_enum_repository.DDValveNames.D52_VALV.value, "state": DEENERGIZED} #: The D52 valve's value + self.d8_valv = {"id": dd_enum_repository.DDValveNames.D8_VALV.value, "state": DEENERGIZED} #: The D8 valve's value + self.d54_valv = {"id": dd_enum_repository.DDValveNames.D54_VALV.value, "state": DEENERGIZED} #: The D54 valve's value + self.d53_valv = {"id": dd_enum_repository.DDValveNames.D53_VALV.value, "state": DEENERGIZED} #: The D53 valve's value + self.d34_valv = {"id": dd_enum_repository.DDValveNames.D34_VALV.value, "state": DEENERGIZED} #: The D34 valve's value + self.d64_valv = {"id": dd_enum_repository.DDValveNames.D64_VALV.value, "state": DEENERGIZED} #: The D64 valve's value + self.d31_valv = {"id": dd_enum_repository.DDValveNames.D31_VALV.value, "state": DEENERGIZED} #: The D31 valve's value + self.d65_valv = {"id": dd_enum_repository.DDValveNames.D65_VALV.value, "state": DEENERGIZED} #: The D65 valve's value + self.d35_valv = {"id": dd_enum_repository.DDValveNames.D35_VALV.value, "state": DEENERGIZED} #: The D35 valve's value + self.d40_valv = {"id": dd_enum_repository.DDValveNames.D40_VALV.value, "state": DEENERGIZED} #: The D40 valve's value + self.d47_valv = {"id": dd_enum_repository.DDValveNames.D47_VALV.value, "state": DEENERGIZED} #: The D47 valve's value + self.d3_valv = {"id": dd_enum_repository.DDValveNames.D3_VALV.value, "state": DEENERGIZED} #: The D3 valve's value + self.d80_valv = {"id": dd_enum_repository.DDValveNames.D80_VALV.value, "state": DEENERGIZED} #: The D80 valve's value + self.d81_valv = {"id": dd_enum_repository.DDValveNames.D81_VALV.value, "state": DEENERGIZED} #: The D81 valve's value + self.d85_valv = {"id": dd_enum_repository.DDValveNames.D85_VALV.value, "state": DEENERGIZED} #: The D85 valve's value - self.d14_valv = {"id": dd_enum_repository.DDValveNames.D14_VALV.value, "state": DEENERGIZED} - self.d52_valv = {"id": dd_enum_repository.DDValveNames.D52_VALV.value, "state": DEENERGIZED} - self.d8_valv = {"id": dd_enum_repository.DDValveNames.D8_VALV.value, "state": DEENERGIZED} - self.d54_valv = {"id": dd_enum_repository.DDValveNames.D54_VALV.value, "state": DEENERGIZED} - self.d53_valv = {"id": dd_enum_repository.DDValveNames.D53_VALV.value, "state": DEENERGIZED} - self.d34_valv = {"id": dd_enum_repository.DDValveNames.D34_VALV.value, "state": DEENERGIZED} - self.d64_valv = {"id": dd_enum_repository.DDValveNames.D64_VALV.value, "state": DEENERGIZED} - self.d31_valv = {"id": dd_enum_repository.DDValveNames.D31_VALV.value, "state": DEENERGIZED} - self.d65_valv = {"id": dd_enum_repository.DDValveNames.D65_VALV.value, "state": DEENERGIZED} - self.d35_valv = {"id": dd_enum_repository.DDValveNames.D35_VALV.value, "state": DEENERGIZED} - self.d40_valv = {"id": dd_enum_repository.DDValveNames.D40_VALV.value, "state": DEENERGIZED} - self.d47_valv = {"id": dd_enum_repository.DDValveNames.D47_VALV.value, "state": DEENERGIZED} - self.d3_valv = {"id": dd_enum_repository.DDValveNames.D3_VALV.value, "state": DEENERGIZED} - self.d80_valv = {"id": dd_enum_repository.DDValveNames.D80_VALV.value, "state": DEENERGIZED} - self.d81_valv = {"id": dd_enum_repository.DDValveNames.D81_VALV.value, "state": DEENERGIZED} - self.d85_valv = {"id": dd_enum_repository.DDValveNames.D85_VALV.value, "state": DEENERGIZED} + self.d23_valv = {"id": dd_enum_repository.DDValveNames.D23_VALV.value, "state": DEENERGIZED} #: The D23 valve's value + self.d19_valv = {"id": dd_enum_repository.DDValveNames.D19_VALV.value, "state": DEENERGIZED} #: The D19 valve's value + self.d25_valv = {"id": dd_enum_repository.DDValveNames.D25_VALV.value, "state": DEENERGIZED} #: The D25 valve's value + self.d21_valv = {"id": dd_enum_repository.DDValveNames.D21_VALV.value, "state": DEENERGIZED} #: The D31 valve's value + self.d24_valv = {"id": dd_enum_repository.DDValveNames.D24_VALV.value, "state": DEENERGIZED} #: The D24 valve's value + self.d20_valv = {"id": dd_enum_repository.DDValveNames.D20_VALV.value, "state": DEENERGIZED} #: The D20 valve's value + self.d26_valv = {"id": dd_enum_repository.DDValveNames.D26_VALV.value, "state": DEENERGIZED} #: The D26 valve's value + self.d22_valv = {"id": dd_enum_repository.DDValveNames.D22_VALV.value, "state": DEENERGIZED} #: The D22 valve's value - self.d23_valv = {"id": dd_enum_repository.DDValveNames.D23_VALV.value, "state": DEENERGIZED} - self.d19_valv = {"id": dd_enum_repository.DDValveNames.D19_VALV.value, "state": DEENERGIZED} - self.d25_valv = {"id": dd_enum_repository.DDValveNames.D25_VALV.value, "state": DEENERGIZED} - self.d21_valv = {"id": dd_enum_repository.DDValveNames.D21_VALV.value, "state": DEENERGIZED} - self.d24_valv = {"id": dd_enum_repository.DDValveNames.D24_VALV.value, "state": DEENERGIZED} - self.d20_valv = {"id": dd_enum_repository.DDValveNames.D20_VALV.value, "state": DEENERGIZED} - self.d26_valv = {"id": dd_enum_repository.DDValveNames.D26_VALV.value, "state": DEENERGIZED} - self.d22_valv = {"id": dd_enum_repository.DDValveNames.D22_VALV.value, "state": DEENERGIZED} + self.d88_d79_valv = {"id": dd_enum_repository.DDValveNames.D88_D79_VALV.value, "state": DEENERGIZED} #: The D88 or D79 valve's value + self.d83_valv = {"id": dd_enum_repository.DDValveNames.D83_VALV.value, "state": DEENERGIZED} #: The D83 valve's value + self.d91_valv = {"id": dd_enum_repository.DDValveNames.D91_VALV.value, "state": DEENERGIZED} #: The D91 valve's value + self.d104_valv = {"id": dd_enum_repository.DDValveNames.D104_VALV.value, "state": DEENERGIZED} #: The D104 valve's value + self.d95_valv = {"id": dd_enum_repository.DDValveNames.D95_VALV.value, "state": DEENERGIZED} #: The D95 valve's value + self.spare5_valv = {"id": dd_enum_repository.DDValveNames.SPARE5_VALV.value, "state": DEENERGIZED} #: The Spare5 valve's value + self.d100_valv = {"id": dd_enum_repository.DDValveNames.D100_VALV.value, "state": DEENERGIZED} #: The D100 valve's value + self.spare7_valv = {"id": dd_enum_repository.DDValveNames.SPARE7_VALV.value, "state": DEENERGIZED} #: The Spare7 valve's value - self.d88_d79_valv = {"id": dd_enum_repository.DDValveNames.D88_D79_VALV.value, "state": DEENERGIZED} - self.d83_valv = {"id": dd_enum_repository.DDValveNames.D83_VALV.value, "state": DEENERGIZED} - self.d91_valv = {"id": dd_enum_repository.DDValveNames.D91_VALV.value, "state": DEENERGIZED} - self.d104_valv = {"id": dd_enum_repository.DDValveNames.D104_VALV.value, "state": DEENERGIZED} - self.d95_valv = {"id": dd_enum_repository.DDValveNames.D95_VALV.value, "state": DEENERGIZED} - self.spare5_valv = {"id": dd_enum_repository.DDValveNames.SPARE5_VALV.value, "state": DEENERGIZED} - self.d100_valv = {"id": dd_enum_repository.DDValveNames.D100_VALV.value, "state": DEENERGIZED} - self.spare7_valv = {"id": dd_enum_repository.DDValveNames.SPARE7_VALV.value, "state": DEENERGIZED} - - # NOTE: The len function counts the enums with the same number only once. This is not the case in the DD valves - # class because each valve must have a unique ID. + #: States of all the vales in list format self.valve_states_enum = [0 for _ in range(dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value - 1)] for valve in dd_enum_repository.DDValveNames.__members__: Index: leahi_dialin/dd/modules/voltages.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/dd/modules/voltages.py (.../voltages.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/dd/modules/voltages.py (.../voltages.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -44,8 +44,11 @@ self.msg_id_dd_voltages_data = MsgIds.MSG_ID_DD_VOLTAGES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_voltages_data, self._handler_monitored_voltages_sync) + + self.dd_voltages_timestamp = 0.0 #: The timestamp of the latest message + + #: The Voltages data in list format self.monitored_voltages = [0.0] * dd_enum_repository.DDMonitoredVoltages.NUM_OF_MONITORED_VOLTAGE_LINES.value - self.dd_voltages_timestamp = 0.0 @publish(["msg_id_dd_voltages_data","dd_voltages_timestamp","monitored_voltages"]) Index: leahi_dialin/fp/filtration_purification.py =================================================================== diff -u -r980f71407af011d966bf2c995f04d6cc5ead45c8 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 980f71407af011d966bf2c995f04d6cc5ead45c8) +++ leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -33,7 +33,7 @@ from .proxies.dd_proxy import DDProxy from ..common.constants import NO_RESET -from ..common.fp_defs import fp_enum_repository +from ..common import fp_enum_repository from ..common.msg_defs import MsgIds, MsgFieldPositions, MsgFieldPositionsFWVersions from ..common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels @@ -99,38 +99,49 @@ self.cmd_log_in_to_fp() # create properties - self.fp_defeatured = False - self.fp_defeatured_timestamp = 0.0 - self.fp_op_mode_timestamp = 0.0 - self.fp_debug_events_timestamp = 0.0 - self.fp_version_response_timestamp = 0.0 - self.fp_operation_mode = fp_enum_repository.FPOpModes.MODE_INIT.value - self.fp_operation_sub_mode = 0 - self.fp_logged_in = False + self.fp_defeatured = False #: The FP is defeaturized or not + self.fp_defeatured_timestamp = 0.0 #: The timestamp of the latest defeatured message + self.fp_op_mode_timestamp = 0.0 #: The timestamp of the latest operation mode message + self.fp_debug_events_timestamp = 0.0 #: The timestamp of the latest events message + self.fp_version_response_timestamp = 0.0 #: The timestamp of the latest FP version info message + self.fp_operation_mode = fp_enum_repository.FPOpModes.MODE_INIT.value #: The Operation Mode's value + self.fp_operation_sub_mode = 0 #: The Operation Sub-Mode's value + self.fp_logged_in = False #: The value showing if the user is logged in or not self.fp_set_logged_in_status(False) - self.fp_version = None - self.fp_fpga_version = None - self.fp_debug_events = [''] * self._FP_DEBUG_EVENT_LIST_COUNT - self.fp_debug_event_index = 0 - self.fp_last_debug_event = '' + self.fp_version = None #: The FP's version value + self.fp_fpga_version = None #: The FP's FPGA version value + self.fp_debug_events = [''] * self._FP_DEBUG_EVENT_LIST_COUNT #: The Debug Event's list + self.fp_debug_event_index = 0 #: The index of the last Event + self.fp_last_debug_event = '' #: The name of the last Event # Create command groups - self.alarms = FPAlarms(self.can_interface, self.logger) - self.boost_pump = FPBoostPump(self.can_interface, self.logger) - self.conductivity = FPConductivitySensors(self.can_interface, self.logger) - self.events = FPEvents(self.can_interface, self.logger) - self.flows = FPFlowSensors(self.can_interface, self.logger) - self.fluid_pumps = FPPumps(self.can_interface, self.logger) - self.levels = FPLevels(self.can_interface, self.logger) - self.permeate_tank = FPPermeateTank(self.can_interface, self.logger) - self.pressures = FPPressureSensors(self.can_interface, self.logger) - self.ro_pump = FPROPump(self.can_interface, self.logger) - self.temperatures = FPTemperatureSensors(self.can_interface, self.logger) - self.test_configs = FPTestConfig(self.can_interface, self.logger) - self.valves = FPValves(self.can_interface, self.logger) - self.dd_proxy = DDProxy(self.can_interface, self.logger, fp = self) + self.alarms = FPAlarms(self.can_interface, self.logger) #: The Alarms module + self.boost_pump = FPBoostPump(self.can_interface, self.logger) #: The Boost Pump module + self.conductivity = FPConductivitySensors(self.can_interface, self.logger) #: The Conductivity Sensors module + self.events = FPEvents(self.can_interface, self.logger) #: The Events module + self.flows = FPFlowSensors(self.can_interface, self.logger) #: The Flows module + self.fluid_pumps = FPPumps(self.can_interface, self.logger) #: The Fluid Pumps module + self.levels = FPLevels(self.can_interface, self.logger) #: The Levels module + self.permeate_tank = FPPermeateTank(self.can_interface, self.logger) #: The Permeate Tank module + self.pressures = FPPressureSensors(self.can_interface, self.logger) #: The Pressure Sensors module + self.ro_pump = FPROPump(self.can_interface, self.logger) #: The RO Pump module + self.temperatures = FPTemperatureSensors(self.can_interface, self.logger) #: The Temperature Sensors module + self.test_configs = FPTestConfig(self.can_interface, self.logger) #: The Test Configs module + self.valves = FPValves(self.can_interface, self.logger) #: The Valves module + self.dd_proxy = DDProxy(self.can_interface, self.logger, fp = self) #: The DD Proxy module (imitates commands sent by DD) + + def fp_set_logged_in_status(self, logged_in: bool = False): + """ + Callback for fp logged in status change. + + @param logged_in: Logged in status for FP + @return: None + """ + self.fp_logged_in = logged_in + + @publish(["msg_id_fp_debug_event", "fp_debug_events_timestamp","fp_debug_events"]) def _handler_fp_debug_event_sync(self, message, timestamp = 0.0): """ @@ -159,16 +170,6 @@ self.fp_debug_event_index = 0 - @publish(["fp_logged_in"]) - def fp_set_logged_in_status(self, logged_in: bool = False): - """ - Callback for fp logged in status change. - @param logged_in boolean logged in status for FP - @return: none - """ - self.fp_logged_in = logged_in - - @publish(["msg_id_fp_version_response", "fp_version, fp_fpga_version"]) def _handler_fp_version_response_sync(self,message, timestamp = 0.0): """ Index: leahi_dialin/fp/modules/alarms.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/alarms.py (.../alarms.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/alarms.py (.../alarms.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from leahi_dialin.common.alarm_defs import AlarmList from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -48,26 +48,21 @@ self.msg_id_fp_alarm_triggered = MsgIds.MSG_ID_ALARM_TRIGGERED.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_alarm_triggered, self._handler_alarm_triggered) - self.fp_alarm_triggered_timestamp = 0.0 - # alarm states based on received TD alarm activation and alarm clear messages - self.alarm_states = [False] * 500 - # alarm condition states based on received TD alarm activation and clear condition messages - self.alarm_conditions = [False] * 500 - # alarm priorities based on received TD alarm activation messages - self.alarm_priorities = [0] * 500 - # alarm ranks based on received TD alarm activation messages - self.alarm_ranks = [0] * 500 - # alarm clear top only flags based on received TD alarm activation messages - self.alarm_clear_top_only_flags = [False] * 500 - # alarm debug data on alarm triggered message - self.alarm_data = [0, 0] * 500 + self.fp_alarm_triggered_timestamp = 0.0 #: The timestamp of the last Alarm Triggered message - self.last_alarm_triggered = 0 - self.last_alarm_data_1 = 0.0 - self.last_alarm_data_2 = 0.0 + self.alarm_states = [False] * 500 #: The States of all Alarms data in list format + self.alarm_conditions = [False] * 500 #: The Conditions of all Alarms data in list format + self.alarm_priorities = [0] * 500 #: The Priorities of all Alarms data in list format + self.alarm_ranks = [0] * 500 #: The Ranks of all Alarms data in list format + self.alarm_clear_top_only_flags = [False] * 500 #: The Clear Top only flags of all Alarms data in list format + self.alarm_data = [0, 0] * 500 #: The all Alarms data in list format + self.last_alarm_triggered = 0 #: The timestamp when did the last alarm triggered + self.last_alarm_data_1 = 0.0 #: The last Alarm's data part 1 + self.last_alarm_data_2 = 0.0 #: The last Alarm's data part 2 + # alarm information - self.alarm_data_type = dict() + self.alarm_data_type = dict() #: The Alarm's Data type in dict format # Loop through the list of the event data type enum and update the dictionary for data_type in fp_enum_repository.FPEventDataTypes: Index: leahi_dialin/fp/modules/boost_pump.py =================================================================== diff -u -r3d9e3c5cc1bcd5ce23187a5a627e1ff4177f38d6 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision 3d9e3c5cc1bcd5ce23187a5a627e1ff4177f38d6) +++ leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -44,7 +44,10 @@ self.msg_id_fp_boost_pump_data = MsgIds.MSG_ID_FP_BOOST_PUMP_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_boost_pump_data, self._handler_pump_sync) - self.boost_pump_timestamp = 0.0 + + self.boost_pump_timestamp = 0.0 #: The timestamp of the last message + + # The Boost Pump data in dictionary format self.boost_pump = { fp_enum_repository.FPBoostPumpNames.P40_PUMP.name: { fp_enum_repository.FPPumpAttributes.STATE.name: 0, @@ -60,7 +63,6 @@ } - @publish(["msg_id_fp_boost_pump_data", "boost_pump", "boost_pump_timestamp"]) def _handler_pump_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/fp/modules/conductivity_sensors.py =================================================================== diff -u -r89f5dc5bbbf4eb9018610467eb1a4da188368e7a -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 89f5dc5bbbf4eb9018610467eb1a4da188368e7a) +++ leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_COND_SENSOR_OFFSET +from leahi_dialin.common import fp_enum_repository, BETA_IOFP_COND_SENSOR_OFFSET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -47,14 +47,16 @@ self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_FP_RO_REJECTION_RATIO_DATA.value, self._handler_ro_rejection_ratio_sync) - self.fp_conductivity_timestamp = 0.0 - self.ro_rejection_ratio_timestamp = 0.0 + self.fp_conductivity_timestamp = 0.0 #: The timestamp of the last Conductivity data message + self.ro_rejection_ratio_timestamp = 0.0 #: The timestamp of the last RO Rejection Ratio data message + #: The Conductivity Sensors data in dictionary format self.fp_conductivity = { fp_enum_repository.FPConductivitySensorNames.P9_COND.name: 0.0, fp_enum_repository.FPConductivitySensorNames.P18_COND.name: 0.0 } + #: The RO Rejection Ratio data in dictionary format self.ro_rejection_ratio = { fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO.name: 0.0, fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO_TANK_FILL.name: 0.0, Index: leahi_dialin/fp/modules/events.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/events.py (.../events.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/events.py (.../events.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -39,10 +39,6 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.fp_events_timestamp = 0.0 - self.fp_event_op_mode = 0 - self.fp_event_sub_mode = 0 - self.fp_event_op_mode_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.fp_sync_broadcast_ch_id @@ -54,9 +50,10 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_op_mode_data, self._handler_fp_op_mode_sync) - # Define the dictionaries - self._fp_event_dictionary = dict() - self._fp_event_data_type = dict() + self.fp_events_timestamp = 0.0 #: The timestamp of the last Event message + self.fp_event_op_mode = 0 #: The new Operation Mode value + self.fp_event_sub_mode = 0 #: The new Operation Sub-Mode value + self.fp_event_op_mode_timestamp = 0.0 #: The timestamp of the last Operation Mode change message # Dictionary of the mode as key and the sub mode states enum class as the value self._fp_op_mode_2_sub_mode = {fp_enum_repository.FPOpModes.MODE_FAUL.name: fp_enum_repository.FPFaultStates, @@ -69,6 +66,10 @@ fp_enum_repository.FPOpModes.MODE_DEGP.name: fp_enum_repository.FPGenPermeateDefStates, fp_enum_repository.FPOpModes.MODE_NLEG.name: fp_enum_repository.FPNotLegalStates} + # Define the dictionaries + self._fp_event_dictionary = dict() + self._fp_event_data_type = dict() + # Loop through the list of the FP events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. for event in fp_enum_repository.FPEventList: Index: leahi_dialin/fp/modules/flow_sensors.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/flow_sensors.py (.../flow_sensors.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/flow_sensors.py (.../flow_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -45,14 +45,15 @@ self.msg_id_fp_flow_data = MsgIds.MSG_ID_FP_FLOW_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_flow_data, self._handler_flow_sensor_sync) + self.fp_flow_timestamp = 0 #: The timestamp of the last message + + #: The Flow Sensors data in dictionary format self.fp_flows = { fp_enum_repository.FPFlowSensorNames.P7_FLOW.name: 0.0, fp_enum_repository.FPFlowSensorNames.P16_FLOW.name: 0.0 } - self.fp_flow_timestamp = 0 - @publish(["msg_id_fp_flow_data", "fp_flows", "fp_flows_timestamp"]) def _handler_flow_sensor_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/fp/modules/fp_test_configs.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/fp_test_configs.py (.../fp_test_configs.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/fp_test_configs.py (.../fp_test_configs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -39,15 +39,17 @@ self.can_interface = can_interface self.logger = logger - self.fp_test_configs = dict() - self.fp_test_configs_response_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.fp_to_dialin_ch_id self.msg_id_fp_send_test_config = MsgIds.MSG_ID_FP_SEND_TEST_CONFIGURATION.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_send_test_config, self._handler_fp_test_config_sync) + self.fp_test_configs_response_timestamp = 0.0 #: The timestamp of the last message + self.fp_test_configs = dict() #: The Test Config data in dictionary format + + def cmd_get_test_config_status(self, config: int): """ Returns the status of a test config Index: leahi_dialin/fp/modules/levels.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/levels.py (.../levels.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/levels.py (.../levels.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -45,10 +45,12 @@ self.msg_id_fp_level_data = MsgIds.MSG_ID_FP_LEVEL_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_level_data, self._handler_levels_sync) + self.fp_levels_timestamp = 0 #: The timestamp of the last message + + #: The Level Sensors data in dictionary format self.fp_levels = { fp_enum_repository.FPFloaterLevelSensorNames.P25_LEVEL.name: 0 } - self.fp_levels_timestamp = 0 @publish(["msg_id_fp_level_data", Index: leahi_dialin/fp/modules/permeate_tank.py =================================================================== diff -u -ra291930ba38e329e2b373f6d2b2a7564a6b7a09a -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/permeate_tank.py (.../permeate_tank.py) (revision a291930ba38e329e2b373f6d2b2a7564a6b7a09a) +++ leahi_dialin/fp/modules/permeate_tank.py (.../permeate_tank.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -46,8 +46,8 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_permeate_tank_data, self._handler_permeate_tank_sync) - self.permeate_tank_state = 0 - self.permeate_tank_timestamp = 0.0 + self.permeate_tank_timestamp = 0.0 #: The timestamp of the last message + self.permeate_tank_state = 0 #: The Permeate Tank's State value @publish(["msg_id_fp_permeate_tank_data", "permeate_tank_state", "permeate_tank_timestamp"]) Index: leahi_dialin/fp/modules/pressure_sensors.py =================================================================== diff -u -re873a8e3cd071f814923bd7530ac87ccf27f9b4f -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision e873a8e3cd071f814923bd7530ac87ccf27f9b4f) +++ leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_PRES_SENSOR_OFFSET +from leahi_dialin.common import fp_enum_repository, BETA_IOFP_PRES_SENSOR_OFFSET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -45,6 +45,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_pressures_data, self._handler_pressure_sync) + self.fp_pressure_timestamp = 0.0 #: The timestamp of the last message + + # The Pressure Sensors data in dictionary format self.fp_pressures = { fp_enum_repository.FPPressureSensorNames.M3_PRES.name: 0.0, fp_enum_repository.FPPressureSensorNames.P8_PRES.name: 0.0, @@ -53,9 +56,7 @@ fp_enum_repository.FPPressureSensorNames.P46_PRES.name: 0.0 } - self.fp_pressure_timestamp = 0.0 - @publish(["msg_id_fp_pressures_data", "fp_pressures", "fp_pressure_timestamp"]) def _handler_pressure_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/fp/modules/ro_pump.py =================================================================== diff -u -r3d9e3c5cc1bcd5ce23187a5a627e1ff4177f38d6 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/ro_pump.py (.../ro_pump.py) (revision 3d9e3c5cc1bcd5ce23187a5a627e1ff4177f38d6) +++ leahi_dialin/fp/modules/ro_pump.py (.../ro_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -45,6 +45,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_ro_pump_data, self._handler_pump_sync) + self.ro_pump_timestamp = 0.0 #: The timestamp of the last message + + # The RO Pump data in dictionary format self.ro_pump = { fp_enum_repository.FPROPumpNames.P12_PUMP.name: { fp_enum_repository.FPPumpAttributes.STATE.name: 0, @@ -59,9 +62,7 @@ } } - self.ro_pump_timestamp = 0.0 - @publish(["msg_id_fp_ro_pump_data", "ro_pump", "ro_pump_timestamp" ]) def _handler_pump_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/fp/modules/temperatures.py =================================================================== diff -u -rc918c8ef220d8ff474cf0eb857feb6fbeb080906 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision c918c8ef220d8ff474cf0eb857feb6fbeb080906) +++ leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_COND_SENSOR_OFFSET, BETA_IOFP_PRES_SENSOR_OFFSET +from leahi_dialin.common import fp_enum_repository, BETA_IOFP_COND_SENSOR_OFFSET, BETA_IOFP_PRES_SENSOR_OFFSET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -39,7 +39,10 @@ self.msg_id_fp_temperature_data = MsgIds.MSG_ID_FP_TEMPERATURE_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_temperature_data, self._handler_temperature_sensors_sync) - self.fp_temperature_sensors_timestamp = 0 + + self.fp_temperature_sensors_timestamp = 0 #: The timestamp of the last message + + # The Temperature data in dictionary format self.fp_temperatures = { fp_enum_repository.FPTemperatureSensorNames.M3_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P8_TEMP.name: 0.0, Index: leahi_dialin/fp/modules/valves.py =================================================================== diff -u -r90f9b4334fd2c3e51dbe204b3b5e224ce5e88588 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/valves.py (.../valves.py) (revision 90f9b4334fd2c3e51dbe204b3b5e224ce5e88588) +++ leahi_dialin/fp/modules/valves.py (.../valves.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from collections import OrderedDict from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_VALVE_OFFSET +from leahi_dialin.common import fp_enum_repository, BETA_IOFP_VALVE_OFFSET from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -50,47 +50,29 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.valves_sensed_states = OrderedDict() - self.fp_valves_states_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.fp_sync_broadcast_ch_id self.msg_id_fp_valves_states_data = MsgIds.MSG_ID_FP_VALVES_STATES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_valves_states_data, self._handler_valves_sync) - self.valve_states_all = 0x0000 - self.m4_valv = {"id": fp_enum_repository.FPValveNames.M4_VALV.value, "state": DEENERGIZED} - self.m12_valv = {"id": fp_enum_repository.FPValveNames.M12_VALV.value, "state": DEENERGIZED} - self.p11_valv = {"id": fp_enum_repository.FPValveNames.P11_VALV.value, "state": DEENERGIZED} - self.p33_valv = {"id": fp_enum_repository.FPValveNames.P33_VALV.value, "state": DEENERGIZED} - self.p34_valv = {"id": fp_enum_repository.FPValveNames.P34_VALV.value, "state": DEENERGIZED} - self.p37_valv = {"id": fp_enum_repository.FPValveNames.P37_VALV.value, "state": DEENERGIZED} - self.p39_valv = {"id": fp_enum_repository.FPValveNames.P39_VALV.value, "state": DEENERGIZED} - self.p6_valv = {"id": fp_enum_repository.FPValveNames.P6_VALV.value, "state": DEENERGIZED} + self.fp_valves_states_timestamp = 0.0 #: The timestamp of the last message + self.valve_states_all = 0x0000 #: States of all the vales in binary format + self.valves_sensed_states = OrderedDict() #: The Valve's Sensed State data in dictionary format + self.m4_valv = {"id": fp_enum_repository.FPValveNames.M4_VALV.value, "state": DEENERGIZED} #: The M4 valve's value + self.m12_valv = {"id": fp_enum_repository.FPValveNames.M12_VALV.value, "state": DEENERGIZED} #: The M12 valve's value + self.p11_valv = {"id": fp_enum_repository.FPValveNames.P11_VALV.value, "state": DEENERGIZED} #: The P11 valve's value + self.p33_valv = {"id": fp_enum_repository.FPValveNames.P33_VALV.value, "state": DEENERGIZED} #: The P33 valve's value + self.p34_valv = {"id": fp_enum_repository.FPValveNames.P34_VALV.value, "state": DEENERGIZED} #: The P34 valve's value + self.p37_valv = {"id": fp_enum_repository.FPValveNames.P37_VALV.value, "state": DEENERGIZED} #: The P37 valve's value + self.p39_valv = {"id": fp_enum_repository.FPValveNames.P39_VALV.value, "state": DEENERGIZED} #: The P39 valve's value + self.p6_valv = {"id": fp_enum_repository.FPValveNames.P6_VALV.value, "state": DEENERGIZED} #: The P6 valve's value - # NOTE: The len function counts the enums with the same number only once. + #: States of all the vales in list format self.valve_states_enum = [0 for _ in range(fp_enum_repository.FPValveNames.NUM_OF_FP_VALVES.value - 1)] for valve in fp_enum_repository.FPValveNames.__members__: self.valves_sensed_states[valve] = '' - - - def get_valve_states(self): - """ - Gets the valve states - - @return: All valve states - """ - return [ - self.m4_valv.get("state"), - self.m12_valv.get("state"), - self.p11_valv.get("state"), - self.p33_valv.get("state"), - self.p34_valv.get("state"), - self.p37_valv.get("state"), - self.p39_valv.get("state"), - self.p6_valv.get("state") - ] @staticmethod Index: leahi_dialin/fp/modules/water_pumps.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/modules/water_pumps.py (.../water_pumps.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/water_pumps.py (.../water_pumps.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -17,7 +17,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.common.override_templates import cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels Index: leahi_dialin/fp/proxies/dd_proxy.py =================================================================== diff -u -r0a1f091c869a5a2f68f06390fc35192a0eb7edbc -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/fp/proxies/dd_proxy.py (.../dd_proxy.py) (revision 0a1f091c869a5a2f68f06390fc35192a0eb7edbc) +++ leahi_dialin/fp/proxies/dd_proxy.py (.../dd_proxy.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -17,7 +17,7 @@ from logging import Logger from leahi_dialin.common.msg_defs import MsgIds -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.test_config_defs import DDFPTestConfigOptions from leahi_dialin.protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem Index: leahi_dialin/td/modules/air_pump.py =================================================================== diff -u -r893966363336e5425afd5ad88a6e2d6f5b0ed916 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 893966363336e5425afd5ad88a6e2d6f5b0ed916) +++ leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -48,6 +48,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_air_pump_data, self._handler_air_pump_sync) + self.td_air_pump_timestamp = 0.0 #: The timestamp of the last message + + #: The Air Trap Level Sensors data in dictionary format self.td_air_pump = { td_enum_repository.TDAirPumpNames.H12_AIR_PUMP.name: { td_enum_repository.TDAirPumpAttributes.STATE.name: 0, @@ -56,9 +59,7 @@ } } - self.td_air_pump_timestamp = 0.0 - @publish(["msg_id_td_air_pump_data", "td_air_pump", "td_air_pump_timestamp"]) def _handler_air_pump_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -51,6 +51,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_air_trap_data, self._handler_air_trap_sync) + self.td_air_trap_timestamp = 0.0 #: The timestamp of the last message + + #: The Air Trap Level Sensors data in dictionary format self.air_trap_level_sensors = { td_enum_repository.TDAirTrapLevelSensorNames.H17_LEVEL.name: { td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, @@ -61,12 +64,14 @@ td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL } } + + #: The Air Trap Valves data in dictionary format self.air_trap_valve_states = { td_enum_repository.TDAirTrapValveNames.H13_VALV.name: 0, td_enum_repository.TDAirTrapValveNames.H20_VALV.name: 0 } - self.air_control = 0 - self.td_air_trap_timestamp = 0.0 + self.air_control = 0 #: The Air Control value + @publish(["msg_id_td_air_trap_data", Index: leahi_dialin/td/modules/alarms.py =================================================================== diff -u -r41de945f9c773e54e965e80d9e46def828beb732 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision 41de945f9c773e54e965e80d9e46def828beb732) +++ leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -22,7 +22,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, DialinEnum, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -98,45 +98,39 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_alarm_info_data, self._handler_alarm_information_sync) - self.td_alarm_status_timestamp = 0.0 - self.td_alarm_triggered_timestamp = 0.0 - self.td_alarm_cleared_timestamp = 0.0 - self.td_alarm_clr_condition_timestamp = 0.0 - self.td_alarm_information_timestamp = 0.0 + self.td_alarm_status_timestamp = 0.0 #: The timestamp of the last Alarm Status message + self.td_alarm_triggered_timestamp = 0.0 #: The timestamp of the last Alarm Triggered message + self.td_alarm_cleared_timestamp = 0.0 #: The timestamp of the last Alarm Cleared message + self.td_alarm_clr_condition_timestamp = 0.0 #: The timestamp of the last Alarm Clear Condition message + self.td_alarm_information_timestamp = 0.0 #: The timestamp of the last Alarm Information message # composite alarm status based on latest TD alarm status broadcast message - self.alarms_priority_state = 0 - self.alarm_top = 0 - self.alarms_silence_expires_in = 0 - self.alarms_escalates_in = 0 - self.alarms_flags = 0 + self.alarms_priority_state = 0 #: The current Top Alarm's priority value + self.alarm_top = 0 #: The current Top Alarm's value + self.alarms_silence_expires_in = 0 #: How many seconds the silence for the alarms expires in + self.alarms_escalates_in = 0 #: How many seconds the current Alarm escalates to the next priority + self.alarms_flags = 0 #: The Alarm flag's value - # alarm states based on received TD alarm activation and alarm clear messages - self.alarm_states = [False] * 500 - # alarm condition states based on received TD alarm activation and clear condition messages - self.alarm_conditions = [False] * 500 - # alarm priorities based on received TD alarm activation messages - self.alarm_priorities = [0] * 500 - # alarm ranks based on received TD alarm activation messages - self.alarm_ranks = [0] * 500 - # alarm clear top only flags based on received TD alarm activation messages - self.alarm_clear_top_only_flags = [False] * 500 - # alarm debug data on alarm triggered message - self.alarm_data = [0, 0] * 500 + self.alarm_states = [False] * 500 #: The States of all Alarms data in list format + self.alarm_conditions = [False] * 500 #: The Conditions of all Alarms data in list format + self.alarm_priorities = [0] * 500 #: The Priorities of all Alarms data in list format + self.alarm_ranks = [0] * 500 #: The Ranks of all Alarms data in list format + self.alarm_clear_top_only_flags = [False] * 500 #: The Clear Top only flags of all Alarms data in list format + self.alarm_data = [0, 0] * 500 #: The all Alarms data in list format - self.last_alarm_triggered = 0 - self.last_alarm_data_1 = 0.0 - self.last_alarm_data_2 = 0.0 + self.last_alarm_triggered = 0 #: The timestamp when did the last alarm triggered + self.last_alarm_data_1 = 0.0 #: The last Alarm's data part 1 + self.last_alarm_data_2 = 0.0 #: The last Alarm's data part 2 # alarm information - self.alarm_data_type = dict() - self.alarm_volume = 0 - self.alarm_audio_curr_hg = 0.0 - self.alarm_audio_curr_lg = 0.0 - self.alarm_backup_audio_curr = 0.0 - self.safety_shutdown_active = False - self.ac_power_lost = False - self.alarm_table_button_blockers = [False] * self.AlarmResponseButtons.NUM_OF_TD_ALARM_RESPONSE_BUTTONS.value - self.alarm_state_button_blockers = [False] * self.AlarmResponseButtons.NUM_OF_TD_ALARM_RESPONSE_BUTTONS.value + self.alarm_data_type = dict() #: The Alarm's Data type in dict format + self.alarm_volume = 0 #: The Alarm's Volume level + self.alarm_audio_curr_hg = 0.0 #: The Alarm's Audio high current + self.alarm_audio_curr_lg = 0.0 #: The Alarm's Audio low current + self.alarm_backup_audio_curr = 0.0 #: The Alarm's Audio backup current + self.safety_shutdown_active = False #: The Safety Shutdown is active or not + self.ac_power_lost = False #: The AC Power is lost or not + self.alarm_table_button_blockers = [False] * self.AlarmResponseButtons.NUM_OF_TD_ALARM_RESPONSE_BUTTONS.value #: The Alarm Table's Button blocker data + self.alarm_state_button_blockers = [False] * self.AlarmResponseButtons.NUM_OF_TD_ALARM_RESPONSE_BUTTONS.value #: The Alarm State's Button blocker data # Loop through the list of the event data type enum and update the dictionary for data_type in td_enum_repository.TDEventDataTypes: Index: leahi_dialin/td/modules/blood_flow.py =================================================================== diff -u -r6f044fc0a313733b7c0b472afa5ecfebbf02a121 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision 6f044fc0a313733b7c0b472afa5ecfebbf02a121) +++ leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET, PUMP_CONTROL_MODE_CLOSED_LOOP from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -44,7 +44,10 @@ self.msg_id_td_blood_pump_data = MsgIds.MSG_ID_TD_BLOOD_PUMP_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_blood_pump_data, self._handler_blood_flow_sync) - self.td_blood_flow_timestamp = 0.0 + + self.td_blood_flow_timestamp = 0.0 #: The timestamp of the last message + + #: The TD Blood Flow data in dictionary format self.h4_motor = { td_enum_repository.TDBloodFlowMotorAttributes.SET_BLOOD_FLOW_RATE.name: 0, td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_FLOW_RATE.name: 0.0, Index: leahi_dialin/td/modules/bubble_detector.py =================================================================== diff -u -r1c451317473549058db3e3b8d9455c969bbb1516 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision 1c451317473549058db3e3b8d9455c969bbb1516) +++ leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -35,9 +35,6 @@ ADV: Air bubble Detector Venous """ - # Air bubble detectors - H18_ADV = 0 # Air bubble Detector Venous - # Air bubble detectors status BUBBLE_DETECTED_STATUS = 0 # Air bubble detected FLUID_DETECTED_STATUS = 1 # Fluid (no air bubble) detected @@ -60,7 +57,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_bubbles_data, self._handler_air_bubbles_data_sync) - self.td_air_bubbles_timestamp = 0.0 + self.td_air_bubbles_timestamp = 0.0 #: The timestamp of the last message + + #: The TD Bubble Detector data in dictionary format self.h18_bubble_detector = { td_enum_repository.TDAirBubbleDetectorNames.H18_ADV.name: { # Initialize status of ADV air bubble detectors to fluid (no air bubble) detected Index: leahi_dialin/td/modules/buttons.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/buttons.py (.../buttons.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/buttons.py (.../buttons.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -39,16 +39,17 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.poweroff_timeout_expired = False if self.can_interface is not None: self.msg_id_off_button_press_request = MsgIds.MSG_ID_OFF_BUTTON_PRESS_REQUEST.value self.can_interface.register_receiving_publication_function(DenaliChannels.td_to_ui_ch_id, self.msg_id_off_button_press_request, self._handler_poweroff_timeout_occurred) - self.td_power_off_timestamp = 0.0 + self.td_power_off_timestamp = 0.0 #: The timestamp of the last message + self.poweroff_timeout_expired = False #: The Power Off timeout value + def reset_poweroff_timeout_expired(self): """ Resets the dialin poweroff timeout flag to False Index: leahi_dialin/td/modules/ejector.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -47,6 +47,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_ejector_data, self._handler_ejector_sync) + self.td_ejector_timestamp = 0 #: The timestamp of the last message + + #: The TD Ejector data in dictionary format self.h5_motor = { td_enum_repository.TDEjectorNames.H5_MOTOR.name: { td_enum_repository.TDEjectorAttributes.STATE.name: 0, @@ -55,7 +58,6 @@ td_enum_repository.TDEjectorAttributes.OPT_SNSR_ENGAGE: 0 # H24 Optical Sensor } } - self.td_ejector_timestamp = 0 @publish(["msg_id_td_ejector_data", "h5_motor", "td_ejector_timestamp"]) Index: leahi_dialin/td/modules/events.py =================================================================== diff -u -r54763223059d1f2d862f6443e0f98a851fdf9f85 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/events.py (.../events.py) (revision 54763223059d1f2d862f6443e0f98a851fdf9f85) +++ leahi_dialin/td/modules/events.py (.../events.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -19,7 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -38,10 +38,6 @@ super().__init__() self.can_interface = can_interface self.logger = logger - self.td_events_timestamp = 0.0 - self.td_event_op_mode = 0 - self.td_event_sub_mode = 0 - self.td_event_op_mode_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.td_sync_broadcast_ch_id @@ -53,9 +49,10 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_op_mode_data, self._handler_td_op_mode_sync) - # Define the dictionaries - self._td_event_dictionary = dict() - self._td_event_data_type = dict() + self.td_events_timestamp = 0.0 #: The timestamp of the last Event message + self.td_event_op_mode = 0 #: The new Operation Mode value + self.td_event_sub_mode = 0 #: The new Operation Sub-Mode value + self.td_event_op_mode_timestamp = 0.0 #: The timestamp of the last Operation Mode change message # Dictionary of the mode as key and the sub mode states enum class as the value self._td_op_mode_2_sub_mode = {td_enum_repository.TDOpModes.MODE_FAUL.name: td_enum_repository.TDFaultStates, @@ -67,6 +64,10 @@ td_enum_repository.TDOpModes.MODE_POST.name: td_enum_repository.TDPostTreatmentStates, td_enum_repository.TDOpModes.MODE_NLEG.name: td_enum_repository.TDNotLegalStates} + # Define the dictionaries + self._td_event_dictionary = dict() + self._td_event_data_type = dict() + # Loop through the list of the TD events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. for event in td_enum_repository.TDEventList: Index: leahi_dialin/td/modules/pressure_sensors.py =================================================================== diff -u -r8b649cbfaa83006af095fe7478cebd3027570cc5 -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 8b649cbfaa83006af095fe7478cebd3027570cc5) +++ leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -45,10 +45,10 @@ self.msg_id_td_pressure_data = MsgIds.MSG_ID_TD_PRESSURE_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_pressure_data, self._handler_pressure_sync) - #: The timestamp of the latest message - self.td_pressure_timestamp = 0.0 - #: A dictionary for for TD Pressure data + self.td_pressure_timestamp = 0.0 #: The timestamp of the latest message + + #: The Pressure data in dictionary format self.td_pressure_sensors = { td_enum_repository.TDPressureSensorNames.H2_PRES.name: { td_enum_repository.TDPressureSensorAttributes.PRES.name: 0.0, @@ -67,22 +67,13 @@ } } - #: Pressure limits state value - self.pressure_limits_state = 0 - - #: Tmp Pressure value - self.tmp_pressure = 0.0 + self.pressure_limits_state = 0 #: Pressure limits state value + self.tmp_pressure = 0.0 #: Transmembrane pressure value + self.tmp_long_filtered_pressure = 0.0 #: Transmembrane average (over 10 seconds) pressure value + self.tmp_min_limit = 0.0 #: Transmembrane pressure minimum limit value + self.tmp_max_limit = 0.0 #: Transmembrane pressure maximum limit value - #: Tmp Average Pressure value - self.tmp_long_filtered_pressure = 0.0 - - #: Tmp Pressure minimum limit value - self.tmp_min_limit = 0.0 - - #: Tmp Pressure maximum limit value - self.tmp_max_limit = 0.0 - @publish([ "msg_id_td_pressure_data", "td_pressure_sensors", Index: leahi_dialin/td/modules/switches.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/switches.py (.../switches.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/switches.py (.../switches.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -46,10 +46,12 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_switches_data, self._handler_switches_sync) - self.td_switches_status = {td_enum_repository.TDSwitchNames.H9_FRONT_DOOR.name: td_enum_repository.TDSwitchStatus.CLOSED.value} - self.td_switches_timestamp = 0.0 + self.td_switches_timestamp = 0.0 #: The timestamp of the latest message + # The Switches data in dictionary format + self.td_switches_status = { td_enum_repository.TDSwitchNames.H9_FRONT_DOOR.name: td_enum_repository.TDSwitchStatus.CLOSED.value } + @publish(["msg_id_td_switches_data", "td_switches_status", "td_switches_timestamp"]) def _handler_switches_sync(self, message, timestamp=0.0): """ Index: leahi_dialin/td/modules/td_test_configs.py =================================================================== diff -u -r914620537399ff9ecc4925fc56f8b8be567d184e -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/td_test_configs.py (.../td_test_configs.py) (revision 914620537399ff9ecc4925fc56f8b8be567d184e) +++ leahi_dialin/td/modules/td_test_configs.py (.../td_test_configs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -38,15 +38,17 @@ self.can_interface = can_interface self.logger = logger - self.td_test_configs = dict() - self.td_test_configs_response_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.td_to_dialin_ch_id self.msg_id_td_send_test_config = MsgIds.MSG_ID_TD_SEND_TEST_CONFIGURATION.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_send_test_config, self._handler_td_test_config_sync) + self.td_test_configs_response_timestamp = 0.0 #: The timestamp of the latest message + self.td_test_configs = dict() #: The Test Config data in dictionary format + + def cmd_get_test_config_status(self, config: int): """ Returns the status of a test config Index: leahi_dialin/td/modules/temperature_sensors.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/temperature_sensors.py (.../temperature_sensors.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -44,10 +44,14 @@ self.msg_id_td_temperature_data = MsgIds.MSG_ID_TD_TEMPERATURE_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_temperature_data, self._handler_temperature_sync) - self.td_temperatures_status = {td_enum_repository.TDTemperatureSensorNames.H23_TEMP.name: 0.0} - self.td_temperature_timestamp = 0.0 + + self.td_temperature_timestamp = 0.0 #: The timestamp of the latest message + # The Temperature data in dictionary format + self.td_temperatures_status = { td_enum_repository.TDTemperatureSensorNames.H23_TEMP.name: 0.0 } + + @publish(["msg_id_td_temperature_data", "td_temperatures_status", "td_temperature_timestamp" Index: leahi_dialin/td/modules/treatment.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/treatment.py (.../treatment.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/treatment.py (.../treatment.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -61,67 +61,67 @@ self._handler_resp_treatment_parameters_sync) # Treatment param ranges data - self.min_tx_time = 0 - self.max_tx_time = 0 - self.min_uf_volume = 0.0 - self.max_uf_volume = 0.0 - self.min_dial_rate = 0 - self.max_dial_rate = 0 - self.tx_params_timestamp = 0 + self.min_tx_time = 0 #: Minimum Treatment time + self.max_tx_time = 0 #: Maximum Treatment time + self.min_uf_volume = 0.0 #: Minimum Ultrafiltration volume + self.max_uf_volume = 0.0 #: Maximum Ultrafiltration volume + self.min_dial_rate = 0 #: Minimum Dialysate rate + self.max_dial_rate = 0 #: Maximum Dialysate rate + self.tx_params_timestamp = 0 #: The timestamp of the latest Treatment Parameters message # Saline Bolus data - self.tgt_saline_volume = 0 # in mL - self.cum_saline_volume = 0.0 # in mL - self.bol_saline_volume = 0.0 # in mL - self.saline_bolus_state = 0 - self.saline_bolus_timestamp = 0 + self.tgt_saline_volume = 0 #: Target Saline Bolus volume in mL + self.cum_saline_volume = 0.0 #: Cum Saline Bolus volume in mL + self.bol_saline_volume = 0.0 #: Bol Saline Bolus volume in mL + self.saline_bolus_state = 0 #: The State of the Saline Bolus + self.saline_bolus_timestamp = 0 #: The timestamp of the latest Saline Bolus message # UF data - self.set_uf_volume = 0.0 # in L - self.tgt_uf_rate = 0.0 # in L/hr - self.uf_volume_delivered = 0.0 # in L - self.uf_state = 0 - self.uf_timestamp = 0 + self.set_uf_volume = 0.0 #: The Ultrafiltration volume in L + self.tgt_uf_rate = 0.0 #: The Ultrafiltration rate in L/hr + self.uf_volume_delivered = 0.0 #: How much was delivered during Ultrafiltration in L + self.uf_state = 0 #: The State of the Ultrafiltration + self.uf_timestamp = 0 #: The timestamp of the latest Ultrafiltration message # Treatment Time Data - self.tx_time_prescribed = 0 - self.tx_time_elapsed = 0 - self.tx_time_remaining = 0 - self.tx_time_timestamp = 0 + self.tx_time_prescribed = 0 #: Total Treatment duration + self.tx_time_elapsed = 0 #: How much time is elapsed in the Treatment + self.tx_time_remaining = 0 #: How much time is remaining from the Treatment + self.tx_time_timestamp = 0 #: The timestamp of the latest Treatment message # Treatment State Data - self.tx_sub_mode = 0 - self.blood_prime_state = 0 - self.dialysis_state = 0 - self.isolated_uf_state = 0 - self.tx_stop_state = 0 - self.rinseback_state = 0 - self.tx_recirc_state = 0 - self.tx_end_state = 0 - self.tx_state_timestamp = 0 + self.tx_sub_mode = 0 #: The Treatment Operation Sub-Mode + self.blood_prime_state = 0 #: The Blood Prime Operation Sub-Mode + self.dialysis_state = 0 #: The Dialysis Operation Sub-Mode + self.isolated_uf_state = 0 #: The Isolated Ultrafiltration Operation Sub-Mode + self.tx_stop_state = 0 #: The Treatment Stop Operation Sub-Mode + self.rinseback_state = 0 #: The Rinsback Operation Sub-Mode + self.tx_recirc_state = 0 #: The Recirculation Operation Sub-Mode + self.tx_end_state = 0 #: The Treatment End Operation Sub-Mode + self.tx_state_timestamp = 0 #: The timestamp of the latest Treatment State message # Treatment Parameters Data. Most recent response. - self.blood_flow_rate = 0 - self.dialysate_flow_rate = 0 - self.tx_duration = 0 - self.saline_bolus_volume = 0 - self.hep_stop_time = 0 - self.hep_time = 0 - self.acid_con = 0 - self.bicarb_con = 0 - self.dialyzer_type = 0 - self.bp_interval = 0 - self.rb_flow_rate = 0 - self.rb_volume = 0 - self.art_pressure_window = 0 - self.venous_pressure_window = 0 - self.venous_asymm_window = 0 - self.tmp_limit_window = 0 - self.dialysate_temp = 0.0 - self.hep_dispense_rate = 0.0 - self.hep_bolus_vol = 0.0 - self.uf_vol = 0.0 - self.tx_param_req_timestamp = 0 + self.blood_flow_rate = 0 #: The Blood flow rate + self.dialysate_flow_rate = 0 #: The Dialysate flow rate + self.tx_duration = 0 #: The Treatment duration + self.saline_bolus_volume = 0 #: The Saline Bolus volume + self.hep_stop_time = 0 #: The Heparin stop time + self.hep_time = 0 #: The Heparin start time + self.acid_con = 0 #: The selected Acid concentrate's option index + self.bicarb_con = 0 #: The selected Bicarb concentrate's option index + self.dialyzer_type = 0 #: The selected Dialyser option index + self.bp_interval = 0 #: The Body Pulse interval + self.rb_flow_rate = 0 #: The RB flow rate + self.rb_volume = 0 #: The RB volume + self.art_pressure_window = 0 #: The Artery pressure window duration + self.venous_pressure_window = 0 #: The Venous pressure window duration + self.venous_asymm_window = 0 #: The Venous asymmetric window duration + self.tmp_limit_window = 0 #: The Transmembrane limit window duration + self.dialysate_temp = 0.0 #: The Dialysate temperature + self.hep_dispense_rate = 0.0 #: The Heparin dispense rate + self.hep_bolus_vol = 0.0 #: The Heparin bolus volume + self.uf_vol = 0.0 #: The Ultrafiltration volume + self.tx_param_req_timestamp = 0 #: The timestamp of the latest Treatment Parameters Request message @publish(["msg_id_td_treatment_param_ranges", "min_tx_time","max_tx_time","min_uf_volume","max_uf_volume", Index: leahi_dialin/td/modules/valves.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/valves.py (.../valves.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/valves.py (.../valves.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -75,8 +75,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_valves_data, self._handler_valves_sync) - self.td_valves_timestamp = 0.0 - # A dictionary of the valves with the status + self.td_valves_timestamp = 0.0 #: The timestamp of the latest message + + # The Valves data in dictionary format self.valves_status = {td_enum_repository.TDValveNames.H1_VALV.name: {}, td_enum_repository.TDValveNames.H19_VALV.name: {}} Index: leahi_dialin/td/modules/voltages.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/modules/voltages.py (.../voltages.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/td/modules/voltages.py (.../voltages.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -44,8 +44,11 @@ self.msg_id_td_voltages_data = MsgIds.MSG_ID_TD_VOLTAGES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_voltages_data, self._handler_monitored_voltages_sync) + + self.td_voltages_timestamp = 0.0 #: The timestamp of the latest message + + #: The Voltage data in list format self.monitored_voltages = [0.0] * td_enum_repository.TDMonitoredVoltages.NUM_OF_MONITORED_VOLTAGE_LINES.value - self.td_voltages_timestamp = 0.0 @publish(["msg_id_td_voltages_data", "monitored_voltages", "td_voltages_timestamp"]) Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -rb9e9c4477d1083db8d96beafd98ae6cd96ea432f -r20c821bd230fc7689a0275a2918981669ff5cc19 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision b9e9c4477d1083db8d96beafd98ae6cd96ea432f) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) @@ -37,7 +37,7 @@ from ..common.constants import NO_RESET from ..common.msg_defs import MsgIds, MsgFieldPositions, MsgFieldPositionsFWVersions -from ..common.td_defs import td_enum_repository +from ..common import td_enum_repository from ..common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels from ..utils.base import AbstractSubSystem, publish, LogManager @@ -105,41 +105,41 @@ self.cmd_log_in_to_td() # create properties - self.td_op_mode_timestamp = 0.0 - self.td_debug_events_timestamp = 0.0 - self.ui_version_info_response_timestamp = 0.0 - self.td_version_response_timestamp = 0.0 - self.td_operation_mode = td_enum_repository.TDOpModes.MODE_INIT.value - self.td_operation_sub_mode = 0 - self.td_logged_in = False + self.td_op_mode_timestamp = 0.0 #: The timestamp of the latest operation mode message + self.td_debug_events_timestamp = 0.0 #: The timestamp of the latest events message + self.ui_version_info_response_timestamp = 0.0 #: The timestamp of the latest UI version info message + self.td_version_response_timestamp = 0.0 #: The timestamp of the latest TD version info message + self.td_operation_mode = td_enum_repository.TDOpModes.MODE_INIT.value #: The Operation Mode's value + self.td_operation_sub_mode = 0 #: The Operation Sub-Mode's value + self.td_logged_in = False #: The value showing if the user is logged in or not self.td_set_logged_in_status(False) - self.ui_version = None - self.td_version = None - self.td_fpga_version = None - self.td_debug_events = [''] * self._TD_DEBUG_EVENT_LIST_COUNT - self.td_debug_event_index = 0 - self.td_last_debug_event = '' + self.ui_version = None #: The UI's version value + self.td_version = None #: The TD's version value + self.td_fpga_version = None #: The TD's FPGA version value + self.td_debug_events = [''] * self._TD_DEBUG_EVENT_LIST_COUNT #: The Debug Event's list + self.td_debug_event_index = 0 #: The index of the last Event + self.td_last_debug_event = '' #: The name of the last Event # Create command groups - self.air_pump = TDAirPump(self.can_interface, self.logger) - self.air_trap = TDAirTrap(self.can_interface, self.logger) - self.alarms = TDAlarms(self.can_interface, self.logger) - self.blood_flow = TDBloodFlow(self.can_interface, self.logger) - self.bubbles = TDBubbleDetector(self.can_interface, self.logger) - self.buttons = TDButtons(self.can_interface, self.logger) - self.ejector = TDEjector(self.can_interface, self.logger) - self.events = TDEvents(self.can_interface, self.logger) - self.pressure_sensors = TDPressureSensors(self.can_interface, self.logger) - self.switches = TDSwitches(self.can_interface, self.logger) - self.temperature_sensors = TDTemperatureSensors(self.can_interface, self.logger) - self.treatment = TDTreatment(self.can_interface, self.logger) - self.test_configs = TDTestConfig(self.can_interface, self.logger) - self.valves = TDValves(self.can_interface, self.logger) - self.voltages = TDVoltages(self.can_interface, self.logger) + self.air_pump = TDAirPump(self.can_interface, self.logger) #: The Air Pump module + self.air_trap = TDAirTrap(self.can_interface, self.logger) #: The Air Trap module + self.alarms = TDAlarms(self.can_interface, self.logger) #: The Alarms module + self.blood_flow = TDBloodFlow(self.can_interface, self.logger) #: The Blood Flow module + self.bubbles = TDBubbleDetector(self.can_interface, self.logger) #: The Bubble Detector module + self.buttons = TDButtons(self.can_interface, self.logger) #: The Buttons module + self.ejector = TDEjector(self.can_interface, self.logger) #: The Ejector module + self.events = TDEvents(self.can_interface, self.logger) #: The Events module + self.pressure_sensors = TDPressureSensors(self.can_interface, self.logger) #: The Pressure Sensors module + self.switches = TDSwitches(self.can_interface, self.logger) #: The Switches module + self.temperature_sensors = TDTemperatureSensors(self.can_interface, self.logger) #: The Temperature Sensprs module + self.treatment = TDTreatment(self.can_interface, self.logger) #: The Treatment module + self.test_configs = TDTestConfig(self.can_interface, self.logger) #: The Test Configs module + self.valves = TDValves(self.can_interface, self.logger) #: The Valves module + self.voltages = TDVoltages(self.can_interface, self.logger) #: The Voltages module - self.dd_proxy = DDProxy(self.can_interface, self.logger) - self.ui_proxy = UIProxy(self.can_interface, self.logger) + self.dd_proxy = DDProxy(self.can_interface, self.logger) #: The DD Proxy module (imitates commands sent by DD) + self.ui_proxy = UIProxy(self.can_interface, self.logger) #: The UI Proxy module (imitates commands sent by UI) @publish(["msg_id_td_debug_event", "td_debug_events_timestamp","td_debug_events"]) @@ -165,12 +165,12 @@ self.td_debug_event_index = 0 - @publish(["td_logged_in"]) def td_set_logged_in_status(self, logged_in: bool = False): """ Callback for td logged in status change. - @param logged_in boolean logged in status for TD - @return: none + + @param logged_in: Logged in status for TD + @return: None """ self.td_logged_in = logged_in