Index: dialin/hd/ui_proxy.py =================================================================== diff -u -rec4566a8f8f9731331270672df92100023cb733a -r08a4b1100acd24702f1e8e6355c154aaef41f6d2 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision ec4566a8f8f9731331270672df92100023cb733a) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 08a4b1100acd24702f1e8e6355c154aaef41f6d2) @@ -184,7 +184,12 @@ self._handler_saline_bolus_response) self.can_interface.register_receiving_publication_function(DenaliChannels.ui_to_hd_ch_id, MsgIds.MSG_ID_UI_SET_UF_VOLUME_PARAMETER.value, self._handler_uf_volume_setting_response) - # TODO - handle response to rinseback, recirc, and end treatment command messages. + self.can_interface.register_receiving_publication_function(DenaliChannels.hd_to_ui_ch_id, MsgIds.MSG_ID_HD_RINSEBACK_CMD_RESPONSE.value, + self._handler_rinseback_cmd_response) + self.can_interface.register_receiving_publication_function(DenaliChannels.hd_to_ui_ch_id, MsgIds.MSG_ID_HD_RECIRC_CMD_RESPONSE.value, + self._handler_recirc_cmd_response) + self.can_interface.register_receiving_publication_function(DenaliChannels.hd_to_ui_ch_id, MsgIds.MSG_ID_HD_TX_END_CMD_RESPONSE.value, + self._handler_treatment_end_cmd_response) # initialize variables that will be populated by HD version response self.hd_version = None @@ -225,6 +230,15 @@ self.saline_bolus_request_succeeded = False self.saline_bolus_request_reject_reason = 0 self.saline_bolus_request_bolus_volume = 0 + # initialize variables that will be populated by response to rinseback command + self.rinseback_cmd_succeeded = False + self.rinseback_cmd_reject_reason = 0 + # initialize variables that will be populated by response to recirculate command + self.recirc_cmd_succeeded = False + self.recirc_cmd_reject_reason = 0 + # initialize variables that will be populated by response to treatment end command + self.treatment_end_cmd_succeeded = False + self.treatment_end_cmd_reject_reason = 0 self.reject_reasons = OrderedDict() for attr in dir(self): @@ -1144,6 +1158,84 @@ self.uf_change_time_min = tim[0] self.uf_change_rate_ml_min = rat[0] + @_publish([ + "rinseback_cmd_succeeded", + "rinseback_cmd_reject_reason", + ]) + def _handler_rinseback_cmd_response(self, message): + """ + Handler for response from HD regarding rinseback user command. + + @param message: response message from HD regarding rinseback user command.\n + BOOL Accepted \n + U32 Reject reason (if not accepted) \n + + @return: None + """ + rsp = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + rea = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) + + if rsp[0] == 1: + self.rinseback_cmd_succeeded = True + else: + self.rinseback_cmd_succeeded = False + if RequestRejectReasons.has_value(rea[0]): + self.rinseback_cmd_reject_reason = RequestRejectReasons(rea[0]) + + @_publish([ + "recirc_cmd_succeeded", + "recirc_cmd_reject_reason", + ]) + def _handler_recirc_cmd_response(self, message): + """ + Handler for response from HD regarding recirculate user command. + + @param message: response message from HD regarding recirculate user command.\n + BOOL Accepted \n + U32 Reject reason (if not accepted) \n + + @return: None + """ + rsp = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + rea = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) + + if rsp[0] == 1: + self.recirc_cmd_succeeded = True + else: + self.recirc_cmd_succeeded = False + if RequestRejectReasons.has_value(rea[0]): + self.recirc_cmd_reject_reason = RequestRejectReasons(rea[0]) + + @_publish([ + "treatment_end_cmd_succeeded", + "treatment_end_cmd_reject_reason", + ]) + def _handler_treatment_end_cmd_response(self, message): + """ + Handler for response from HD regarding treatment end user command. + + @param message: response message from HD regarding treatment end user command.\n + BOOL Accepted \n + U32 Reject reason (if not accepted) \n + + @return: None + """ + rsp = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + rea = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) + + if rsp[0] == 1: + self.treatment_end_cmd_succeeded = True + else: + self.treatment_end_cmd_succeeded = False + if RequestRejectReasons.has_value(rea[0]): + self.treatment_end_cmd_reject_reason = RequestRejectReasons(rea[0]) + def cmd_ui_checkin_with_hd(self): """ Constructs and sends the ui check-in message