Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r4180ef16e74251c6eb83501a396aaa9a0a892b6b -rd6827e997b3d9a9eb5a586505802458184e1d68e --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 4180ef16e74251c6eb83501a396aaa9a0a892b6b) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision d6827e997b3d9a9eb5a586505802458184e1d68e) @@ -127,7 +127,8 @@ self.hd_no_transmit_msg_list = [0, 0, 0, 0, 0, 0, 0, 0] self.ui_version = None self.hd_debug_events = [''] * self._HD_DEBUG_EVENT_LIST_COUNT - self._hd_debug_event_index = 0 + self.hd_debug_event_index = 0 + self.hd_last_debug_event = '' # Create command groups self.accel = HDAccelerometer(self.can_interface, self.logger) @@ -212,14 +213,12 @@ char, char_index = bytearray_to_byte(payload, index + i, False) temp_message += chr(char) - self._hd_debug_event_index = 0 if self._hd_debug_event_index == self._HD_DEBUG_EVENT_LIST_COUNT - 1 else \ - self._hd_debug_event_index + self.hd_debug_event_index = 0 if self.hd_debug_event_index == self._HD_DEBUG_EVENT_LIST_COUNT - 1 else \ + self.hd_debug_event_index + 1 - self.hd_debug_events.insert(self._hd_debug_event_index, temp_message) + self.hd_debug_events.insert(self.hd_debug_event_index, temp_message) + self.hd_last_debug_event = temp_message - # Print the latest received message from the debug event to the console - #print(temp_message) - @publish(["hd_logged_in"]) def hd_set_logged_in_status(self, logged_in: bool = False): """ Index: dialin/hd/pretreatment.py =================================================================== diff -u -r565cbfbc0d9c1441dec7c2b51cc7ce52b9e86020 -rd6827e997b3d9a9eb5a586505802458184e1d68e --- dialin/hd/pretreatment.py (.../pretreatment.py) (revision 565cbfbc0d9c1441dec7c2b51cc7ce52b9e86020) +++ dialin/hd/pretreatment.py (.../pretreatment.py) (revision d6827e997b3d9a9eb5a586505802458184e1d68e) @@ -15,6 +15,7 @@ ############################################################################ import struct from logging import Logger +from enum import unique from ..common import (PreTreatmentSubModes, PreTreatmentSampleWaterStates, @@ -25,9 +26,22 @@ 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): """ @@ -71,6 +85,7 @@ 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 @@ -211,7 +226,8 @@ "pre_treatment_prime_state", "pre_treatment_recirc_state", "pre_treatment_patient_connection_state", - "pre_treatment_wet_self_test_state" + "pre_treatment_wet_self_test_state", + "pre_treatment_reservoir_state" ]) def _handler_pre_treatment_state_sync(self, message): """ @@ -241,6 +257,9 @@ 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 Index: tests/dg_tests.py =================================================================== diff -u -r79e55000ceaa2a703259880c1244e577f83fcc0f -rd6827e997b3d9a9eb5a586505802458184e1d68e --- tests/dg_tests.py (.../dg_tests.py) (revision 79e55000ceaa2a703259880c1244e577f83fcc0f) +++ tests/dg_tests.py (.../dg_tests.py) (revision d6827e997b3d9a9eb5a586505802458184e1d68e) @@ -41,6 +41,7 @@ from dialin.dg.conductivity_sensors import ConductivitySensorsEnum from dialin.dg.voltages import DGMonitoredVoltages from dialin.hd.valves import HDValves +from dialin.hd.pretreatment import PreTreatmentRsrvrState from time import sleep from datetime import datetime import sys @@ -76,14 +77,15 @@ def get_hd_run_info(): info = ('HD_op_mode, {}, HD_sub_mode, {}, Top_alarm, {}, Target_UF_ml, {:5.3f}, Meas_UF_ml, {:5.3f}, ' - 'Wet_test_state, {}, Post_tx_state, {}, Post_tx_drain_state, {}, Prime_state, {}, ' + 'Wet_test_state, {}, Post_tx_state, {}, Post_tx_drain_state, {}, Prime_state, {}, Pre_Tx_rsrvr_state, {}, ' .format(HDOpModes(hd.hd_operation_mode).name, hd.hd_operation_sub_mode, hd.alarms.alarm_top, hd.dialysate_outlet_flow.reference_dialysate_outlet_uf_volume, hd.dialysate_outlet_flow.measured_dialysate_outlet_uf_volume, PreTreatmentWetSelfTesStates(hd.pretreatment.pre_treatment_wet_self_test_state).name, PostTreatmentStates(hd.post_treatment.post_treatment_sub_mode).name, HDPostTreatmentDrainStates(hd.post_treatment.post_treatment_drain_state).name, - hd.pretreatment.pre_treatment_prime_state)) + hd.pretreatment.pre_treatment_prime_state, + PreTreatmentRsrvrState(hd.pretreatment.pre_treatment_reservoir_state).name)) return info