Index: dialin/common/hd_defs.py =================================================================== diff -u -r16df0ff9933597a0147fb309c0d2120804255fca -r8e276429c6f75054a470f113d3b2ea99f80a6c7c --- dialin/common/hd_defs.py (.../hd_defs.py) (revision 16df0ff9933597a0147fb309c0d2120804255fca) +++ dialin/common/hd_defs.py (.../hd_defs.py) (revision 8e276429c6f75054a470f113d3b2ea99f80a6c7c) @@ -130,7 +130,20 @@ WET_SELF_TESTS_STOPPED_STATE = 12 WET_SELF_TESTS_COMPLETE_STATE = 13 +@unique +class HDPreTreatmentReservoirMgmtStates(DialinEnum): + PRE_TREATMENT_RESERVOIR_MGMT_START_STATE = 0 # Wait for signal to start drain and fill reservoirs + PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE = 1 # Command DG to start draining reservoir + PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE = 2 # After sending drain command, process DG drain command response + PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE = 3 # Command DG to start filling reservoir + PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE = 4 # After sending fill command, process DG fill command response + PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE = 5 # Reservoir fill has completed + PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE = 6 # Command DG to switch (toggle) reservoirs + PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE = 7 # After sending switch command, process DG fill command response + PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE = 8 # Pre-treatment reservoir management complete state + NUM_OF_PRE_TREATMENT_RESERVOIR_MGMT_STATES = 9 # Number of pre-treatments reservoir mgmt. states + # Heparin states @unique class HeparinStates(DialinEnum): Index: dialin/ui/hd_simulator.py =================================================================== diff -u -r46dcf853449fc4408abf92de8ddca2b84a587df1 -r8e276429c6f75054a470f113d3b2ea99f80a6c7c --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 46dcf853449fc4408abf92de8ddca2b84a587df1) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 8e276429c6f75054a470f113d3b2ea99f80a6c7c) @@ -666,7 +666,8 @@ def cmd_set_treatment_blood_flow_rate(self, flow_set_pt: int, measured_flow: float, rot_speed: float, mot_speed: float, mc_speed: float, - mc_current: float, pwm: float, rotor_count: int) -> None: + mc_current: float, pwm: float, rotor_count: int, + pres_flow: int, rotor_hall: int) -> None: """ The Blood Flow Data message setter/sender method @@ -682,6 +683,8 @@ @param mc_current: (float) MC Current @param pwm: (float) PWM @param rotor_count: (int) Rotor Count + @param pres_flow: (int) Prescribed flow rate + @param rotor_hall: (int) Rotor hall sensor @return: None """ @@ -693,6 +696,8 @@ payload += float_to_bytearray(mc_current) payload += float_to_bytearray(pwm) payload += integer_to_bytearray(rotor_count) + payload += integer_to_bytearray(pres_flow) + payload += integer_to_bytearray(rotor_hall) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_BLOOD_FLOW_DATA.value, @@ -702,7 +707,8 @@ def cmd_set_treatment_dialysate_flow_rate(self, flow_set_pt: int, measured_flow: float, rot_speed: float, mot_speed: float, mc_speed: float, - mc_current: float, pwm: float) -> None: + mc_current: float, pwm: float, rotor_count: int, + pres_flow: int, rotor_hall: int) -> None: """ The Dialysate Flow Data message setter/sender method @@ -717,6 +723,9 @@ @param mc_speed: (float) MC Speed @param mc_current: (float) MC Current @param pwm: (float) PWM + @param rotor_count: (int) Rotor Count + @param pres_flow: (int) Prescribed flow rate + @param rotor_hall: (int) Rotor hall sensor @return: None """ @@ -727,6 +736,9 @@ payload += float_to_bytearray(mc_speed) payload += float_to_bytearray(mc_current) payload += float_to_bytearray(pwm) + payload += integer_to_bytearray(rotor_count) + payload += integer_to_bytearray(pres_flow) + payload += integer_to_bytearray(rotor_hall) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_DIALYSATE_FLOW_DATA.value, @@ -969,7 +981,9 @@ def cmd_set_treatment_ultrafiltration_outlet_flow_data(self, ref_uf_vol: float, measured_uf_vol: float, rot_speed: float, mot_speed: float, mc_speed: float, - mc_current: float, pwm: float) -> None: + mc_current: float, pwm: float, dop_corr_offset: float, + dop_calc_rate: float, uf_calc_rate: float, rotor_hall: int, + current_set_uf_rate: float) -> None: """ the Outlet Flow Data message setter/sender method @@ -984,6 +998,11 @@ @param mc_speed: (float) MC Speed @param mc_current: (float) MC Current @param pwm: (float) PWM + @param dop_corr_offset: (float) correction offset + @param dop_calc_rate: (float) calculated dop flow rate + @param uf_calc_rate: (float) calculated uf flow rate + @param rotor_hall: (int) rotor hall sensor + @param current_set_uf_rate: (float) set UF rate @return: none """ @@ -994,6 +1013,11 @@ payload += float_to_bytearray(mc_speed) payload += float_to_bytearray(mc_current) payload += float_to_bytearray(pwm) + payload += float_to_bytearray(dop_corr_offset) + payload += float_to_bytearray(dop_calc_rate) + payload += float_to_bytearray(uf_calc_rate) + payload += integer_to_bytearray(rotor_hall) + payload += float_to_bytearray(current_set_uf_rate) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_DIALYSATE_OUT_FLOW_DATA.value, @@ -1002,7 +1026,9 @@ self.can_interface.send(message, 0) def cmd_set_pressure_occlusion_data(self, arterial_prs: float, venous_prs: float, blood_pump_occlusion: int, - dialysate_inlet_pump_occlusion: int, dialysate_outlet_pump_occlusion) -> None: + pressure_state: int, art_min_limit: int, art_max_limit: int, + ven_min_limit: int, ven_max_limit: int, filtered_arterial_prs: float, + filtered_venous_prs : float) -> None: """ the Pressure/Occlusion Data messages setter/sender method @@ -1013,16 +1039,26 @@ @param arterial_prs: (float) Arterial Pressure @param venous_prs: (float) Venous Pressure @param blood_pump_occlusion: (uint) Blood Pump Occlusion - @param dialysate_inlet_pump_occlusion: (uint) Dialysate Inlet Pump Occlusion - @param dialysate_outlet_pump_occlusion: (uint) Dialysate Outlet Pump Occlusion + @param pressure_state: (uint) Pressure state + @param art_min_limit: (int) arterial minimum limit + @param art_max_limit: (int) arterial maximum limit + @param ven_min_limit: (int) venous minimum limit + @param ven_max_limit: (int) venous maximum limit + @param filtered_arterial_prs: (float) filtered arterial pressure + @param filtered_venous_prs: (float) filtered venous pressure @return: none """ payload = float_to_bytearray(arterial_prs) payload += float_to_bytearray(venous_prs) payload += integer_to_bytearray(blood_pump_occlusion) - payload += integer_to_bytearray(dialysate_inlet_pump_occlusion) - payload += integer_to_bytearray(dialysate_outlet_pump_occlusion) + payload += integer_to_bytearray(pressure_state) + payload += integer_to_bytearray(art_min_limit) + payload += integer_to_bytearray(art_max_limit) + payload += integer_to_bytearray(ven_min_limit) + payload += integer_to_bytearray(ven_max_limit) + payload += float_to_bytearray(filtered_arterial_prs) + payload += float_to_bytearray(filtered_venous_prs) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_PRESSURE_OCCLUSION_DATA.value, @@ -1152,7 +1188,6 @@ @param accepted: (int) boolean accept/reject response @param reason: (int) rejection reason @param target: (int) Saline Bolus Target Volume - @param state: (int) Saline Bolus current State @return: none """ @@ -1237,8 +1272,8 @@ self.can_interface.send(message, 0) def cmd_send_treatment_adjust_pressures_limit_response(self, accepted: int, reason: int, - arterial_low: int, arterial_high: int, - venous_low: int, venous_high: int) -> None: + art_pressure_limit_window: int, ven_pressure_limit_window: int, + ven_pressure_asym_limit_window: int) -> None: """ the Blood/dialysate rate change Response message setter/sender method | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(U32) | #2:(U32) | #3:(S32) | #4:(S32) | #3:(S32) | #4:(S32) | @@ -1247,19 +1282,17 @@ @param accepted: (int) boolean accept/reject response @param reason: (int) rejection reason - @param arterial_low: (int) Arterial Pressure Limit Low (mmHg) - @param arterial_high: (int) Arterial Pressure Limit High (mmHg) - @param venous_low: (int) Venous Pressure Limit Low (mmHg) - @param venous_high: (int) Venous Pressure Limit High (mmHg) + @param art_pressure_limit_window: (int) Arterial Pressure Limit window (mmHg) + @param ven_pressure_limit_window: (int) Venous Pressure Limit window (mmHg) + @param ven_pressure_asym_limit_window: (int) Venous Pressure asymmetric limit window (mmHg) @return: none """ payload = integer_to_bytearray(accepted) payload += integer_to_bytearray(reason) - payload += integer_to_bytearray(arterial_low) - payload += integer_to_bytearray(arterial_high) - payload += integer_to_bytearray(venous_low) - payload += integer_to_bytearray(venous_high) + payload += integer_to_bytearray(art_pressure_limit_window) + payload += integer_to_bytearray(ven_pressure_limit_window) + payload += integer_to_bytearray(ven_pressure_asym_limit_window) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, message_id=MsgIds.MSG_ID_HD_PRESSURE_LIMITS_CHANGE_RESPONSE.value, @@ -2078,35 +2111,21 @@ .format(ui_major, ui_minor, ui_micro, ui_build, ui_compatibility)) def cmd_send_hd_blood_leak_data(self, blood_leak_status: int, blood_leak_state: int, - blood_leak_zero_status_counter: int, blood_leak_counter: int, - blood_leak_zeroed_status: int, blood_leak_detect_set_point: int, - blood_leak_detect_level: int, blood_leak_st_count: int, - blood_leak_led_intensity: int, blood_leak_register_counter: int) -> None: + blood_leak_zero_status_counter: int, blood_leak_serial_state: int) -> None: """ A simulated HD broadcast message of blood leak data. @param blood_leak_status: (int) Blood leak status @param blood_leak_state: (int) Blood leak state @param blood_leak_zero_status_counter: (int) Blood leak zero status counter - @param blood_leak_counter: (int) Blood leak counter - @param blood_leak_zeroed_status: (int) Blood leak zeroed status - @param blood_leak_detect_set_point: (int) Blood leak detect set point - @param blood_leak_detect_level: (int) Blood leak detect level - @param blood_leak_st_count: (int) Blood leak st count - @param blood_leak_led_intensity: (int) Blood leak LED intensity - @param blood_leak_register_counter: (int) Blood leak register counter + @param blood_leak_serial_state: (int) Blood leak serial comm state + @return: None """ payload = unsigned_integer_to_bytearray(blood_leak_status) payload += unsigned_integer_to_bytearray(blood_leak_state) payload += unsigned_integer_to_bytearray(blood_leak_zero_status_counter) - payload += unsigned_integer_to_bytearray(blood_leak_counter) - payload += unsigned_integer_to_bytearray(blood_leak_zeroed_status) - payload += unsigned_integer_to_bytearray(blood_leak_detect_set_point) - payload += unsigned_integer_to_bytearray(blood_leak_detect_level) - payload += unsigned_integer_to_bytearray(blood_leak_st_count) - payload += unsigned_integer_to_bytearray(blood_leak_led_intensity) - payload += unsigned_integer_to_bytearray(blood_leak_register_counter) + payload += unsigned_integer_to_bytearray(blood_leak_serial_state) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_HD_BLOOD_LEAK_DATA.value, Index: dialin/ui/unittests.py =================================================================== diff -u -racd09d02879e8add4cf7f694f5db8e423a76c341 -r8e276429c6f75054a470f113d3b2ea99f80a6c7c --- dialin/ui/unittests.py (.../unittests.py) (revision acd09d02879e8add4cf7f694f5db8e423a76c341) +++ dialin/ui/unittests.py (.../unittests.py) (revision 8e276429c6f75054a470f113d3b2ea99f80a6c7c) @@ -19,7 +19,7 @@ from dialin.ui import crc from dialin.ui.utils import check_can0 -MICRO = [8, 9] +MICRO = [8, 9, 10] def test_python_version(): @@ -28,7 +28,7 @@ @return: None """ test.compare(sys.version_info.major, 3) - test.compare(sys.version_info.minor, 6) + test.compare(sys.version_info.minor, 8) test.compare(sys.version_info.micro in MICRO, True)