Index: dialin/common/msg_defs.py =================================================================== diff -u -r3559c80a045fc8cb5f2d994930284b435f939caf -re4d086bbac8a1e894c2baa5599a0efd6a65b4248 --- dialin/common/msg_defs.py (.../msg_defs.py) (revision 3559c80a045fc8cb5f2d994930284b435f939caf) +++ dialin/common/msg_defs.py (.../msg_defs.py) (revision e4d086bbac8a1e894c2baa5599a0efd6a65b4248) @@ -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_FIRST_DG_TESTER_MESSAGE = 0xA000 # First DG test message ID MSG_ID_DG_TESTER_LOGIN_REQUEST = MSG_ID_FIRST_DG_TESTER_MESSAGE # DG tester log-in Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r1454a1ae9ab6d66750269d471048ffe52c5786de -re4d086bbac8a1e894c2baa5599a0efd6a65b4248 --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 1454a1ae9ab6d66750269d471048ffe52c5786de) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision e4d086bbac8a1e894c2baa5599a0efd6a65b4248) @@ -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.