Index: dialin/common/msg_ids.py =================================================================== diff -u -rc8f72e093dcecb791c8209911773630a822c7e03 -rbdd8d24d7c305261b03a27cec62e0d19aa6a75eb --- dialin/common/msg_ids.py (.../msg_ids.py) (revision c8f72e093dcecb791c8209911773630a822c7e03) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision bdd8d24d7c305261b03a27cec62e0d19aa6a75eb) @@ -5,12 +5,12 @@ # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # -# @file msg_ids.py +# @file msg_ids.py # -# @author (last) Peter Lucia -# @date (last) 05-Aug-2021 -# @author (original) Peter Lucia -# @date (original) 05-Aug-2021 +# @author (last) Quang Nguyen +# @date (last) 30-Aug-2021 +# @author (original) Peter Lucia +# @date (original) 06-Apr-2021 # ############################################################################ from enum import unique @@ -184,6 +184,8 @@ MSG_ID_DG_SWITCHES_DATA = 0XA1 MSG_ID_HD_SWITCHES_DATA = 0XA2 MSG_ID_HD_FANS_DATA = 0XA3 + MSG_ID_HD_EVENT = 0xA4 + MSG_ID_DG_EVENT = 0xA5 MSG_ID_DG_DIALYSATE_FLOW_METER_DATA = 0xA6 MSG_ID_CAN_ERROR_COUNT = 0X999 MSG_ID_TESTER_LOGIN_REQUEST = 0X8000 @@ -283,8 +285,8 @@ MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE = 0X805F MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST = 0X8060 MSG_ID_HD_BLOOD_PRIME_SAFETY_VOLUME_OVERRIDE = 0X8061 - MSG_ID_HD_SWITCHES_STATUS_OVERRIDE = 0x8062 - MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0x8063 + MSG_ID_HD_SWITCHES_STATUS_OVERRIDE = 0X8062 + MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0X8063 MSG_ID_HD_BATTERY_REMAINING_PERCENT_OVERRIDE = 0x8064 MSG_ID_HD_TEMPERATURES_VALUE_OVERRIDE = 0x8065 MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRIDE = 0x8066 @@ -305,7 +307,7 @@ MSG_ID_HD_POST_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE = 0x8075 MSG_ID_HD_BLOCK_MESSAGE_TRANSMISSION = 0x8076 MSG_ID_HD_SYRINGE_PUMP_FORCE_SENSOR_DAC_CALIBRATE = 0x8077 - + MSG_ID_HD_STOP_RTC_CLOCK = 0x8078 MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 MSG_ID_DG_ALARM_STATE_OVERRIDE = 0XA001 MSG_ID_DG_WATCHDOG_TASK_CHECKIN_OVERRIDE = 0XA002 @@ -332,7 +334,7 @@ MSG_ID_DG_ACCEL_SEND_INTERVAL_OVERRIDE = 0XA019 MSG_ID_DG_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE = 0XA01A MSG_ID_DG_MONITORED_VOLTAGES_OVERRIDE = 0XA01B - MSG_ID_DRAIN_PUMP_SET_DELTA_PRESSURE_OVERRIDE = 0XA01C + MSG_ID_DRAIN_PUMP_TARGET_OUTLET_PRESSURE = 0XA01C MSG_ID_DG_SWITCHES_STATUS_OVERRIDE = 0XA01D MSG_ID_DG_SWITCHES_PUBLISH_INTERVAL_OVERRIDE = 0XA01E MSG_ID_DG_OP_MODE_PUBLISH_INTERVAL_OVERRIDE = 0XA01F @@ -352,7 +354,7 @@ MSG_ID_DG_THERMISTORS_VALUE_OVERRIDE = 0XA02E MSG_ID_DG_RO_PUMP_DUTY_CYCLE_OVERRIDE = 0XA02F MSG_ID_DG_RO_FLOW_RATE_OVERRIDE = 0XA030 - MSG_ID_DG_RO_PUMP_TARGET_FLOW_OVERRIDE = 0XA031 + MSG_ID_DG_SET_RO_PUMP_TARGET_FLOW = 0XA031 MSG_ID_DG_RO_PUMP_TARGET_PRESSURE_OVERRIDE = 0XA032 MSG_ID_DG_SET_CALIBRATION_RECORD = 0XA033 MSG_ID_DG_GET_CALIBRATION_RECORD = 0XA034 @@ -370,7 +372,9 @@ MSG_ID_DG_FLUID_LEAK_STATE_DETECTOR_OVERRIDE = 0XA040 MSG_ID_DG_FLUSH_PUBLISH_INTERVAL_OVERRIDE = 0XA041 MSG_ID_FILTER_FLUSH_TIME_PERIOD_OVERRIDE = 0XA042 + MSG_ID_DG_FANS_RPM_OVERRIDE = 0xA043 MSG_ID_DIALYSATE_FLOW_SEND_INTERVAL_OVERRIDE = 0xA044 + MSG_ID_DG_STOP_RTC_CLOCK = 0xA045 MSG_ID_HD_DEBUG_EVENT = 0XFFF1 MSG_ID_DG_DEBUG_EVENT = 0XFFF2 MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK = 0XFFFF Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -r3dc6f8a5072178c107f7f273aae5f34ca1d06e4d -rbdd8d24d7c305261b03a27cec62e0d19aa6a75eb --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 3dc6f8a5072178c107f7f273aae5f34ca1d06e4d) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision bdd8d24d7c305261b03a27cec62e0d19aa6a75eb) @@ -1,16 +1,16 @@ ########################################################################### # -# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. # # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # -# @file dialysate_generator.py +# @file dialysate_generator.py # -# @author (last) Peter Lucia -# @date (last) 10-Nov-2020 -# @author (original) Peter Lucia -# @date (original) 02-Apr-2020 +# @author (last) Quang Nguyen +# @date (last) 30-Aug-2021 +# @author (original) Peter Lucia +# @date (original) 02-Apr-2020 # ############################################################################ @@ -46,7 +46,15 @@ from .uv_reactors import UVReactors from .valves import DGValves from .voltages import DGVoltages +from .events import DGEvents from ..common.msg_defs import MsgIds, MsgFieldPositions +from .flush import FlushMode +from .chemical_disinfect import ChemicalDisinfect +from .heat_disinfect import HeatDisinfect +from .rtc import DGRTC +from .switches import DGSwitches +from enum import unique +from .constants import NO_RESET from ..protocols.CAN import DenaliCanMessenger, DenaliMessage, DenaliChannels from ..utils import * from ..utils.base import AbstractSubSystem, publish, LogManager, DialinEnum @@ -61,7 +69,7 @@ DG_OP_MODE_INIT_POST = 2 DG_OP_MODE_STANDBY = 3 DG_OP_MODE_STANDBY_SOLO = 4 - DG_OP_MODE_RECIRCULATE = 5 + DG_OP_MODE_GEN_IDLE = 5 DG_OP_MODE_FILL = 6 DG_OP_MODE_DRAIN = 7 DG_OP_MODE_FLUSH = 8 @@ -182,6 +190,7 @@ self.uv_reactors = UVReactors(self.can_interface, self.logger) self.valves = DGValves(self.can_interface, self.logger) self.voltages = DGVoltages(self.can_interface, self.logger) + self.events = DGEvents(self.can_interface, self.logger) def get_version(self): """ Index: tests/test_uf.py =================================================================== diff -u -r8474f8e345f165187d4dde17840575ee4e98a9b4 -rbdd8d24d7c305261b03a27cec62e0d19aa6a75eb --- tests/test_uf.py (.../test_uf.py) (revision 8474f8e345f165187d4dde17840575ee4e98a9b4) +++ tests/test_uf.py (.../test_uf.py) (revision bdd8d24d7c305261b03a27cec62e0d19aa6a75eb) @@ -71,6 +71,7 @@ ", DPi.f, " + '{:7.1f}'.format(hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate) + \ ", DPo.m, " + '{:7.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_speed) + \ ", DPo.r, " + '{:6.1f}'.format(hd.dialysate_outlet_flow.measured_dialysate_outlet_pump_rotor_speed) + \ + ", FMD.f, " + '{:7.4f}'.format(dg.dialysate_flow_sensor.get_flow_rate()) + \ ", ROP.f, " + '{:9.3f}'.format(dg.ro_pump.measured_flow_rate_lpm) pumpPWMs = ", BP.w, "+'{:6.1f}'.format(hd.bloodflow.pwm_duty_cycle_pct) + \ ", DPi.w, " + '{:6.1f}'.format(hd.dialysate_inlet_flow.pwm_duty_cycle_pct) + \ @@ -83,9 +84,7 @@ ", PDr, " + '{:9.2f}'.format(dg.pressures.drain_pump_outlet_pressure) hdPress = ", PBA, " + '{:9.2f}'.format(hd.pressure_occlusion.arterial_pressure) + \ ", PBV, " + '{:9.2f}'.format(hd.pressure_occlusion.venous_pressure) + \ - ", OB, " + '{:7d}'.format(hd.pressure_occlusion.blood_pump_occlusion) + \ - ", ODi, " + '{:7d}'.format(hd.pressure_occlusion.dialysate_inlet_pump_occlusion) + \ - ", ODo, " + '{:7d}'.format(hd.pressure_occlusion.dialysate_outlet_pump_occlusion) + ", OB, " + '{:7d}'.format(hd.pressure_occlusion.blood_pump_occlusion) Temps = ", TPi, " + '{:9.2f}'.format(dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_PRIMARY_HEATER.name]) + \ ", TPo, " + '{:9.2f}'.format(dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.OUTLET_PRIMARY_HEATER.name]) + \ ", TRo, " + '{:9.2f}'.format(dg.temperature_sensors.temperature_sensors[TemperatureSensorsNames.INLET_DIALYSATE.name]) + \