Fisheye: Tag b99f3b5e496bf9451625ba7b0acc63a0e2d073b4 refers to a dead (removed) revision in file `dialin/dg/SampleWater.py'. Fisheye: No comparison available. Pass `N' to diff? Index: dialin/dg/samplewater.py =================================================================== diff -u --- dialin/dg/samplewater.py (revision 0) +++ dialin/dg/samplewater.py (revision b99f3b5e496bf9451625ba7b0acc63a0e2d073b4) @@ -0,0 +1,79 @@ +########################################################################### +# +# Copyright (c) 2019-2021 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 samplewater.py +# +# @author (last) Quang Nguyen +# @date (last) 02-Mar-2021 +# @author (original) Quang Nguyen +# @date (original) 02-Mar-2021 +# +############################################################################ +import struct +from ..protocols.CAN import DenaliChannels +from ..utils.base import _AbstractSubSystem, _publish +from ..common.msg_defs import MsgIds, MsgFieldPositions +from logging import Logger + +class DGSampleWater(_AbstractSubSystem): + """ + + Dialysate Generator (DG) Dialin API sub-class for sample water related commands. + + """ + + def __init__(self, can_interface, logger: Logger): + """ + DGSampleWater constructor + """ + + super().__init__() + self.can_interface = can_interface + self.logger = logger + + if self.can_interface is not None: + channel_id = DenaliChannels.hd_sync_broadcast_ch_id + msg_id = MsgIds.MSG_ID_DG_FILTER_FLUSH_PROGRESS.value + self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self._handler_filter_flush_progress_sync) + + self.filter_flush_timeout = 0 + self.filter_flush_time_countdown = 0 + + def get_filter_flush_timeout(self): + """ + Gets the filter flush timeout + + @return: The filter flush timeout + """ + return self.filter_flush_timeout + + def get_filter_flush_time_countdown(self): + """ + Gets the filter flush time countdown + + @return: The filter flush time countdown + """ + return self.filter_flush_time_countdown + + + @_publish([ + "filter_flush_timeout", + "filter_flush_time_countdown" + ]) + def _handler_filter_flush_progress_sync(self, message): + """ + Handles published filter flush progress data messages. Filter flush progress data are captured for reference. + + @param message: published filter flush progress data message + @return: None + """ + + self.filter_flush_timeout = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.filter_flush_time_countdown = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] Index: dialin/hd/pretreatment.py =================================================================== diff -u -r84bc297f6f9b0c6594b73ac1045ad64f8f6e347d -rb99f3b5e496bf9451625ba7b0acc63a0e2d073b4 --- dialin/hd/pretreatment.py (.../pretreatment.py) (revision 84bc297f6f9b0c6594b73ac1045ad64f8f6e347d) +++ dialin/hd/pretreatment.py (.../pretreatment.py) (revision b99f3b5e496bf9451625ba7b0acc63a0e2d073b4) @@ -14,21 +14,83 @@ # ############################################################################ import struct -from ..protocols.CAN import (DenaliMessage, - DenaliChannels) -from ..utils.base import _AbstractSubSystem, _publish -from ..utils.conversions import integer_to_bytearray, float_to_bytearray +from ..protocols.CAN import DenaliChannels +from ..utils.base import _AbstractSubSystem, _publish, DialinEnum from ..common.msg_defs import MsgIds, MsgFieldPositions from logging import Logger +@unique +class PreTreatmentSubModes(DialinEnum): + HD_PRE_TREATMENT_START_STATE = 0 + HD_PRE_TREATMENT_WATER_SAMPLE_STATE = 1 + HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE = 2 + HD_PRE_TREATMENT_CART_INSTALL_STATE = 3 + HD_PRE_TREATMENT_SELF_TEST_DRY_STATE = 4 + HD_PRE_TREATMENT_PRIME_STATE = 5 + HD_PRE_TREATMENT_RECIRCULATE_STATE = 6 + HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE = 7 + +@unique +class PreTreatmentSampleWaterStates(DialinEnum): + SAMPLE_WATER_SETUP_STATE = 0 + SAMPLE_WATER_STATE = 1 + +@unique +class PreTreatmentNoCartSelfTestStates(DialinEnum): + NO_CART_SELF_TESTS_START_STATE = 0 + NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 + NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE = 2 + NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE = 3 + NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE = 4 + NO_CART_SELF_TESTS_PUMPS_STATE = 5 + NO_CART_SELF_TESTS_LEAK_DETECTORS_STATE = 6 + NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE = 7 + NO_CART_SELF_TESTS_DOOR_SWITCH_STATE = 8 + NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE = 9 + NO_CART_SELF_TESTS_HOME_IDLE_STATE = 10 + NO_CART_SELF_TESTS_STOPPED_STATE = 11 + NO_CART_SELF_TESTS_COMPLETE_STATE = 12 + +@unique +class PreTreatmentDrySelfTestStates(DialinEnum): + DRY_SELF_TESTS_START_STATE = 0 + DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 + DRY_SELF_TESTS_BUBBLE_DETECTOR_STATE = 2 + DRY_SELF_TESTS_AIR_TRAP_STATE = 3 + DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 4 + DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 5 + DRY_SELF_TESTS_PRESSURE_SENSORS_STATE = 6 + DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 7 + DRY_SELF_TESTS_STOPPED_STATE = 8 + DRY_SELF_TESTS_COMPLETE_STATE = 9 + +@unique +class PreTreatmentPrimeStates(DialinEnum): + HD_PRIME_START_STATE = 0 + HD_PRIME_WAIT_FOR_USER_START_STATE = 1 + HD_PRIME_SALINE_SETUP_STATE = 2 + HD_PRIME_SALINE_PURGE_AIR_STATE = 3 + HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE = 4 + HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE = 5 + HD_PRIME_DIALYSATE_DIALYZER_STATE = 6 + HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE = 7 + HD_PRIME_DIALYSATE_BYPASS_STATE = 8 + HD_PRIME_WET_SELF_TESTS_STATE = 9 + HD_PRIME_PAUSE = 10 + HD_PRIME_COMPLETE = 11 + +@unique +class PreTreatmentRecircStates(DialinEnum): + PRE_TREATMENT_RECIRC_STATE = 0 + PRE_TREATMENT_RECIRC_STOPPED_STATE = 1 + class HDPreTreatment(_AbstractSubSystem): """ Hemodialysis Delivery (HD) Dialin API sub-class for pretreatment related commands. """ - def __init__(self, can_interface, logger: Logger): """ HDPreTreatment constructor @@ -138,19 +200,47 @@ @return: none """ - self.pre_treatment_submode = struct.unpack('i', bytearray( + pt_submode = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.pre_treatment_sample_water_state = struct.unpack('i', bytearray( + pt_sw_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.pre_treatment_no_cart_self_test_state = struct.unpack('i', bytearray( + pt_no_cart_st_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] self.pre_treatment_installation_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.pre_treatment_dry_self_test_state = struct.unpack('i', bytearray( + pt_dry_st_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.pre_treatment_prime_state = struct.unpack('i', bytearray( + pt_prime_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.pre_treatment_recirc_state = struct.unpack('i', bytearray( + pt_recirc_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] self.pre_treatment_patient_connection_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + + self.pre_treatment_submode = 'Unknown SubMode' + if PreTreatmentSubModes.has_value(pt_submode): + self.pre_treatment_submode = PreTreatmentSubModes(pt_submode).name + + self.pre_treatment_sample_water_state = 'Unknown State' + if PreTreatmentSampleWaterStates.has_value(pt_sw_state): + self.pre_treatment_sample_water_state = PreTreatmentSampleWaterStates(pt_sw_state).name + + self.pre_treatment_no_cart_self_test_state = 'Unknown State' + if PreTreatmentNoCartSelfTestStates.has_value(pt_no_cart_st_state): + self.pre_treatment_no_cart_self_test_state = PreTreatmentNoCartSelfTestStates(pt_no_cart_st_state).name + + self.pre_treatment_dry_self_test_state = 'Unknown State' + if PreTreatmentDrySelfTestStates.has_value(pt_dry_st_state): + self.pre_treatment_dry_self_test_state = PreTreatmentDrySelfTestStates(pt_dry_st_state).name + + self.pre_treatment_dry_self_test_state = 'Unknown State' + if PreTreatmentDrySelfTestStates.has_value(pt_dry_st_state): + self.pre_treatment_dry_self_test_state = PreTreatmentDrySelfTestStates(pt_dry_st_state).name + + self.pre_treatment_prime_state = 'Unknown State' + if PreTreatmentPrimeStates.has_value(pt_prime_state): + self.pre_treatment_prime_state = PreTreatmentPrimeStates(pt_prime_state).name + + self.pre_treatment_recirc_state = 'Unknown State' + if PreTreatmentRecircStates.has_value(pt_recirc_state): + self.pre_treatment_recirc_state = PreTreatmentRecircStates(pt_recirc_state).name