Index: dialin/common/msg_ids.py =================================================================== diff -u -r0281506a3b742fb5949f277fabc4a14a8e04ebf8 -r3523ae050ca261f01c16689493d0cb1ef2fb26b4 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 0281506a3b742fb5949f277fabc4a14a8e04ebf8) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 3523ae050ca261f01c16689493d0cb1ef2fb26b4) @@ -392,6 +392,7 @@ MSG_ID_HD_SET_INSTITUTIONAL_RECORD = 0x809F 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_DG_TESTER_LOGIN_REQUEST = 0xA000 MSG_ID_DG_ALARM_STATE_OVERRIDE = 0xA001 Index: dialin/hd/pressure_occlusion.py =================================================================== diff -u -r0281506a3b742fb5949f277fabc4a14a8e04ebf8 -r3523ae050ca261f01c16689493d0cb1ef2fb26b4 --- dialin/hd/pressure_occlusion.py (.../pressure_occlusion.py) (revision 0281506a3b742fb5949f277fabc4a14a8e04ebf8) +++ dialin/hd/pressure_occlusion.py (.../pressure_occlusion.py) (revision 3523ae050ca261f01c16689493d0cb1ef2fb26b4) @@ -55,8 +55,8 @@ self.arterial_pressure_limit_max = 0 self.venous_pressure_limit_min = 0 self.venous_pressure_limit_max = 0 - self.filtered_blood_pump_Occlusion = 0 - self.partial_occlusion_baseline = 0 + self.blood_pump_occlusion_long_filter = 0.0 + self.partial_occlusion_baseline = 0.0 def get_arterial_pressure(self): """ @@ -152,15 +152,15 @@ """ Gets the filtered blood pump occlusion - @return: (int) The filtered blood pump occlusion + @return: (float) The filtered blood pump occlusion """ - return self.filtered_blood_pump_Occlusion + return self.blood_pump_occlusion_long_filter def get_partial_blood_pump_occlusion_baseline(self): """ Gets the partial blood pump occlusion baseline - @return: (int) The partial blood pump occlusion baseline + @return: (float) The partial blood pump occlusion baseline """ return self.partial_occlusion_baseline @@ -176,7 +176,7 @@ "venous_pressure_limit_max", "arterial_long_filtered_pressure", "venous_long_filtered_pressure", - "filtered_blood_pump_occlusion", + "blood_pump_occlusion_long_filter", "partial_occlusion_blood_pump_baseline" ]) def _handler_pressure_occlusion_sync(self, message, timestamp=0.0): @@ -208,9 +208,9 @@ message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])) lfv = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])) - fbp = struct.unpack('i', bytearray( + fbp = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) - pob = struct.unpack('i', bytearray( + pob = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12])) self.arterial_pressure = art[0] @@ -223,7 +223,7 @@ self.venous_pressure_limit_max = vpu[0] self.arterial_long_filtered_pressure = lfa[0] self.venous_long_filtered_pressure = lfv[0] - self.filtered_blood_pump_Occlusion = fbp[0] + self.blood_pump_occlusion_long_filter = fbp[0] self.partial_occlusion_baseline = pob[0] self.hd_pressure_occlusion_timestamp = timestamp @@ -346,19 +346,19 @@ self.logger.debug("Timeout!!!!") return False - def cmd_filtered_blood_pump_measured_occlusion_override(self, filtered_occl: int, reset: int = NO_RESET) -> int: + def cmd_filtered_blood_pump_measured_occlusion_override(self, filtered_occl: float, reset: int = NO_RESET) -> int: """ Constructs and sends the measured filtered blood pump occlusion pressure override command Constraints: Must be logged into HD. - @param filtered_occl: integer - pressure (in counts) to override with + @param filtered_occl: float - pressure (in counts) to override with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ rst = integer_to_bytearray(reset) - occ = integer_to_bytearray(filtered_occl) + occ = float_to_bytearray(filtered_occl) payload = rst + occ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, @@ -384,6 +384,44 @@ self.logger.debug("Timeout!!!!") return False + def cmd_blood_pump_measured_partial_occlusion_baseline_override(self, partial_occl_baseline: float, reset: int = NO_RESET) -> int: + """ + Constructs and sends the measured filtered blood pump occlusion pressure override command + Constraints: + Must be logged into HD. + + @param partial_occl_baseline: float - partial blood pump occlusion baseline override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + occ_bl = float_to_bytearray(partial_occl_baseline) + payload = rst + occ_bl + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_PARTIAL_OCCL_BLOOD_PUMP_BASELINE_OVERRIDE.value, + payload=payload) + + self.logger.debug("override partial blood pump occlusion baseline pressure") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + if reset == RESET: + str_res = "reset back to normal. " + else: + str_res = str(partial_occl_baseline) + self.logger.debug(" Partial Blood pump occlusion baseline pressure overridden to " + str_res + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + def cmd_pressure_occlusion_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the pressure/occlusion broadcast interval override command