Index: dialin/common/msg_defs.py =================================================================== diff -u -r812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3 -r8c066d92317217d5ae5e3993609a804930f7531a --- dialin/common/msg_defs.py (.../msg_defs.py) (revision 812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3) +++ dialin/common/msg_defs.py (.../msg_defs.py) (revision 8c066d92317217d5ae5e3993609a804930f7531a) @@ -158,6 +158,7 @@ MSG_ID_DIAL_OUT_PUMP_HOME_CMD = 0x8039 # Dialysate outlet pump home command MSG_ID_SUPER_CLEAR_ALARMS_CMD = 0x803A # Clears all alarms (even if non-recoverable or fault) MSG_ID_HD_REQUEST_CALIBRATION_DATA = 0x803B # Requests calibration data from HD + MSG_ID_HD_ERASE_CALIBRATION_DATA = 0x803C # Requests calibration data on HD be erased MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 # DG tester log-in MSG_ID_DG_ALARM_STATE_OVERRIDE = 0xA001 # DG alarm state override message ID Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3 -r8c066d92317217d5ae5e3993609a804930f7531a --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 8c066d92317217d5ae5e3993609a804930f7531a) @@ -126,6 +126,14 @@ """ return self.hd_operation_mode + def get_hd_calibration_data(self): + """ + Gets the HD calibration record + + @return: The hd calibration record + """ + return self.hd_calibration_data + @_publish(["hd_calibration_data"]) def _handler_hd_cal_data_sync(self, message): """ @@ -206,6 +214,67 @@ self.logger.debug("Login Timeout!!!!") return False + def cmd_hd_request_calibration_data(self): + """ + Constructs and sends an HD calibration data request command via CAN bus. + Constraints: + Must be logged into HD. + + \returns response message if received, False if no response received + + @return: 1 if successful, zero otherwise + + """ + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_REQUEST_CALIBRATION_DATA.value) + + self.logger.debug("requesting HD calibration data.") + + # Send message + received_message = self.can_interface.send(message) + + if received_message is not None: + if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: + self.logger.debug("HD calibration data request accepted.") + else: + self.logger.debug("HD calibration data request failed.") + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + + def cmd_hd_erase_calibration_data(self): + """ + Constructs and sends an erase HD calibration data request command via CAN bus. + Constraints: + Must be logged into HD. + + \returns response message if received, False if no response received + + @return: 1 if successful, zero otherwise + + """ + key = integer_to_bytearray(-758926171) # 0xD2C3B4A5 + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_ERASE_CALIBRATION_DATA.value, + payload=key) + + self.logger.debug("requesting HD calibration data be erased.") + + # Send message + received_message = self.can_interface.send(message) + + if received_message is not None: + if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: + self.logger.debug("HD calibration data erasure request accepted.") + else: + self.logger.debug("HD calibration data erasure request failed.") + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + def cmd_hd_safety_shutdown_override(self, active=True, reset=NO_RESET): """ Constructs and sends an HD safety shutdown override command via CAN bus.