Index: HemodialysisDevice.py =================================================================== diff -u -r92b40e700a1d5689f1e5bef79e01e5a793937799 -r519260ce5bc660d7d44c612848412ea4e50ca662 --- HemodialysisDevice.py (.../HemodialysisDevice.py) (revision 92b40e700a1d5689f1e5bef79e01e5a793937799) +++ HemodialysisDevice.py (.../HemodialysisDevice.py) (revision 519260ce5bc660d7d44c612848412ea4e50ca662) @@ -20,6 +20,8 @@ from DialityCoreCanProtocol import DenaliChannels from time import sleep from binascii import unhexlify +#from HD_DialOutFlow import HD_DialOut +#from HD_DialOutFlow import DialOutStates import struct import ctypes @@ -51,8 +53,10 @@ self.Buttons = HD.HD_Buttons(self) self.BloodFlow = HD.HD_BloodFlow(self, self.can_interface) self.RTC = HD.HD_RTC(self, self.can_interface) - self.DialysateInletFlow = HD.HD_DialysateInletFlow(self, self.can_interface) + #self.DialysateInletFlow = HD.HD_DialysateInletFlow(self, self.can_interface) self.Watchdog = HD.HD_Watchdog(self) + ## DialOut is an HD_DialOutFlow object + # self.DialOut = HD_DialOut(self.can_interface) class HD__Basics: """ @@ -326,6 +330,7 @@ START_POS_ALARM_ESCALATES_IN = END_POS_ALARM_SILENCE_EXPIRES_IN END_POS_ALARM_ESCALATES_IN = START_POS_ALARM_ESCALATES_IN + 4 START_POS_ALARMS_FLAGS = END_POS_ALARM_ESCALATES_IN + END_POS_ALARMS_FLAGS = START_POS_ALARMS_FLAGS + 2 def __init__(self, outer_instance, can_interface=None): @@ -657,6 +662,7 @@ # byteorder=DenaliMessage.BYTE_ORDER) tgt = struct.unpack('i',bytearray( message['message'][self.START_POS_SET_PT:self.END_POS_SET_PT])) + flow = struct.unpack('f', bytearray( message['message'][self.START_POS_MEAS_FLOW:self.END_POS_MEAS_FLOW])) rotor = struct.unpack('f', bytearray( @@ -1315,6 +1321,47 @@ # t2 = message_id +def test_HD_DialOutFlow(): + """ + test_HD_DialOutFlow is a pytest function to test the HD_DialOutFlow states + + :return: True if test passed, False, otherwise + """ + # create an HD object called hd + hd_obj = HD() + + # wait 2 seconds and then login to HD as a tester + sleep(2) + hd_obj._Basics.CmdLogInToHD() + + totalVolumeInMl = 2400 + rxTimeInMins = 240 + flowRateMlmin = 100 + + hd_obj.DialOut.setUFRx(totalVolumeInMl, rxTimeInMins, flowRateMlmin) + + + sleep(5) + hd_obj.DialOut.setUFState(DialOutStates.RUN) + sleep(2) + state_run = hd_obj.DialOut.DialOutBroadcast['state'] + print(hd_obj.DialOut.DialOutBroadcast) + + sleep(5) + hd_obj.DialOut.setUFState(DialOutStates.PAUSE) + sleep(2) + state_pause = hd_obj.DialOut.DialOutBroadcast['state'] + print(hd_obj.DialOut.DialOutBroadcast) + + sleep(3) + hd_obj.DialOut.setUFState(DialOutStates.STOP) + sleep(2) + state_stop = hd_obj.DialOut.DialOutBroadcast['state'] + print(hd_obj.DialOut.DialOutBroadcast) + + assert(state_run == 'RUN' and state_stop == 'STOP' and state_pause == 'PAUSE') + + if __name__ == "__main__": # create an HD object called hd hd = HD() @@ -1328,9 +1375,61 @@ while True: print(hd.RTC.RTCEpoch) sleep(1) - """" hd.BloodFlow.CmdBloodPumpMeasuredCurrentOverride(hd.NO_RESET,149) + totalVolumeInMl = 2400 + rxTimeInMins = 30 + flowRateMlmin = 100 + + sleep(2) + resp = hd.DialOut.setUFRx(totalVolumeInMl, rxTimeInMins, flowRateMlmin) + print("Set TotalVolume(mL): {}, TotalTime(mins): {} and flowrate (ml/min): {}, resp: {}".format(totalVolumeInMl, + rxTimeInMins, flowRateMlmin, resp)) + + sleep(2) + rxTimeInMins = 60 + resp = hd.DialOut.setUFRx(totalVolumeInMl, rxTimeInMins, flowRateMlmin) + print("Set TotalVolume(mL): {}, TotalTime(mins): {} and flowrate (ml/min): {}, resp: {}".format(totalVolumeInMl, + rxTimeInMins, flowRateMlmin, resp)) + + sleep(5) + hd.DialOut.setUFState(DialOutStates.RUN) + state_run = hd.DialOut.DialOutBroadcast['state'] + sleep(2) + print("After RUN: {}".format(hd.DialOut.DialOutBroadcast)) + + sleep(20) + print("After 20 secs RUN: {}".format(hd.DialOut.DialOutBroadcast)) + + sleep(20) + print("After 40 secs RUN: {}".format(hd.DialOut.DialOutBroadcast)) + + hd.DialOut.setUFState(DialOutStates.PAUSE) + sleep(2) + print("After PAUSE: {}".format(hd.DialOut.DialOutBroadcast)) + state_pause = hd.DialOut.DialOutBroadcast['state'] + + sleep(10) + hd.DialOut.setUFState(DialOutStates.STOP) + sleep(2) + print("---> After STOP:{} <---".format(hd.DialOut.DialOutBroadcast)) + + sleep(3) + hd.DialOut.setUFState(DialOutStates.RUN) + sleep(2) + state_stop = hd.DialOut.DialOutBroadcast['state'] + print("After RUN again: {}".format(hd.DialOut.DialOutBroadcast)) + + sleep(3) + hd.DialOut.setUFState(DialOutStates.STOP) + sleep(2) + state_stop = hd.DialOut.DialOutBroadcast['state'] + print("After STOP: {}".format(hd.DialOut.DialOutBroadcast)) + + sleep(5) + hd.DialOut.plotBroadCastSignals() + + exit() tgtRate = 0 hd.BloodFlow.CmdBloodFlowBroadcastIntervalOverride(hd.NO_RESET, 2000)