Index: dialin/common/alarm_defs.py =================================================================== diff -u -rdf58df8b4e8b8d3f0b0764deda9f15050a071d78 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/common/alarm_defs.py (.../alarm_defs.py) (revision df58df8b4e8b8d3f0b0764deda9f15050a071d78) +++ dialin/common/alarm_defs.py (.../alarm_defs.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -8,9 +8,9 @@ # @file alarm_defs.py # # @author (last) Peter Lucia -# @date (last) 27-Apr-2021 +# @date (last) 24-May-2021 # @author (original) Peter Lucia -# @date (original) 27-Apr-2021 +# @date (original) 24-May-2021 # ############################################################################ from enum import unique @@ -23,7 +23,7 @@ ALARM_ID_NO_ALARM = 0 ALARM_ID_HD_SOFTWARE_FAULT = 1 ALARM_ID_STUCK_BUTTON_TEST_FAILED = 2 - ALARM_ID_FPGA_POST_TEST_FAILED = 3 + ALARM_ID_HD_FPGA_POST_TEST_FAILED = 3 ALARM_ID_WATCHDOG_POST_TEST_FAILED = 4 ALARM_ID_UI_COMM_POST_FAILED = 5 ALARM_ID_BLOOD_PUMP_MC_CURRENT_CHECK = 6 @@ -66,9 +66,10 @@ ALARM_ID_NVDATA_SRVC_RECORD_CRC_ERROR = 43 ALARM_ID_NVDATA_CAL_RECORD_CRC_ERROR = 44 ALARM_ID_NVDATA_HW_USAGE_DATA_CRC_ERROR = 45 - ALARM_ID_RO_PUMP_OUT_PRESSURE_OUT_OF_RANGE = 47 + ALARM_ID_AVAILABLE_1 = 46 + ALARM_ID_AVAILABLE_2 = 47 ALARM_ID_TEMPERATURE_SENSORS_FAULT = 48 - ALARM_ID_FPGA_COMM_TIMEOUT = 49 + ALARM_ID_HD_FPGA_COMM_TIMEOUT = 49 ALARM_ID_HD_COMM_TIMEOUT = 50 ALARM_ID_VALVE_CONTROL_FAILURE = 51 ALARM_ID_BLOOD_PUMP_FLOW_VS_MOTOR_SPEED_CHECK = 52 @@ -129,7 +130,7 @@ ALARM_ID_END_OF_TREATMENT_WARNING = 107 ALARM_ID_END_OF_TREATMENT_ALARM = 108 ALARM_ID_END_OF_TREATMENT_HIGH = 109 - ALARM_ID_DG_HEAT_DISINFECT_CYCLE_FAILED = 110 + ALARM_ID_AVAILABLE_3 = 110 ALARM_ID_RO_PUMP_RAMP_UP_TO_FLOW_TIMEOUT = 111 ALARM_ID_FLOW_RATE_OUT_OF_LOWER_RANGE = 112 ALARM_ID_DRAIN_PUMP_OFF_FAULT = 113 @@ -147,7 +148,7 @@ ALARM_ID_TREATMENT_RINSEBACK_TIMEOUT_ALARM = 125 ALARM_ID_TREATMENT_RECIRC_TIMEOUT_ALARM = 126 ALARM_ID_CARTRIDGE_DOOR_OPENED = 127 - ALARM_ID_PRE_TREATMENT_NO_CART_SELF_TEST_FAILURE = 128 + ALARM_ID_AVAILABLE_4 = 128 ALARM_ID_INSTALL_NEW_CARTRIDGE = 129 ALARM_ID_CARTRIDGE_INSTALLED_IMPROPERLY = 130 ALARM_ID_RINSEBACK_VOLUME_CHECK_FAILURE = 131 @@ -159,7 +160,7 @@ ALARM_ID_PRE_TREATMENT_DRY_SELF_TEST_FAILURE = 137 ALARM_ID_PRE_TREATMENT_WET_SELF_TEST_FAILURE = 138 ALARM_ID_DG_FLOW_METER_CHECK_FAILURE = 139 - ALARM_ID_DG_RO_PUMP_TOO_MANY_RAMP_UP_RETRY = 140 + ALARM_ID_AVAILABLE_5 = 140 ALARM_ID_NVDATAMGMT_GROUP_RECORD_CRC_INVALID = 141 ALARM_ID_NVDATAMGMT_INDIVIDUAL_RECORD_CRC_INVALID = 142 ALARM_ID_NVDATAMGMT_INDIVIDUAL_RECORD_TIME_INVALID = 143 @@ -213,3 +214,40 @@ ALARM_ID_HD_SYRINGE_PUMP_NOT_ENOUGH_HEPARIN_ALARM = 191 ALARM_ID_HD_SYRINGE_PUMP_DAC_WRITE_ERROR = 192 ALARM_ID_HD_SYRINGE_PUMP_RUNNING_WHILE_BP_OFF_ERROR = 193 + ALARM_ID_DG_CHEM_DISINFECT_INLET_PRES_AND_TEMP_SNSRS_OUT = 194 + ALARM_ID_DG_CHEM_DISINFECT_INLET_COND_AND_TEMP_OUT = 195 + ALARM_ID_DG_FPGA_COMM_TIMEOUT = 196 + ALARM_ID_DG_LOAD_CELL_ADC_ERROR = 197 + ALARM_ID_HD_VENOUS_PRESSURE_READ_TIMEOUT_ERROR = 198 + ALARM_ID_HD_VENOUS_PRESSURE_SENSOR_TEMP_OUT_OF_RANGE = 199 + ALARM_ID_HD_BP_OCCLUSION_READ_TIMEOUT_ERROR = 200 + ALARM_ID_HD_DPI_OCCLUSON_READ_TIMEOUT_ERROR = 201 + ALARM_ID_HD_DPO_OCCLUSION_READ_TIMEOUT_ERROR = 202 + ALARM_ID_HD_BP_OCCLUSION_SENSOR_ERROR = 203 + ALARM_ID_HD_DPI_OCCLUSION_SENSOR_ERROR = 204 + ALARM_ID_HD_DPO_OCCLUSION_SENSOR_ERROR = 205 + ALARM_ID_DG_CONCENTRATE_PUMP_FAULT = 206 + ALARM_ID_HD_BP_FLOW_READ_TIMEOUT_ERROR = 207 + ALARM_ID_HD_BP_FLOW_SENSOR_ERROR = 208 + ALARM_ID_HD_DP_FLOW_READ_TIMEOUT_ERROR = 209 + ALARM_ID_HD_DP_FLOW_SENSOR_ERROR = 210 + ALARM_ID_DG_CHEM_DISINFECT_TARGET_TEMP_TIMEOUT = 211 + ALARM_ID_DG_FPGA_POST_TEST_FAILED = 212 + ALARM_ID_HD_ARTERIAL_BUBBLE_SELF_TEST_FAILURE = 213 + ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTOR_FAULT = 214 + ALARM_ID_DG_HEATERS_SELF_TEST_FAILURE = 215 + ALARM_ID_HD_VENOUS_BUBBLE_SELF_TEST_FAILURE = 216 + ALARM_ID_HD_VENOUS_BUBBLE_DETECTOR_TREATMENT_FAULT = 217 + ALARM_ID_HD_VENOUS_BUBBLE_DETECTOR_RINSEBACK_FAULT = 218 + ALARM_ID_HD_ARTERIAL_BUBBLE_DETECTED = 219 + ALARM_ID_HD_VENOUS_BUBBLE_DETECTED = 220 + ALARM_ID_HD_BP_FLOW_SLOW_READ_TIMEOUT_ERROR = 221 + ALARM_ID_HD_DP_FLOW_SLOW_READ_TIMEOUT_ERROR = 222 + ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR = 223 + ALARM_ID_DG_LOAD_CELLS_TARE_WEIGHT_OUT_OF_RANGE = 224 + ALARM_ID_HD_BATTERY_COMM_FAULT = 225 + ALARM_ID_HD_SYRINGE_PUMP_STALL = 226 + ALARM_ID_HD_INTEGRITY_POST_TEST_FAILED = 227 + ALARM_ID_DG_INTEGRITY_POST_TEST_FAILED = 228 + ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT = 229 + ALARM_ID_HD_DRY_SELF_TEST_TIMEOUT = 230 Index: dialin/common/msg_ids.py =================================================================== diff -u -rdf58df8b4e8b8d3f0b0764deda9f15050a071d78 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision df58df8b4e8b8d3f0b0764deda9f15050a071d78) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -8,9 +8,9 @@ # @file msg_ids.py # # @author (last) Peter Lucia -# @date (last) 27-Apr-2021 +# @date (last) 24-May-2021 # @author (original) Peter Lucia -# @date (original) 27-Apr-2021 +# @date (original) 24-May-2021 # ############################################################################ from enum import unique @@ -132,13 +132,16 @@ MSG_ID_UI_TREATMENT_LOG_DATA_REQUEST = 0X75 MSG_ID_HD_TREATMENT_LOG_DATA_RESPONSE = 0X76 MSG_ID_HD_POST_TREATMENT_STATE = 0X77 - MSG_ID___AVAILABLE_16 = 0X78 + MSG_ID_DG_START_STOP_CHEM_DISINFECT = 0X78 MSG_ID_DG_START_STOP_FLUSH = 0X79 MSG_ID_DG_FLUSH_DATA = 0X7A MSG_ID_HD_VOLTAGES_DATA = 0X7B MSG_ID_HD_ALARM_AUDIO_VOLUME_SET_RESPONSE = 0X7C MSG_ID_HD_ALARM_INFORMATION = 0X7D + MSG_ID_HD_STANDBY_STATE = 0X7E + MSG_ID_UI_DISINFECT_REQUEST = 0X7F MSG_ID_DIALYSATE_FLOW_DATA = 0X8 + MSG_ID_HD_DISINFECT_RESPONSE = 0X80 MSG_ID_TESTER_LOGIN_REQUEST = 0X8000 MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE = 0X8001 MSG_ID_OFF_BUTTON_STATE_OVERRIDE = 0X8002 @@ -225,8 +228,40 @@ MSG_ID_HD_ALARM_AUDIO_CURRENT_HG_OVERRIDE = 0X8054 MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE = 0X8055 MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE = 0X8056 + MSG_ID_HD_VALVES_CURRENT_OVERRIDE = 0X8057 + MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE = 0X8059 + MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE = 0X805A + MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE = 0X805B + MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE = 0X805C + MSG_ID_HD_BUBBLES_DATA_SEND_INTERVAL_OVERRIDE = 0X805D + MSG_ID_HD_BUBBLE_STATUS_OVERRIDE = 0X805E + MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST = 0X8060 + MSG_ID_UI_CHEM_DISINFECT_CONFIRM = 0X81 + MSG_ID_HD_CHEM_DISINFECT_CONFIRM_RESPONSE = 0X82 + MSG_ID_DG_FLUSH_TIME_DATA = 0X83 + MSG_ID_DG_HEAT_DISINFECT_TIME_DATA = 0X84 + MSG_ID_DG_CHEM_DISINFECT_TIME_DATA = 0X85 MSG_ID_DG_VOLTAGES_DATA = 0X86 + MSG_ID_DG_CHEM_DISINFECT_DATA = 0X87 + MSG_ID_DG_SERIAL_NUMBER = 0X88 + MSG_ID_UI_REQUEST_SYSTEM_USAGE_INFO = 0X89 + MSG_ID_HD_SERVICE_SCHEDULE_DATA = 0X8A + MSG_ID_HD_USAGE_DATA = 0X8B + MSG_ID_DG_SERVICE_SCHEDULE_DATA = 0X8C + MSG_ID_DG_USAGE_DATA = 0X8D + MSG_ID_HD_POST_SINGLE_TEST_RESULT = 0X8E + MSG_ID_HD_POST_FINAL_TEST_RESULT = 0X8F MSG_ID_PRESSURE_OCCLUSION_DATA = 0X9 + MSG_ID_DG_POST_SINGLE_TEST_RESULT = 0X90 + MSG_ID_DG_POST_FINAL_TEST_RESULT = 0X91 + MSG_ID_UI_POST_FINAL_TEST_RESULT = 0X92 + MSG_ID_HD_BUBBLES_DATA = 0X93 + MSG_ID_HD_TREATMENT_LOG_PERIODIC_DATA = 0X94 + MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT = 0X95 + MSG_ID_HD_TREATMENT_LOG_EVENT = 0X96 + MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST = 0X97 + MSG_ID_HD_ACTIVE_ALARMS_LIST_REQUEST_RESPONSE = 0X98 + MSG_ID_HD_SERIAL_NUMBER = 0X99 MSG_ID_CAN_ERROR_COUNT = 0X999 MSG_ID_RTC_EPOCH = 0XA MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 @@ -260,7 +295,7 @@ MSG_ID___AVAILABLE_13 = 0XA01E MSG_ID___AVAILABLE_14 = 0XA01F MSG_ID___AVAILABLE_15 = 0XA020 - MSG_ID_HEAT_DISINFECT_PUBLISH_INTERVAL_OVERRIDE = 0XA021 + MSG_ID___AVAILABLE_16 = 0XA021 MSG_ID_DG_SOFTWARE_RESET_REQUEST = 0XA022 MSG_ID_DG_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE = 0XA023 MSG_ID_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE = 0XA024 Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -rbfb0c47181dc8a73d09825ab697a7799dd520417 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision bfb0c47181dc8a73d09825ab697a7799dd520417) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -23,7 +23,6 @@ from .fans import Fans from .hd_proxy import DGHDProxy from .heaters import Heaters -from .heat_disinfect import HeatDisinfect from .load_cells import DGLoadCells from .pressures import DGPressures from .reservoirs import DGReservoirs @@ -44,6 +43,7 @@ from ..utils.base import _AbstractSubSystem, _publish, _LogManager from ..protocols.CAN import (DenaliCanMessenger, DenaliMessage, DenaliChannels) from ..common.msg_defs import MsgIds, MsgFieldPositions +from .flush import FlushMode class DG(_AbstractSubSystem): @@ -166,6 +166,7 @@ self.service_record = DGServiceNVRecord(self.can_interface, self.logger) self.scheduled_runs_record = DGScheduledRunsNVRecord(self.can_interface, self.logger) self.valves = DGValves(self.can_interface, self.logger) + self.flush = FlushMode(self.can_interface, self.logger) def get_version(self): """ Index: dialin/dg/fluid_leak.py =================================================================== diff -u -r6a5d99864f21d3a55c1d8a6313141a16b4c6c709 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/dg/fluid_leak.py (.../fluid_leak.py) (revision 6a5d99864f21d3a55c1d8a6313141a16b4c6c709) +++ dialin/dg/fluid_leak.py (.../fluid_leak.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -58,8 +58,8 @@ """ return self.fluid_leak_state - @_publish("fluid_leak_state") - def _handler_fluid_leak_sync(self, message): + @_publish(["fluid_leak_state"]) + def _handler_fluid_leak_sync(self, message: dict) -> None: """ Handles published fluid leak state messages. Fluid leak state is captured for reference. @@ -73,7 +73,7 @@ self.fluid_leak_state = state[0] - def cmd_fluid_leak_detector_override(self, detected, reset=NO_RESET): + def cmd_fluid_leak_detector_override(self, detected: int, reset: int = NO_RESET) -> int: """ Constructs and sends the fluid leak detector state override command Constraints: Index: dialin/dg/temperature_sensors.py =================================================================== diff -u -r0d671ee8745fe0ad830e34c9734ad0939fd95b45 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/dg/temperature_sensors.py (.../temperature_sensors.py) (revision 0d671ee8745fe0ad830e34c9734ad0939fd95b45) +++ dialin/dg/temperature_sensors.py (.../temperature_sensors.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -232,7 +232,7 @@ self.logger.debug("Timeout!!!!") return False - def cmd_temperature_sensors_override_value(self, sensor_value, sensor_index, reset=NO_RESET): + def cmd_temperature_sensors_override_value(self, sensor_index: int, sensor_value: float, reset: int = NO_RESET) -> int: """ Constructs and sends the value override of a temperature sensor. Constraints: Index: dialin/dg/uv_reactors.py =================================================================== diff -u -r56f06b55eb8ab96bd69d12eb9d9d5c71241755ad -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/dg/uv_reactors.py (.../uv_reactors.py) (revision 56f06b55eb8ab96bd69d12eb9d9d5c71241755ad) +++ dialin/dg/uv_reactors.py (.../uv_reactors.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -152,7 +152,7 @@ self.logger.debug("Timeout!!!!") return False - def cmd_uv_reactors_health_override(self, health, reactor, reset=NO_RESET): + def cmd_uv_reactors_health_override(self, reactor: int, health: int, reset: int = NO_RESET) -> int: """ Constructs and sends the UV reactors' health override command. Constraints: @@ -161,6 +161,7 @@ @param reactor: (int) UV reactor index @param health: (int) 0 for unhealthy and 1 for healthy @param reset: (int) 0 for no reset and 1 for reset + @return 1 if successful, zero otherwise """ reset_value = integer_to_bytearray(reset) rctr = integer_to_bytearray(reactor) Index: dialin/hd/buttons.py =================================================================== diff -u -r2e392c92d55178f457a67423ba8c503a86dcf3c8 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/hd/buttons.py (.../buttons.py) (revision 2e392c92d55178f457a67423ba8c503a86dcf3c8) +++ dialin/hd/buttons.py (.../buttons.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -29,12 +29,6 @@ Hemodialysis Device (HD) Dialin API sub-class for button related commands. """ - START_POS_POWEROFF = DenaliMessage.PAYLOAD_START_INDEX - END_POS_POWEROFF_STATUS = START_POS_POWEROFF + 2 - - PRESSED = 1 - RELEASED = 0 - def __init__(self, can_interface: DenaliCanMessenger, logger: Logger): """ HD_Buttons constructor Index: dialin/hd/fluid_leak.py =================================================================== diff -u -r33e3f9f462c34f5ac8f8319dc3fada668b829190 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/hd/fluid_leak.py (.../fluid_leak.py) (revision 33e3f9f462c34f5ac8f8319dc3fada668b829190) +++ dialin/hd/fluid_leak.py (.../fluid_leak.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -30,8 +30,8 @@ """ # Fluid leak detector state - FLUID_LEAK_DETECTED = 0 # Wet - NO_FLUID_LEAK_DETECTED = 1 # Dry + FLUID_LEAK_DETECTED_STATE = 0 # Wet + NO_FLUID_LEAK_DETECTED_STATE = 1 # Dry def __init__(self, can_interface, logger: Logger): """ @@ -48,7 +48,7 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_fluid_leak_sync) - self.fluid_leak_state = self.NO_FLUID_LEAK_DETECTED + self.fluid_leak_state = self.NO_FLUID_LEAK_DETECTED_STATE def get_fluid_leak_state(self): """ @@ -86,11 +86,11 @@ """ rst = integer_to_bytearray(reset) - det = float_to_bytearray(detected) + det = integer_to_bytearray(detected) payload = rst + det message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, - message_id=MsgIds.MSG_ID_HD_FLUID_LEAK_STATE_DETECTOR_OVERRIDE.value, + message_id=MsgIds.MSG_ID_HD_FLUID_LEAK_STATE_OVERRIDE.value, payload=payload) self.logger.debug("Override fluid leak detector state value") @@ -143,4 +143,4 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") - return False + return False \ No newline at end of file Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r2e392c92d55178f457a67423ba8c503a86dcf3c8 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 2e392c92d55178f457a67423ba8c503a86dcf3c8) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -17,6 +17,7 @@ from .accelerometer import HDAccelerometer from .air_trap import HDAirTrap from .alarms import HDAlarms +from .blood_leak import HDBloodLeak from .buttons import HDButtons from .fluid_leak import HDFluidLeak from .ui_proxy import HDUIProxy @@ -93,6 +94,7 @@ self.air_trap = HDAirTrap(self.can_interface, self.logger) self.alarms = HDAlarms(self.can_interface, self.logger) self.buttons = HDButtons(self.can_interface, self.logger) + self.blood_leak = HDBloodLeak(self.can_interface, self.logger) self.fluid_leak = HDFluidLeak(self.can_interface, self.logger) self.ui = HDUIProxy(self.can_interface, self.logger) self.rtc = HDRTC(self.can_interface, self.logger) Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r26de67dd19c2cc0f475d1e77b4a887857841f6c1 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 26de67dd19c2cc0f475d1e77b4a887857841f6c1) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -1023,11 +1023,11 @@ if RequestRejectReasons.has_value(rea[0]): self.treatment_end_cmd_reject_reason = RequestRejectReasons(rea[0]) - def cmd_ui_checkin_with_hd(self): + def cmd_ui_checkin_with_hd(self) -> None: """ Constructs and sends the ui check-in message - @return: 0 + @return: None """ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, @@ -1037,9 +1037,7 @@ self.can_interface.send(message, 0) - return 0 - - def cmd_ui_request_hd_version(self): + def cmd_ui_request_hd_version(self) -> None: """ Constructs and sends the ui request for version message @@ -1052,7 +1050,7 @@ self.can_interface.send(message, 0) - def cmd_ui_set_alarm_audio_volume_level(self, volume=MAX_ALARM_VOLUME_LEVEL): + def cmd_ui_set_alarm_audio_volume_level(self, volume: int = MAX_ALARM_VOLUME_LEVEL) -> None: """ Constructs and sends the ui set alarm volume level message @@ -1068,7 +1066,7 @@ self.logger.debug("Sending ui request to set alarm audio volume to level " + str(volume) + " to HD") self.can_interface.send(message, 0) - def cmd_ui_uf_volume_set(self, uf_volume: float): + def cmd_ui_uf_volume_set(self, uf_volume: float) -> None: """ Constructs and sends the ui set ultrafiltration volume parameter message @@ -1084,7 +1082,7 @@ self.logger.debug("Sending ui request to set ultrafiltration volume parameter of " + str(uf_volume) + " to HD") self.can_interface.send(message, 0) - def cmd_ui_uf_pause_resume(self, cmd=UF_CMD_PAUSE): + def cmd_ui_uf_pause_resume(self, cmd: int = UF_CMD_PAUSE) -> None: """ Constructs and sends a ui UF command message @@ -1106,7 +1104,7 @@ self.can_interface.send(message, 0) - def cmd_ui_uf_settings_change_request(self, vol=0.0): + def cmd_ui_uf_settings_change_request(self, vol: float = 0.0) -> None: """ Constructs and sends a ui UF change settings command message @@ -1127,7 +1125,7 @@ self.can_interface.send(message, 0) - def cmd_ui_uf_settings_change_confirm(self, vol=0.0, adj=UF_CMD_CHANGE_TIME_TO_ADJUST): + def cmd_ui_uf_settings_change_confirm(self, vol: float = 0.0, adj: int = UF_CMD_CHANGE_TIME_TO_ADJUST) -> None: """ Constructs and sends a ui UF change settings command message @@ -1152,7 +1150,7 @@ self.can_interface.send(message, 0) - def cmd_ui_treatment_duration_setting_change_request(self, time_min: int = 0): + def cmd_ui_treatment_duration_setting_change_request(self, time_min: int = 0) -> None: """ Constructs and sends a ui UF change settings confirmed by user message @@ -1170,7 +1168,7 @@ # Send message self.can_interface.send(message, 0) - def cmd_ui_blood_and_dialysate_flow_settings_change_request(self, blood_flow, dial_flow): + def cmd_ui_blood_and_dialysate_flow_settings_change_request(self, blood_flow: int, dial_flow: int) -> None: """ Constructs and sends a ui blood & dialysate flow settings change request by user message @@ -1193,8 +1191,7 @@ self.can_interface.send(message, 0) - def cmd_ui_initiate_treatment_request(self, cmnd=START_TREATMENT_CMD_INITIATE_TREATMENT_WORKFLOW): - + def cmd_ui_initiate_treatment_request(self, cmnd: int = START_TREATMENT_CMD_INITIATE_TREATMENT_WORKFLOW) -> None: """ Constructs and sends a ui start treatment command message Constraints: @@ -1203,7 +1200,6 @@ START_TREATMENT_CMD_INITIATE_TREATMENT_WORKFLOW = 1 @param cmnd: (int) start treatment command code - @return: None """ @@ -1217,7 +1213,7 @@ self.can_interface.send(message, 0) - def set_a_treatment_parameter(self, param_idx, value): + def set_a_treatment_parameter(self, param_idx: int, value: int) -> None: """ Constructs and sends a set treatment parameter message Constraints: @@ -1266,7 +1262,7 @@ ven_low : int = -100, ven_high: int = 100, bp_intvl: int = 15, - rb_flow : int = 50): + rb_flow : int = 50) -> None: """ Constructs and sends a ui set treatment parameters message Constraints: @@ -1337,7 +1333,7 @@ self.can_interface.send(message, 0) - def cmd_ui_confirm_treatment_parameters(self, cmd=0): + def cmd_ui_confirm_treatment_parameters(self, cmd: int = 0) -> None: """ Constructs and sends a ui confirm treatment parameters message Constraints: @@ -1359,7 +1355,7 @@ self.can_interface.send(message, 0) - def cmd_ui_request_saline_bolus(self, start=False): + def cmd_ui_request_saline_bolus(self, start: bool = False) -> None: """ Constructs and sends a ui request for a saline bolus message Constraints: @@ -1388,7 +1384,7 @@ self.can_interface.send(message, 0) - def cmd_ui_rinseback_user_action(self, action=RinsebackUserActions.REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START.value): + def cmd_ui_rinseback_user_action(self, action: int = RinsebackUserActions.REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START.value) -> None: """ Constructs and sends a UI rinseback user action message Constraints: @@ -1420,7 +1416,7 @@ self.can_interface.send(message, 0) - def cmd_ui_recirculate_user_action(self, action=RecircUserActions.REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT.value): + def cmd_ui_recirculate_user_action(self, action: int = RecircUserActions.REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT.value) -> None: """ Constructs and sends a UI recirculate user action message Constraints: @@ -1446,7 +1442,7 @@ self.can_interface.send(message, 0) - def cmd_ui_treatment_end_user_action(self, action=TreatmentEndUserActions.REQUESTED_USER_ACTION_TX_END_RINSEBACK_START.value): + def cmd_ui_treatment_end_user_action(self, action: int = TreatmentEndUserActions.REQUESTED_USER_ACTION_TX_END_RINSEBACK_START.value) -> None: """ Constructs and sends a UI treatment end user action message Constraints: @@ -1469,7 +1465,7 @@ self.can_interface.send(message, 0) - def cmd_ui_user_alarm_response(self, option=AlarmUserOptions.ALARM_USER_ACTION_ACK.value): + def cmd_ui_user_alarm_response(self, option: int = AlarmUserOptions.ALARM_USER_ACTION_ACK.value) -> None: """ Constructs and sends a ui alarm response message. Constraints: @@ -1495,7 +1491,7 @@ self.can_interface.send(message, 0) - def cmd_ui_silence_alarm(self, toggle=1): + def cmd_ui_silence_alarm(self, toggle: int = 1) -> None: """ Constructs and sends a ui alarm response message @@ -1516,7 +1512,7 @@ self.can_interface.send(message, 0) - def cmd_ui_sample_water(self, cmd=0): + def cmd_ui_sample_water(self, cmd: int = 0) -> None: """ Constructs and sends a ui water sample request message @@ -1535,7 +1531,7 @@ self.logger.debug("Sending user sample water command " + str(cmd) + " to HD.") self.can_interface.send(message, 0) - def cmd_ui_send_sample_water_result(self, result=1): + def cmd_ui_send_sample_water_result(self, result: int = 1) -> None: """ Constructs and sends a ui water sample result message @@ -1554,7 +1550,7 @@ self.logger.debug("Sending user sample water result " + str(result) + " to HD.") self.can_interface.send(message, 0) - def cmd_ui_consumable_installation_confirm(self): + def cmd_ui_consumable_installation_confirm(self) -> None: """ Constructs and sends a ui consumable installation confirm message @@ -1567,7 +1563,7 @@ self.logger.debug("Sending user consumable installation confirm to HD.") self.can_interface.send(message, 0) - def cmd_ui_disposable_installation_confirm(self): + def cmd_ui_disposable_installation_confirm(self) -> None: """ Constructs and sends a ui disposable installation confirm message @@ -1580,7 +1576,7 @@ self.logger.debug("Sending user disposable installation confirm to HD.") self.can_interface.send(message, 0) - def cmd_ui_start_prime_request(self): + def cmd_ui_start_prime_request(self) -> None: """ Constructs and sends a ui start prime request message @@ -1593,7 +1589,7 @@ self.logger.debug("Sending user start prime request to HD.") self.can_interface.send(message, 0) - def cmd_ui_continue_to_treatment_request(self): + def cmd_ui_continue_to_treatment_request(self) -> None: """ Constructs and sends a ui continue to treatment request message @@ -1606,7 +1602,7 @@ self.logger.debug("Sending user continue to treatment request to HD.") self.can_interface.send(message, 0) - def cmd_ui_patient_connection_confirm(self): + def cmd_ui_patient_connection_confirm(self) -> None: """ Constructs and sends a ui patient connection confirm message @@ -1619,7 +1615,7 @@ self.logger.debug("Sending user continue to treatment request to HD.") self.can_interface.send(message, 0) - def cmd_ui_start_treatment_request(self): + def cmd_ui_start_treatment_request(self) -> None: """ Constructs and sends a ui start treatment request message @@ -1632,7 +1628,7 @@ self.logger.debug("Sending user start treatment request to HD.") self.can_interface.send(message, 0) - def cmd_ui_disposable_removal_confirm(self): + def cmd_ui_disposable_removal_confirm(self) -> None: """ Constructs and sends a ui disposable removal confirm message Index: dialin/ui/dg_simulator.py =================================================================== diff -u -rbfb0c47181dc8a73d09825ab697a7799dd520417 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision bfb0c47181dc8a73d09825ab697a7799dd520417) +++ dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -50,7 +50,7 @@ MsgIds.MSG_ID_REQUEST_FW_VERSIONS.value, self._handler_request_dg_version) self.can_interface.register_receiving_publication_function(DenaliChannels.ui_sync_broadcast_ch_id, - MsgIdsDialin.DMSG_ID_UI_SYSTEM_USAGE_REQUEST.value, + MsgIdsDialin.MSG_DIALIN_ID_UI_SYSTEM_USAGE_REQUEST.value, self._handler_system_usage_response) def _handler_system_usage_response(self, message: dict) -> None: @@ -66,7 +66,7 @@ payload += integer_to_bytearray(1619887863) message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_to_ui_ch_id, - message_id=MsgIdsDialin.DMSG_ID_DG_SYSTEM_USAGE_RESPONSE.value, + message_id=MsgIdsDialin.MSG_DIALIN_ID_DG_SYSTEM_USAGE_RESPONSE.value, payload=payload) self.can_interface.send(message, 0) @@ -434,7 +434,7 @@ payload = b'0123456789\0' message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_to_ui_ch_id, - message_id=MsgIdsDialin.DMSG_ID_DG_SERIAL_NUMBER_RESPONSE.value, + message_id=MsgIdsDialin.MSG_DIALIN_ID_DG_SERIAL_NUMBER_RESPONSE.value, payload=payload) self.can_interface.send(message, 0) Index: dialin/ui/hd_simulator.py =================================================================== diff -u -rbfb0c47181dc8a73d09825ab697a7799dd520417 -r9d116c25f6482d61d324558b8a1f745468030740 --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision bfb0c47181dc8a73d09825ab697a7799dd520417) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -80,7 +80,7 @@ MsgIds.MSG_ID_REQUEST_FW_VERSIONS.value, self._handler_request_hd_version) self.can_interface.register_receiving_publication_function(DenaliChannels.ui_sync_broadcast_ch_id, - MsgIdsDialin.DMSG_ID_UI_SYSTEM_USAGE_REQUEST.value, + MsgIdsDialin.MSG_DIALIN_ID_UI_SYSTEM_USAGE_REQUEST.value, self._handler_system_usage_response) self.alarms_simulator = HDAlarmsSimulator(self.can_interface, self.logger) @@ -98,7 +98,7 @@ payload += integer_to_bytearray(1619887863) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, - message_id=MsgIdsDialin.DMSG_ID_HD_SYSTEM_USAGE_RESPONSE.value, + message_id=MsgIdsDialin.MSG_DIALIN_ID_HD_SYSTEM_USAGE_RESPONSE.value, payload=payload) self.can_interface.send(message, 0) @@ -330,17 +330,21 @@ self.can_interface.send(message, 0) - def cmd_send_hd_operation_mode(self, mode): + def cmd_send_hd_operation_mode(self, opMode, subMode): """ Broadcasts the current HD operation mode - @param: (int) mode + @param: (int) opMode + @param: (int) subMode @return: None """ - if not isinstance(mode, int): + if not isinstance(opMode, int): raise ValueError("Provided mode is not of type 'int'") + if not isinstance(subMode, int): + raise ValueError("Provided mode is not of type 'int'") - payload = integer_to_bytearray(mode) + payload = integer_to_bytearray(opMode) + payload += integer_to_bytearray(subMode) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_HD_OP_MODE.value, @@ -672,7 +676,7 @@ :param dialysate_flow_rate: (int) Dialysate Flow Rate :return: None """ - + if not isinstance(accepted, int): accepted = int(accepted) if not isinstance(reason, int): @@ -1141,7 +1145,6 @@ self.can_interface.send(message, 0) - def cmd_send_treatment_adjust_pressures_limit_response(self, vAccepted, vReason, vArterialLow, vArterialHigh, vVenousLow, vVenousHigh): """ @@ -1391,7 +1394,7 @@ payload = bytearray('0123456789\0', encoding="utf-8") message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, - message_id=MsgIdsDialin.DMSG_ID_HD_SERIAL_NUMBER_RESPONSE.value, + message_id=MsgIdsDialin.MSG_DIALIN_ID_HD_SERIAL_NUMBER_RESPONSE.value, payload=payload) self.can_interface.send(message, 0) @@ -1431,3 +1434,273 @@ @return: (HDAlarmsSimulator) the alarms simulator """ return self.alarms_simulator + + def cmd_send_pre_treatment_state_data(self, + sub_mode, + water_sample_state, + consumables_self_test_state, + no_cartridge_self_test_state, + installation_state, + dry_self_test_state, + prime_state, + recirculate_state, + patient_connection_state): + """ + sends the broadcast message of the pre-treatment states + :param sub_mode : (U32) the main pre treatment state + :param water_sample_state : (U32) water sample state + :param consumables_self_test_state : (U32) consumables self test state + :param no_cartridge_self_test_state : (U32) no cartridge self-test state + :param installation_state : (U32) installation state + :param dry_self_test_state : (U32) dry self-test state + :param prime_state : (U32) prime state + :param recirculate_state : (U32) recirculate state + :param patient_connection_state : (U32) patient connection state + :return: + """ + payload = integer_to_bytearray(sub_mode) + payload += integer_to_bytearray(water_sample_state) + payload += integer_to_bytearray(consumables_self_test_state) + payload += integer_to_bytearray(no_cartridge_self_test_state) + payload += integer_to_bytearray(installation_state) + payload += integer_to_bytearray(dry_self_test_state) + payload += integer_to_bytearray(prime_state) + payload += integer_to_bytearray(recirculate_state) + payload += integer_to_bytearray(patient_connection_state) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, + message_id=MsgIds.MSG_ID_PRE_TREATMENT_STATE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_general_response(self, message_id, accepted, reason, fromHD = True): + """ + :param message_id: (int) the message id + :param accepted: (int) boolean accept/reject response + :param reason: (int) rejection reason + :return: none + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id= DenaliChannels.hd_to_ui_ch_id if fromHD else DenaliChannels.dg_to_ui_ch_id, + message_id=message_id, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_general_progress_data(self, message_id, total, countdown, fromHD = True): + """ + send the pretreatment filter flush progress data + :param accepted: (U32) Total time in second + :param reason: (U32) count down time in second + :return: None + """ + payload = integer_to_bytearray(total) + payload += integer_to_bytearray(countdown) + + message = DenaliMessage.build_message(channel_id= DenaliChannels.hd_to_ui_ch_id if fromHD else DenaliChannels.dg_to_ui_ch_id, + message_id=message_id, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_filter_flush_progress_data(self, total, countdown): + """ + send the pretreatment filter flush progress data + :param accepted: (U32) Total time in second + :param reason: (U32) count down time in second + :return: None + """ + payload = integer_to_bytearray(total) + payload += integer_to_bytearray(countdown) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_to_ui_ch_id, + message_id=MsgIds.MSG_ID_DG_FILTER_FLUSH_PROGRESS.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_water_sample_response(self, accepted, reason ): + """ + send the pretreatment water sample response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_SAMPLE_WATER_CMD_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_self_test_no_cartridge_progress_data(self, total, countdown): + """ + send the pretreatment no cartridge self-tests progress data + :param accepted: (U32) Total time in second + :param reason: (U32) count down time in second + :return: None + """ + payload = integer_to_bytearray(total) + payload += integer_to_bytearray(countdown) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_NO_CART_SELF_TEST_PROGRESS.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_self_test_dry_progress_data(self, total, countdown): + """ + send the pretreatment dry self-tests progress data + :param accepted: (U32) Total time in second + :param reason: (U32) count down time in second + :return: None + """ + payload = integer_to_bytearray(total) + payload += integer_to_bytearray(countdown) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_DRY_SELF_TEST_PROGRESS.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_disposables_prime_progress_data(self, timeout, countdown): + """ + Broadcasts the progress time data of pre-treatment disposables priming to the UI + :param timeout : (int) the total progress time timeout in seconds + :param countdown: (int) the remaining time in seconds + :return: None + """ + payload = bytearray() + payload += integer_to_bytearray(timeout) + payload += integer_to_bytearray(countdown) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, + message_id=MsgIds.MSG_ID_HD_PRIMING_STATUS_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_prime_start_response(self, accepted, reason ): + """ + send the pretreatment prime start response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_START_PRIME_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_continue_to_treament_response(self, accepted, reason ): + """ + send the pretreatment continue to treatment response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_START_TREATMENT_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_pre_treatment_patient_connection_confirm_response(self, accepted, reason ): + """ + send the pretreatment patient connection confirm response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_PATIENT_CONNECTION_CONFIRM_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_post_treatment_disposable_removal_confirm_response(self, accepted, reason ): + """ + send post treatment disposable removal confirm response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_DISPOSABLE_REMOVAL_CONFIRM_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_post_treatment_disposable_removal_confirm_response(self, accepted, reason ): + """ + send post treatment disposable removal confirm response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_DISPOSABLE_REMOVAL_CONFIRM_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_post_treatment_log_response(self, accepted, reason, parameters): + """ + send post treatment log response + :param accepted: (U32) accept or reject + :param reason: (U32) rejection reason + :param parameters: (array of values) + :return: None + """ + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(reason) + for parameter in parameters: + payload += parameter + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_TREATMENT_LOG_DATA_RESPONSE.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_dg_disinfection_state(self, subMode, flushMode, heatMode, chemicalMode): + """ + Broadcasts the current DG disinfection mode + :param subMode (int): disinfect states + :param flushMode (int): flush states + :param heatMode (int): heat states + :param ChemicalMode (int): chemical states + :return: + """ + payload = integer_to_bytearray(subMode) + payload += integer_to_bytearray(flushMode) + payload += integer_to_bytearray(heatMode) + payload += integer_to_bytearray(chemicalMode) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_sync_broadcast_ch_id, + message_id=MsgIdsDialin.MSG_DIALIN_ID_HD_DISINFECT_STATE.value, + payload=payload) + self.can_interface.send(message, 0) \ No newline at end of file Index: tests/peter/test_calibration.py =================================================================== diff -u -r1508298c28026c5a1df24fb8e614cb8ab65b2e09 -r9d116c25f6482d61d324558b8a1f745468030740 --- tests/peter/test_calibration.py (.../test_calibration.py) (revision 1508298c28026c5a1df24fb8e614cb8ab65b2e09) +++ tests/peter/test_calibration.py (.../test_calibration.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -292,11 +292,4 @@ # test_hd_calibration_record() # test_hd_service_record() test_hd_system_record() - # test_crc() - - - - - - - + # test_crc() \ No newline at end of file Index: tests/unit_tests/test_imports.py =================================================================== diff -u -rf053467ac7cfb9fe349e394342d3a9253a377403 -r9d116c25f6482d61d324558b8a1f745468030740 --- tests/unit_tests/test_imports.py (.../test_imports.py) (revision f053467ac7cfb9fe349e394342d3a9253a377403) +++ tests/unit_tests/test_imports.py (.../test_imports.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -89,7 +89,7 @@ from dialin.dg import TemperatureSensors from dialin.dg import DGValves - from dialin.ui import HDSimulator, HDAlarmsSimulator + from dialin.ui import HDSimulator def test_common(self): from dialin.common import (AlarmList, Index: tests/unit_tests/test_ui_proxy.py =================================================================== diff -u -r5f420f989a3b1652faef66c99777233f152954a1 -r9d116c25f6482d61d324558b8a1f745468030740 --- tests/unit_tests/test_ui_proxy.py (.../test_ui_proxy.py) (revision 5f420f989a3b1652faef66c99777233f152954a1) +++ tests/unit_tests/test_ui_proxy.py (.../test_ui_proxy.py) (revision 9d116c25f6482d61d324558b8a1f745468030740) @@ -18,13 +18,13 @@ import struct sys.path.append("../../") from dialin import HD -from dialin.utils.base import setup_virtual_can_interface +from dialin.utils import setup_virtual_can_interface from collections import OrderedDict from dialin.utils.conversions import integer_to_bytearray, float_to_bytearray from dialin.protocols.CAN import (DenaliMessage, DenaliChannels) from dialin.common import MsgIds -from dialin.utils.base import is_interface_up, is_interface_present +from dialin.utils import is_interface_up, is_interface_present class Test(unittest.TestCase):