Index: dialin/hd/blood_leak.py =================================================================== diff -u -re1008cdd3b140315922506f5475096714e34aead -r23701b1b99fa209da9d0f9f8a60c555d4a8277e6 --- dialin/hd/blood_leak.py (.../blood_leak.py) (revision e1008cdd3b140315922506f5475096714e34aead) +++ dialin/hd/blood_leak.py (.../blood_leak.py) (revision 23701b1b99fa209da9d0f9f8a60c555d4a8277e6) @@ -95,6 +95,8 @@ self.blood_leak_intensity = 0 self.blood_leak_blood_detect = 0 self.blood_leak_intensity_moving_average = 0.0 + self.blood_leak_time_elapsed_since_last_drift_zero_ms = 0 + self.blood_leak_time_elapsed_since_last_upper_zero_ms = 0 for cmd in EmbModeCommands.__members__: # Initialize all the embedded mode commands @@ -133,7 +135,8 @@ @publish(['hd_blood_leak_status_timestamp', 'blood_leak_status', 'blood_leak_state', 'blood_leak_error_persistent_ctr', 'blood_leak_serial_comm_state', 'blood_leak_intensity', - 'blood_leak_blood_detect', 'blood_leak_intensity_moving_average']) + 'blood_leak_blood_detect', 'blood_leak_intensity_moving_average', 'blood_leak_time_since_last_zero_ms', + 'blood_leak_time_since_last_upper_zero_ms']) def _handler_blood_leak_sync(self, message, timestamp=0.0): """ Handles published blood leak status messages. Blood leak status is captured @@ -156,6 +159,10 @@ message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] self.blood_leak_intensity_moving_average = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] + self.blood_leak_time_elapsed_since_last_drift_zero_ms = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] + self.blood_leak_time_elapsed_since_last_upper_zero_ms = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] self.hd_blood_leak_status_timestamp = timestamp def cmd_blood_leak_detector_override(self, detected: int, reset=NO_RESET): Index: dialin/hd/treatment.py =================================================================== diff -u -r1ab240b24121b71376a031db1335768aad881f36 -r23701b1b99fa209da9d0f9f8a60c555d4a8277e6 --- dialin/hd/treatment.py (.../treatment.py) (revision 1ab240b24121b71376a031db1335768aad881f36) +++ dialin/hd/treatment.py (.../treatment.py) (revision 23701b1b99fa209da9d0f9f8a60c555d4a8277e6) @@ -147,6 +147,7 @@ self.treatment_stop_state = 0 self.dialysis_state = 0 self.dialyzer_reprime_state = 0 + self.blood_leak_zeroing_state = 0 # saline bolus status self.saline_bolus_max_vol = 0 self.saline_bolus_cum_vol = 0.0 @@ -209,6 +210,7 @@ self.treatment_end_state = 0 self.treatment_stop_state = 0 self.dialysis_state = 0 + self.blood_leak_zeroing_state = 0 # saline bolus status self.saline_bolus_max_vol = 0 self.saline_bolus_cum_vol = 0.0 @@ -343,6 +345,14 @@ """ return self.dialyzer_reprime_state + def get_blood_leak_zeroing_state(self) -> int: + """ + Gets the current blood leak zeroing state + + @return: The current blood leak zeroing state + """ + return self.blood_leak_zeroing_state + def get_saline_bolus_max_volume(self) -> int: """ Returns maximum volume (in mL) saline that can be delivered to a patient @@ -533,7 +543,8 @@ "treatment_end_state", "treatment_stop_state", "dialysis_state", - "dialyzer_reprime_state" + "dialyzer_reprime_state", + "blood_leak_zeroing_state" ]) def _handler_treatment_state_sync(self, message, timestamp=0.0): """ @@ -564,6 +575,8 @@ message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])) dia = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])) + bld = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) self.treatment_state = tst[0] self.treatment_uf_state = ufs[0] @@ -575,13 +588,15 @@ self.treatment_end_state = txe[0] self.treatment_stop_state = txs[0] self.dialysis_state = dia[0] + self.blood_leak_zeroing_state = bld[0] self.hd_treatment_state_timestamp = timestamp @publish([ "hd_saline_bolus_timestamp", "saline_bolus_max_vol", "saline_bolus_cum_vol", - "saline_bolus_bol_vol", "dialysate_inlet_pump_2_bld_flush_vol_ml" + "saline_bolus_bol_vol", + "dialysate_inlet_pump_2_bld_flush_vol_ml" ]) def _handler_saline_bolus_data_sync(self, message, timestamp=0.0): """