Index: dialin/common/hd_defs.py =================================================================== diff -u -r9376870ba45b37ed3c0c8e09c061bfcba26d4087 -r5f99b746f44410e1f973a50392f3ad31ccc24d96 --- dialin/common/hd_defs.py (.../hd_defs.py) (revision 9376870ba45b37ed3c0c8e09c061bfcba26d4087) +++ dialin/common/hd_defs.py (.../hd_defs.py) (revision 5f99b746f44410e1f973a50392f3ad31ccc24d96) @@ -7,8 +7,8 @@ # # @file hd_defs.py # -# @author (last) Micahel Garthwaite -# @date (last) 09-Mar-2022 +# @author (last) Dara Navaei +# @date (last) 13-May-2022 # @author (original) Peter Lucia # @date (original) 04-Dec-2020 # @@ -113,17 +113,20 @@ @unique -class PreTreatmentDrySelfTestStates(DialinEnum): - DRY_SELF_TESTS_START_STATE = 0 - DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 - DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE = 2 - DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 3 - DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 4 - DRY_SELF_TESTS_PRESSURE_SENSORS_STATE = 5 - DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 6 - DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE = 7 - DRY_SELF_TESTS_STOPPED_STATE = 8 - DRY_SELF_TESTS_COMPLETE_STATE = 9 +class PreTreatmentWetSelfTesStates(DialinEnum): + WET_SELF_TESTS_START_STATE = 0 + WET_SELF_TESTS_SETUP_STATE = 1 + WET_SELF_TESTS_BUBBLES_STATE = 2 + WET_SELF_TESTS_PRIME_CHECK_STATE = 3 + WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_STATE = 4 + WET_SELF_TESTS_FIRST_DISPLACEMENT_SETUP_STATE = 5 + WET_SELF_TESTS_FIRST_DISPLACEMENT_STATE = 6 + WET_SELF_TESTS_FIRST_DISPLACEMENT_VERIFY_STATE = 7 + WET_SELF_TESTS_SECOND_DISPLACEMENT_SETUP_STATE = 8 + WET_SELF_TESTS_SECOND_DISPLACEMENT_STATE = 9 + WET_SELF_TESTS_SECOND_DISPLACEMENT_VERIFY_STATE = 10 + WET_SELF_TESTS_STOPPED_STATE = 11 + WET_SELF_TESTS_COMPLETE_STATE = 12 @unique Index: dialin/hd/alarms.py =================================================================== diff -u -rc034b74d1d2ec9469e89bb7e6d4cdac5e20f2124 -r5f99b746f44410e1f973a50392f3ad31ccc24d96 --- dialin/hd/alarms.py (.../alarms.py) (revision c034b74d1d2ec9469e89bb7e6d4cdac5e20f2124) +++ dialin/hd/alarms.py (.../alarms.py) (revision 5f99b746f44410e1f973a50392f3ad31ccc24d96) @@ -7,8 +7,8 @@ # # @file alarms.py # -# @author (last) Dara Navaei -# @date (last) 22-Feb-2022 +# @author (last) Sean Nash +# @date (last) 31-Mar-2022 # @author (original) Peter Lucia # @date (original) 02-Apr-2020 # @@ -89,7 +89,7 @@ self._handler_alarm_information_sync) # composite alarm status based on latest HD alarm status broadcast message - self.alarms_state = 0 + self.alarms_priority_state = 0 self.alarm_top = 0 self.alarms_silence_expires_in = 0 self.alarms_escalates_in = 0 Index: dialin/hd/pretreatment.py =================================================================== diff -u -rc034b74d1d2ec9469e89bb7e6d4cdac5e20f2124 -r5f99b746f44410e1f973a50392f3ad31ccc24d96 --- dialin/hd/pretreatment.py (.../pretreatment.py) (revision c034b74d1d2ec9469e89bb7e6d4cdac5e20f2124) +++ dialin/hd/pretreatment.py (.../pretreatment.py) (revision 5f99b746f44410e1f973a50392f3ad31ccc24d96) @@ -7,27 +7,41 @@ # # @file pretreatment.py # -# @author (last) Quang Nguyen -# @date (last) 07-Jul-2021 +# @author (last) Dara Navaei +# @date (last) 18-Jun-2022 # @author (original) Quang Nguyen # @date (original) 02-Mar-2021 # ############################################################################ import struct from logging import Logger +from enum import unique from ..common import (PreTreatmentSubModes, PreTreatmentSampleWaterStates, PreTreatmentConsumableSelfTestStates, PreTreatmentRecircStates, PreTreatmentNoCartSelfTestStates, - PreTreatmentDrySelfTestStates, + PreTreatmentDrySelfTestsStates, PreTreatmentPrimeStates) from ..common.msg_defs import MsgIds, MsgFieldPositions from ..protocols.CAN import DenaliChannels -from ..utils.base import AbstractSubSystem, publish +from ..utils.base import AbstractSubSystem, publish, DialinEnum +@unique +class PreTreatmentRsrvrState(DialinEnum): + PRE_TREATMENT_RESERVOIR_MGMT_START_STATE = 0 + PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE = 1 + PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE = 2 + PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE = 3 + PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE = 4 + PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE = 5 + PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE = 6 + PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE = 7 + NUM_OF_PRE_TREATMENT_RESERVOIR_MGMT_STATES = 8 + + class HDPreTreatment(AbstractSubSystem): """ @@ -70,6 +84,8 @@ self.pre_treatment_prime_state = 0 self.pre_treatment_recirc_state = 0 self.pre_treatment_patient_connection_state = 0 + self.pre_treatment_wet_self_test_state = 0 + self.pre_treatment_reservoir_state = 0 self.no_cart_self_test_timeout = 0 self.no_cart_self_test_time_countdown = 0 @@ -200,6 +216,14 @@ """ return self.prime_time_countdown + def get_wet_self_test_state(self): + """ + Gets the pre-treatment wet self test state + + @return: The pre-treatment wet self test state + """ + return self.pre_treatment_wet_self_test_state + @publish([ "pre_treatment_submode", "pre_treatment_sample_water_state", @@ -210,6 +234,8 @@ "pre_treatment_prime_state", "pre_treatment_recirc_state", "pre_treatment_patient_connection_state", + "pre_treatment_wet_self_test_state", + "pre_treatment_reservoir_state" ]) def _handler_pre_treatment_state_sync(self, message): """ @@ -219,24 +245,29 @@ @return: none """ - pt_submode = struct.unpack('i', bytearray( + self.pre_treatment_submode = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - pt_sw_state = struct.unpack('i', bytearray( + self.pre_treatment_sample_water_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - pt_consumable_st_state = struct.unpack('i', bytearray( + self.pre_treatment_consumable_self_test_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - pt_no_cart_st_state = struct.unpack('i', bytearray( + self.pre_treatment_no_cart_self_test_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] self.pre_treatment_installation_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - pt_dry_st_state = struct.unpack('i', bytearray( + self.pre_treatment_dry_self_test_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - pt_prime_state = struct.unpack('i', bytearray( + self.pre_treatment_prime_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - pt_recirc_state = struct.unpack('i', bytearray( + self.pre_treatment_recirc_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] self.pre_treatment_patient_connection_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + self.pre_treatment_wet_self_test_state = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] + # Yes, I know we should do the new way, but we we need a task to cover all these in one shot! + self.pre_treatment_reservoir_state = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] self.pre_treatment_submode = pt_submode self.pre_treatment_sample_water_state = pt_sw_state @@ -257,7 +288,6 @@ @param message: published no cartridge self-test progress data message @return: None """ - self.no_cart_self_test_timeout = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] self.no_cart_self_test_time_countdown = struct.unpack('i', bytearray(