Index: dialin/common/msg_ids.py =================================================================== diff -u -rcdc433c39580475307d2cfa0b3ccef7873c630f4 -r5fbe22677f97d8792b9a9b781134851cdda1572a --- dialin/common/msg_ids.py (.../msg_ids.py) (revision cdc433c39580475307d2cfa0b3ccef7873c630f4) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 5fbe22677f97d8792b9a9b781134851cdda1572a) @@ -394,6 +394,7 @@ MSG_ID_HD_SEND_INSTITUTIONAL_RECORD = 0x80A0 MSG_ID_HD_PARTIAL_OCCLUSION_BLOOD_PUMP_OVERRIDE = 0x80A1 MSG_ID_HD_PARTIAL_OCCL_BLOOD_PUMP_BASELINE_OVERRIDE = 0x80A2 + MSG_ID_HD_BLOOD_LEAK_EMB_MODE_INFO_VALUES_OVERRIDE = 0x80A3 MSG_ID_DG_TESTER_LOGIN_REQUEST = 0xA000 MSG_ID_DG_ALARM_STATE_OVERRIDE = 0xA001 Index: dialin/hd/blood_leak.py =================================================================== diff -u -r8b646910f5d1622a443869456f242dc9aeddd73a -r5fbe22677f97d8792b9a9b781134851cdda1572a --- dialin/hd/blood_leak.py (.../blood_leak.py) (revision 8b646910f5d1622a443869456f242dc9aeddd73a) +++ dialin/hd/blood_leak.py (.../blood_leak.py) (revision 5fbe22677f97d8792b9a9b781134851cdda1572a) @@ -132,7 +132,8 @@ self.logger.debug("Invalid command!") @publish(['hd_blood_leak_status_timestamp', 'blood_leak_status', 'blood_leak_state', - 'blood_leak_error_persistent_ctr', 'blood_leak_serial_comm_state']) + 'blood_leak_error_persistent_ctr', 'blood_leak_serial_comm_state', 'blood_leak_intensity', + 'blood_leak_blood_detect', 'blood_leak_intensity_moving_average']) def _handler_blood_leak_sync(self, message, timestamp=0.0): """ Handles published blood leak status messages. Blood leak status is captured @@ -336,3 +337,37 @@ self.blood_leak_emb_mode_cmds[EmbModeCommands(cmd).name] = blood_leak_emb_mode_cmd_response self.hd_blood_leak_emb_mode_response_timestamp = timestamp + + def cmd_blood_leak_emb_mode_info_cmds_override(self, cmd: int, value_to_override: int, reset=NO_RESET): + """ + Constructs and sends the blood leak intensity override command + Constraints: + Must be logged into HD. + Can only override Intensity (I) and Blood Detect Level (V) + + @param cmd: unsigned int - the command that its info value is overridden (only I and V) + @param value_to_override: unsigned int - value to override the intensity to + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + rst = integer_to_bytearray(reset) + value = integer_to_bytearray(value_to_override) + index = integer_to_bytearray(EmbModeCommands(cmd).value) + payload = rst + value + index + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_BLOOD_LEAK_EMB_MODE_INFO_VALUES_OVERRIDE.value, + payload=payload) + + self.logger.debug("Override blood leak {} to {}".format(EmbModeCommands(cmd).name, value_to_override)) + + # Send 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 Index: tests/dg_tests.py =================================================================== diff -u -r25ad5c79713a1ee12a358111ebda26340459ed4e -r5fbe22677f97d8792b9a9b781134851cdda1572a --- tests/dg_tests.py (.../dg_tests.py) (revision 25ad5c79713a1ee12a358111ebda26340459ed4e) +++ tests/dg_tests.py (.../dg_tests.py) (revision 5fbe22677f97d8792b9a9b781134851cdda1572a) @@ -14,6 +14,7 @@ # ############################################################################ import os +import time from dialin.dg.dialysate_generator import DG from dialin.hd.hemodialysis_device import HD @@ -778,9 +779,11 @@ #hd.ui.cmd_set_ro_only_mode_status(1) + hd.blood_leak.cmd_blood_leak_emb_mode_info_cmds_override(EmbModeCommands.I.value, 1000, reset=1) + while True: # print(dg.switches.dg_switches_status) - print(get_blood_leak_info()) + print(time.time(), get_blood_leak_info()) sleep(1) #dg.hd_proxy.cmd_start_stop_dg_heat_disinfect() #while True: