Index: dialin/ui/hd_simulator.py =================================================================== diff -u -re55ac65c47c243e4a942688ff9c94805a9cea76b -r2a98d3c2f9b7cc7ef136729725ba3d83249230ae --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision e55ac65c47c243e4a942688ff9c94805a9cea76b) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 2a98d3c2f9b7cc7ef136729725ba3d83249230ae) @@ -24,9 +24,9 @@ from threading import Semaphore from random import random from copy import deepcopy +from math import copysign import threading as threads_here from time import time, sleep - def catch_exception(f): @functools.wraps(f) def func(*args, **kwargs): @@ -297,8 +297,10 @@ self.demoCountdownId = self.pause_demoId self.demoCount = self.pause_demoCount self.demoCounter = self.demoCount - 1 + if self.demoSelection == 42: # Rinseback in process; short cycle it + self.rinseback_volume_out_ml = self.rinseback_volume_set_ml - 1 + self.rinseback_volume_all_ml = self.rinseback_volume_out_ml - # INITIATE A NEW TREATMENT SETUP ---------------------------------- elif msg_id == MsgIds.MSG_ID_UI_INITIATE_TREATMENT_REQUEST.value: rsp_id = MsgIds.MSG_ID_HD_OP_MODE @@ -337,6 +339,8 @@ + self.demo_treatment_params.data_int[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_HIGH_LIMIT_MMHG.value]) / 2 self.venous_pressure_mid_mmHg = (self.demo_treatment_params.data_int[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_LOW_LIMIT_MMHG.value] + self.demo_treatment_params.data_int[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_HIGH_LIMIT_MMHG.value]) / 2 + self.arterial_pressure_mmHg = self.arterial_pressure_mid_mmHg - 32.0 # simulation + self.venous_pressure_mmHg = self.venous_pressure_mid_mmHg + 32 # simulation # Rinseback self.rinseback_volume_set_ml = 80 + 120 # TBD! 80 + should be based on dialyzer blood volume? self.rinsebackVelocity_ml_per_sec = params.data_int[TreatmentParameters.TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN.value] / 60.0 @@ -915,11 +919,12 @@ # MSG_ID_PRESSURE_OCCLUSION_DATA ## TBD! combine with Treatment update data self.arterial_pressure_mmHg += (random() - 0.5) * 10 # TBD! replace magic wander numbers - if self.arterial_pressure_mmHg > (self.arterial_pressure_mid_mmHg + 30): - self.arterial_pressure_mmHg -= 5 - self.venous_pressure_mmHg += (random() - 0.5) * 10 - if self.venous_pressure_mmHg > (self.venous_pressure_mid_mmHg + 30): - self.venous_pressure_mmHg -= 5 + delta = self.arterial_pressure_mmHg - self.arterial_pressure_mid_mmHg + if abs(delta) > 30: + self.arterial_pressure_mmHg -= copysign(5, delta) + delta = self.venous_pressure_mmHg - self.venous_pressure_mid_mmHg + if abs(delta) > 30: + self.venous_pressure_mmHg -= copysign(5, delta) self.cmd_set_pressure_occlusion_data(arterial_prs=self.arterial_pressure_mmHg, venous_prs=self.venous_pressure_mmHg, blood_pump_occlusion=0,