Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -rd3908380125bee708df73dc2150d675daa46f233 -re5dff1d567324c947da0a9526977aa50e42668ee --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision d3908380125bee708df73dc2150d675daa46f233) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision e5dff1d567324c947da0a9526977aa50e42668ee) @@ -184,10 +184,13 @@ MSG_ID_UI_WATER_SAMPLE_RESULT_REQUEST = 0XA3 MSG_ID_UI_PRESSURE_LIMIT_WIDEN_REQUEST = 0xA4 MSG_ID_TD_PRESSURE_LIMIT_WIDEN_RESPONSE = 0xA5 - MSG_ID_UI_ADJUST_TREATMENT_LOGS_REQUEST = 0xA6 - MSG_ID_TD_ADJUST_TREATMENT_LOGS_RESPONSE = 0xA7 - MSG_ID_UI_ADJUST_PATIENT_DISCONNECT_CONFIRM_REQUEST = 0xA8 - MSG_ID_TD_ADJUST_PATIENT_DISCONNECT_CONFIRM_RESPONSE = 0xA9 + MSG_ID_UI_RECIRCULATE_REQUEST = 0xA6 + MSG_ID_TD_RECIRCULATE_RESPONSE = 0xA7 + MSG_ID_TD_RECIRCULATE_DATA = 0xA8 + MSG_ID_UI_ADJUST_TREATMENT_LOGS_REQUEST = 0xA9 + MSG_ID_TD_ADJUST_TREATMENT_LOGS_RESPONSE = 0xAA + MSG_ID_UI_ADJUST_PATIENT_DISCONNECT_CONFIRM_REQUEST = 0xAB + MSG_ID_TD_ADJUST_PATIENT_DISCONNECT_CONFIRM_RESPONSE = 0xAC MSG_ID_DD_PISTON_PUMP_CONTROL_DATA = 0xF0 Index: leahi_dialin/ui/td_messaging.py =================================================================== diff -u -rcc0f8a57488c1bf71fd938e08f368bcf67a8cff5 -re5dff1d567324c947da0a9526977aa50e42668ee --- leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision cc0f8a57488c1bf71fd938e08f368bcf67a8cff5) +++ leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision e5dff1d567324c947da0a9526977aa50e42668ee) @@ -419,6 +419,30 @@ self.can_interface.send(message, 0) + def td_treatment_stop_state( self, + total : int , + countdown : int ): + """ + Broadcasts the current TD Heparin data (Msg ID: 0xXX, XX) + Args: + @param total (int) : Total Timeout of Treatment Blood Stop + @param countdown (int) : Current Timeout count down of Treatment Blood Stop + @return: None + """ + if not self.can_enabled: + raise ValueError("CAN Interface is not enabled") + + + payload = conversions.unsigned_integer_to_bytearray (total ) + payload += conversions.unsigned_integer_to_bytearray (countdown ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_TREATMENT_PAUSED_TIMER_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + def td_vitals( self, systolic : int , diastolic : int , @@ -646,6 +670,43 @@ self.can_interface.send(message, 0) + def td_recirculate_progress(self, vTimeout: int, + vCountdown: int): + """ + rinseback progress message (Msg ID: 0x8F, 143) + Args: + @param vTimeout : (int) Total Timeout of Recirculate delivery + @param vCountdown : (int) Current Timeout count down of Recirculate delivery + @return: None + """ + payload = conversions.unsigned_integer_to_bytearray (vTimeout ) + payload += conversions.unsigned_integer_to_bytearray (vCountdown ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_RECIRCULATE_DATA.value, + payload=payload) + self.can_interface.send(message, 0) + + + def td_recirculate_cmd_response(self, vAccepted: int, vRejectionReason: int): + """ + rinseback command response message (Msg ID: 0x99, 145) + Args: + @param vRejectionReason : (int) rejection reason + @return: None + """ + payload = conversions.integer_to_bytearray(vAccepted) + payload += conversions.integer_to_bytearray(vRejectionReason) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_RECIRCULATE_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def td_isolated_uf( self, duration : int , set_volume : int , @@ -1489,73 +1550,88 @@ def td_Treatment_Parameters_Validation( self, - vAccepted : int = 1, - vBloodFlowRateRejectReason : int = 0, - vDialysateFlowRateRejectReason : int = 0, - vTreatmentDurationRejectReason : int = 0, - vSalineBolusVolumeRejectReason : int = 0, - vHeparinStopTimeRejectReason : int = 0, - vHeparinTypeRejectReason : int = 0, - vAcidConcentrateRejectReason : int = 0, - vBicarbonateConcentrateRejectReason : int = 0, - vDialyzerTypeRejectReason : int = 0, - vBloodPressureMeasureIntervalRejectReason : int = 0, - vRinsebackFlowRateRejectReason : int = 0, - vRinsebackVolumeRejectReason : int = 0, - vArterialPressureLimitWindowRejectReason : int = 0, - vVenousPressureLimitWindowRejectReason : int = 0, - vVenousPressureLimitAsymtrcRejectReason : int = 0, - vTransmembranePressureLimitWindowRejectReason : int = 0, - vDialysateTempRejectReason : int = 0, - vHeparinDispensingRateRejectReason : int = 0, - vHeparinBolusVolumeRejectReason : int = 0 + vAccepted : int = 1, + vTreatmentModalityRejectReason : int = 0, + vHDFTreatmentModeRejectReason : int = 0, + vBloodFlowRateRejectReason : int = 0, + vDialysateFlowRateRejectReason : int = 0, + vTreatmentDurationRejectReason : int = 0, + vHeparinDeliveryDurationRejectReason : int = 0, + vHeparinTypeRejectReason : int = 0, + vDryBicarbCartSizeRejectReason : int = 0, + vSodiumRejectReason : int = 0, + vBicarbonateRejectReason : int = 0, + vDialyzerTypeRejectReason : int = 0, + vFluidBolusVolumeRejectReason : int = 0, + vBloodPressureMeasureIntervalRejecteason : int = 0, + vRinsebackVolumeRejectReason : int = 0, + vHepatitusBStatusRejectReason : int = 0, + vAcidConcentrateIndextRejectReason : int = 0, + vSubstitutionFluidVolumeRejecteason : int = 0, + vHeparinBolusVolumeRejectReason : int = 0, + vHeparinDispensingRateRejecteason : int = 0, + vDialysateTempRejectReason : int = 0, + vAcidConcentrateConversionFactorRejectReason : int = 0, + vUFPreWeightRejectReason : int = 0, + vUFEstimatedTargetWeightRejectReason : int = 0, + vUFVolumeRejectReason : int = 0 ): """TD Treatment Parameter Validation Response to the SW validation request with sent values of the same parameters.(Msg ID: 0x40, 64) Args: vAccepted (int, optional): Zero value if rejected. Defaults to 1. + vTreatmentModalityRejectTReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHDFTreatmentModeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. vBloodFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. vDialysateFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. vTreatmentDurationRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vSalineBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinStopTimeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinDeliveryDurationRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. vHeparinTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vAcidConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vBicarbonateConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vDryBicarbCartSizeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vSodiumRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vBicarbonateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. vDialyzerTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vBloodPressureMeasureIntervalRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vRinsebackFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vFluidBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vBloodPressureMeasureIntervalRejecteason (int, optional): None zero value of rejection reason. Defaults to 0. vRinsebackVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vArterialPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vVenousPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vVenousPressureLimitAsymtrcRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vTransmembranePressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vDialysateTempRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinDispensingRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHepatitusBStatusRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vAcidConcentrateIndextRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vSubstitutionFluidVolumeRejecteason (int, optional): None zero value of rejection reason. Defaults to 0. vHeparinBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinDispensingRateRejecteason (int, optional): None zero value of rejection reason. Defaults to 0. + vDialysateTempRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vAcidConcentrateConversionFactorRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vUFPreWeightRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vUFEstimatedTargetWeightRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vUFVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. """ if not self.can_enabled: raise ValueError("CAN Interface is not enabled") payload = conversions.integer_to_bytearray(vAccepted ) + payload += conversions.integer_to_bytearray(vTreatmentModalityRejectReason ) + payload += conversions.integer_to_bytearray(vHDFTreatmentModeRejectReason ) payload += conversions.integer_to_bytearray(vBloodFlowRateRejectReason ) payload += conversions.integer_to_bytearray(vDialysateFlowRateRejectReason ) payload += conversions.integer_to_bytearray(vTreatmentDurationRejectReason ) - payload += conversions.integer_to_bytearray(vSalineBolusVolumeRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinStopTimeRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinDeliveryDurationRejectReason ) payload += conversions.integer_to_bytearray(vHeparinTypeRejectReason ) - payload += conversions.integer_to_bytearray(vAcidConcentrateRejectReason ) - payload += conversions.integer_to_bytearray(vBicarbonateConcentrateRejectReason ) + payload += conversions.integer_to_bytearray(vDryBicarbCartSizeRejectReason ) + payload += conversions.integer_to_bytearray(vSodiumRejectReason ) + payload += conversions.integer_to_bytearray(vBicarbonateRejectReason ) payload += conversions.integer_to_bytearray(vDialyzerTypeRejectReason ) - payload += conversions.integer_to_bytearray(vBloodPressureMeasureIntervalRejectReason ) - payload += conversions.integer_to_bytearray(vRinsebackFlowRateRejectReason ) + payload += conversions.integer_to_bytearray(vFluidBolusVolumeRejectReason ) + payload += conversions.integer_to_bytearray(vBloodPressureMeasureIntervalRejecteason ) payload += conversions.integer_to_bytearray(vRinsebackVolumeRejectReason ) - payload += conversions.integer_to_bytearray(vArterialPressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vVenousPressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vVenousPressureLimitAsymtrcRejectReason ) - payload += conversions.integer_to_bytearray(vTransmembranePressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vDialysateTempRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinDispensingRateRejectReason ) + payload += conversions.integer_to_bytearray(vHepatitusBStatusRejectReason ) + payload += conversions.integer_to_bytearray(vAcidConcentrateIndextRejectReason ) + payload += conversions.integer_to_bytearray(vSubstitutionFluidVolumeRejecteason ) payload += conversions.integer_to_bytearray(vHeparinBolusVolumeRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinDispensingRateRejecteason ) + payload += conversions.integer_to_bytearray(vDialysateTempRejectReason ) + payload += conversions.integer_to_bytearray(vAcidConcentrateConversionFactorRejectReason ) + payload += conversions.integer_to_bytearray(vUFPreWeightRejectReason ) + payload += conversions.integer_to_bytearray(vUFEstimatedTargetWeightRejectReason ) + payload += conversions.integer_to_bytearray(vUFVolumeRejectReason ) message = CAN.DenaliMessage.build_message( channel_id=CAN.DenaliChannels.td_to_ui_ch_id, @@ -1607,7 +1683,48 @@ payload=payload) self.can_interface.send(message, 0) - + + + def td_treatment_log_alarm(self, alarm_id: int, parameter1: float, parameter2: float) -> None: + """ + send the treatment log data + @param alarm_id: (U32) alarm ID + @param parameter1: (F32) paramter 1 (it's not clear yet how many paramters with what type is required and this is only plceholder) + @param parameter2: (F32) paramter 2 (it's not clear yet how many paramters with what type is required and this is only plceholder) + @return: None + """ + payload = conversions.integer_to_bytearray(alarm_id) + payload += conversions.float_to_bytearray(parameter1) + payload += conversions.float_to_bytearray(parameter2) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_TREATMENT_LOG_ALARM_EVENT.value, + payload=payload) + + self.can_interface.send(message, 0) + + + def td_treatment_log_event(self, event_id: int, old_value: float, new_value: float) -> None: + """ + send the treatment log data + @param event_id: (U32) alarm ID + @param old_value: (F32) the old value + @param new_value: (F32) the new value + @return: none + """ + payload = conversions.integer_to_bytearray(event_id) + payload += conversions.float_to_bytearray(old_value) + payload += conversions.float_to_bytearray(new_value) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_TREATMENT_LOG_EVENT.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_general_response(self, message_id: int, accepted: int, reason: int, is_pure_data: bool = False, has_parameters: bool = False,