Index: dialin/dg/heat_disinfect.py =================================================================== diff -u -r26c7b6057f11680681e0a25399b5e5be9b92818d -rb4ea9c08576e7a6064d766a0a5c81e443b3c0b4f --- dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision 26c7b6057f11680681e0a25399b5e5be9b92818d) +++ dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision b4ea9c08576e7a6064d766a0a5c81e443b3c0b4f) @@ -17,6 +17,7 @@ import struct from enum import unique from logging import Logger +from .constants import NO_RESET from ..common.msg_defs import MsgIds, MsgFieldPositions from ..protocols.CAN import DenaliMessage, DenaliChannels from ..utils.base import AbstractSubSystem, publish, DialinEnum @@ -287,3 +288,66 @@ self.logger.debug("Timeout!!!!") return False + def cmd_state_timer_82c_override(self, ms: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends timer override for heat disinfection timer at 82 C. + Constraints: + Must be logged into DG. + Given interval must greater than 60s + + @param ms: (int) state time in ms + @param reset: (int) 1 to reset a previous override, 0 to override + @returns 1 if successful, zero otherwise + """ + + reset_value = integer_to_bytearray(reset) + interval_value = integer_to_bytearray(ms) + payload = reset_value + interval_value + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE.value, + payload=payload) + + self.logger.debug("Sending {} ms to 82c state timer".format(ms)) + # Send message + received_message = self.can_interface.send(message) + + # If there is content in message + if received_message is not None: + # Response payload is OK or not + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + + def cmd_state_timer_77c_override(self, ms: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends timer override for heat disinfection timer at 77 C. + Constraints: + Must be logged into DG. + Given interval must greater than 60s + + @param ms: (int) state time in ms + @param reset: (int) 1 to reset a previous override, 0 to override + @returns 1 if successful, zero otherwise + """ + + reset_value = integer_to_bytearray(reset) + interval_value = integer_to_bytearray(ms) + payload = reset_value + interval_value + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE.value, + payload=payload) + + self.logger.debug("Sending {} ms to 77c state timer".format(ms)) + # Send message + received_message = self.can_interface.send(message) + + # If there is content in message + if received_message is not None: + # Response payload is OK or not + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r4043dc34e2ab05d243d9f46097c494d1486436ea -rb4ea9c08576e7a6064d766a0a5c81e443b3c0b4f --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 4043dc34e2ab05d243d9f46097c494d1486436ea) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision b4ea9c08576e7a6064d766a0a5c81e443b3c0b4f) @@ -1874,7 +1874,7 @@ dat2 = integer_to_bytearray(data_field2) payload = alarm + data_type1 + dat1 + data_type2 + dat2 - message = DenaliMessage.build_message(channel_id=DenaliChannels.ui_to_hd_ch_id, + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_ALARM_TRIGGERED.value, payload=payload) @@ -1888,4 +1888,34 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") - return False \ No newline at end of file + return False + + def cmd_ui_send_pressure_limits_change_request(self, arterial: int, venous: int, asymmetric_venous: int) -> int: + """ + Constructs and sends a pressure limits request message to the HD. + + @param arterial: (int) date value for arterial pressure limit. + @param venous: (int) data value for venous pressure limit. + @param asymmetric_venous: (int) data value for venous asymmetric limit. + @return: 1 if successful, zero otherwise + """ + art = integer_to_bytearray(arterial) + ven = integer_to_bytearray(venous) + vena = integer_to_bytearray(asymmetric_venous) + + payload = art + ven + vena + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST.value, + payload=payload) + + self.logger.debug("Sending UI pressure limits message") + + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False