Index: dialin/dg/chemical_disinfect.py =================================================================== diff -u -r5dc79b5e29a9cd78d5991525472859238f1df8ae -r51ccf9db3b88bc2ca473b511bf9b98f40d343bf1 --- dialin/dg/chemical_disinfect.py (.../chemical_disinfect.py) (revision 5dc79b5e29a9cd78d5991525472859238f1df8ae) +++ dialin/dg/chemical_disinfect.py (.../chemical_disinfect.py) (revision 51ccf9db3b88bc2ca473b511bf9b98f40d343bf1) @@ -50,7 +50,6 @@ self.r1_level = 0 self.r2_level = 0 self.chemical_disinfect_ui_state = 0 - self.chem_nelson_support = 0 if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id @@ -79,7 +78,6 @@ self.r1_level = 0 self.r2_level = 0 self.chemical_disinfect_ui_state = 0 - self.chem_nelson_support = 0 @publish(["chemical_disinfect_elapsed_time", "chemical_disinfect_target_time"]) def _handler_chemical_disinfect_to_ui_sync(self, message): @@ -98,7 +96,7 @@ self.chemical_disinfect_elapsed_time = int(disinfect_elapsed_time / 1000) @publish(["chemical_disinfect_state", "overall_elapsed_time", "state_elapsed_time", "cancellation_mode", - "r1_level", "r2_level", "chemical_disinfect_ui_state", "chem_nelson_support"]) + "r1_level", "r2_level", "chemical_disinfect_ui_state"]) def _handler_chemical_disinfect_sync(self, message): """ Handles published chemical disinfect message @@ -120,8 +118,6 @@ message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] chem_ui_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - nelson = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] self.chemical_disinfect_state = state self.overall_elapsed_time = int(elapsed_time / 1000) @@ -130,4 +126,3 @@ self.r1_level = r1 self.r2_level = r2 self.chemical_disinfect_ui_state = chem_ui_state - self.chem_nelson_support = nelson Index: dialin/dg/heat_disinfect.py =================================================================== diff -u -r5dc79b5e29a9cd78d5991525472859238f1df8ae -r51ccf9db3b88bc2ca473b511bf9b98f40d343bf1 --- dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision 5dc79b5e29a9cd78d5991525472859238f1df8ae) +++ dialin/dg/heat_disinfect.py (.../heat_disinfect.py) (revision 51ccf9db3b88bc2ca473b511bf9b98f40d343bf1) @@ -63,9 +63,10 @@ NELSON_INOCULATE = 1 NELSON_HEAT_DISINFECT = 2 NELSON_POS_CONTROL_CHEM_DISINFECT = 3 - NELSON_CHEM_DISINFECT = 4 - NELSON_DRAIN_SAMPLE = 5 - NUM_OF_NELSON_SUPPORT = 6 + NELSON_POS_CONTROL_HEAT_DISINFECT = 4 + NELSON_CHEM_DISINFECT = 5 + NELSON_DRAIN_SAMPLE = 6 + NUM_OF_NELSON_SUPPORT = 7 class HeatDisinfect(AbstractSubSystem): @@ -91,7 +92,6 @@ self.cancellation_mode = 0 self.r1_level = 0 self.r2_level = 0 - self.heat_nelson_support = 0 if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id @@ -120,7 +120,6 @@ self.r1_level = 0 self.r2_level = 0 self.heat_disinfect_ui_state = 0 - self.heat_nelson_support = 0 @publish(["heat_disinfect_target_time", "heat_disinfect_count_down_time"]) def _handler_heat_disinfect_to_ui_sync(self, message): @@ -148,7 +147,7 @@ self.disinfect_r_82_time_s = r_82 @publish(["heat_disinfect_state", "overall_elapsed_time", "state_elapsed_time", "cancellation_mode", "r1_level", - "r2_level", "heat_disinfect_ui_state", "heat_nelson_support"]) + "r2_level", "heat_disinfect_ui_state"]) def _handler_heat_disinfect_sync(self, message): """ Handles published heat disinfect message @@ -170,8 +169,6 @@ message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] ui = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - nelson = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] self.heat_disinfect_state = state self.overall_elapsed_time = int(elapsed_time / 1000) @@ -180,7 +177,6 @@ self.r1_level = r1 self.r2_level = r2 self.heat_disinfect_ui_state = ui - self.heat_nelson_support = nelson def cmd_set_nelson_support_mode(self, support: int): """ @@ -189,12 +185,14 @@ Must be logged into DG. This code only works on a firmware that has been built in debug mode. @param support: (int) the type of Nelson support - NELSON_NONE = 0 - NELSON_INOCULATE = 1 - NELSON_HEAT_DISINFECT = 2 - NELSON_POS_CONTROL_CHEM_DISINFECT = 3 - NELSON_CHEM_DISINFECT = 4 - NELSON_DRAIN_SAMPLE = 5 + NELSON_NONE = 0 + NELSON_INOCULATE = 1 + NELSON_HEAT_DISINFECT = 2 + NELSON_POS_CONTROL_CHEM_DISINFECT = 3 + NELSON_POS_CONTROL_HEAT_DISINFECT = 4 + NELSON_CHEM_DISINFECT = 5 + NELSON_DRAIN_SAMPLE = 6 + NUM_OF_NELSON_SUPPORT = 7 @returns none """ payload = integer_to_bytearray(support) @@ -203,5 +201,13 @@ payload=payload) self.logger.debug("Setting Nelson support to " + NelsonSupportModes(support).name) - self.can_interface.send(message, 0) + received_message = self.can_interface.send(message, 0) + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + Index: tests/dg_tests.py =================================================================== diff -u -r626654c5a906ee4dd622907d5ac34b7b8fc0dfc8 -r51ccf9db3b88bc2ca473b511bf9b98f40d343bf1 --- tests/dg_tests.py (.../dg_tests.py) (revision 626654c5a906ee4dd622907d5ac34b7b8fc0dfc8) +++ tests/dg_tests.py (.../dg_tests.py) (revision 51ccf9db3b88bc2ca473b511bf9b98f40d343bf1) @@ -59,28 +59,26 @@ state = 0 state_elapsed_time = 0 overall_elapsed_time = 0 - nelson_support = 0 + if dg.dg_operation_mode == 10: state = DGChemicalDisinfectStates(dg.chemical_disinfect.chemical_disinfect_state).name overall_elapsed_time = dg.chemical_disinfect.overall_elapsed_time state_elapsed_time = dg.chemical_disinfect.state_elapsed_time - nelson_support = NelsonSupportModes(dg.chemical_disinfect.chem_nelson_support).name elif dg.dg_operation_mode == 11: state = DGChemDisinfectFlushStates(dg.chemical_disinfect_flush.flush_state).name overall_elapsed_time = dg.chemical_disinfect_flush.overall_elapsed_time state_elapsed_time = dg.chemical_disinfect_flush.state_elapsed_time - nelson_support = NelsonSupportModes(dg.chemical_disinfect.chem_nelson_support).name info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Disinfect_elapsed_time, {}, ' 'Cancellation_mode, {}, R1_level, {:5.3f}, R2_level, {:5.3f}, Current_rinse_count, {}, ' - 'Total_rinse_count, {}, UI_state, {}, Top_alarm, {}, Nelson_support_mode, {}, ' + 'Total_rinse_count, {}, UI_state, {}, Top_alarm, {}, ' .format(state, overall_elapsed_time, state_elapsed_time, dg.chemical_disinfect.chemical_disinfect_elapsed_time, ChemCancellationModes(dg.chemical_disinfect.cancellation_mode).name, dg.chemical_disinfect.r1_level, dg.chemical_disinfect.r2_level, dg.chemical_disinfect_flush.rinse_count, 0, #dg.chemical_disinfect_flush.target_rinse_count, DGChemDisinfectUIStates(dg.chemical_disinfect.chemical_disinfect_ui_state).name, - hd.alarms.alarm_top, nelson_support)) + hd.alarms.alarm_top)) return info @@ -110,26 +108,22 @@ state = 0 state_elapsed_time = 0 overall_elapsed_time = 0 - nelson_support = 0 if dg.dg_operation_mode == 9: state = DGHeatDisinfectStates(dg.heat_disinfect.heat_disinfect_state).name overall_elapsed_time = dg.heat_disinfect.overall_elapsed_time state_elapsed_time = dg.heat_disinfect.state_elapsed_time - nelson_support = NelsonSupportModes(dg.heat_disinfect.heat_nelson_support).name elif dg.dg_operation_mode == 12: state = DGHeatDisinfectActiveCoolStates(dg.heat_disinfect_active_cool.heat_disinfect_active_cool_state).name overall_elapsed_time = dg.heat_disinfect_active_cool.overall_elapsed_time state_elapsed_time = dg.heat_disinfect_active_cool.state_elapsed_time - nelson_support = NelsonSupportModes(dg.heat_disinfect.heat_nelson_support).name info = ('State, {}, Overall_elapsed_time, {}, State_elapsed_time, {}, Disinfect_RO_77, {}, Disinfect_RO_82, {}, ' 'Disinfect_R_77, {}, Disinfect_R_82, {}, R1_level, {:5.3f}, R2_level, {:5.3f}, Top_alarm, {}, UI_state, {},' - ' Nelson_support, {}, ' + ' ' .format(state, overall_elapsed_time, state_elapsed_time, dg.heat_disinfect.disinfect_ro_77_time_s, dg.heat_disinfect.disinfect_ro_82_time_s, dg.heat_disinfect.disinfect_r_77_time_s, dg.heat_disinfect.disinfect_r_82_time_s, dg.heat_disinfect.r1_level, dg.heat_disinfect.r2_level, - hd.alarms.alarm_top, DGHeatDisinfectUIStates(dg.heat_disinfect.heat_disinfect_ui_state).name, - nelson_support)) + hd.alarms.alarm_top, DGHeatDisinfectUIStates(dg.heat_disinfect.heat_disinfect_ui_state).name)) return info @@ -665,15 +659,15 @@ def run_nelson_support_modes(): - dg.heat_disinfect.cmd_set_nelson_support_mode(NelsonSupportModes.NELSON_CHEM_DISINFECT.value) + dg.heat_disinfect.cmd_set_nelson_support_mode(NelsonSupportModes.NELSON_POS_CONTROL_HEAT_DISINFECT.value) f = open("/home/fw/projects/dialin/tests/Nelson_Support.log", "w") try: while True: - #disinfect = get_heat_disinfect_mode_info() - disinfect = get_chemical_disinfect_mode_info() + disinfect = get_heat_disinfect_mode_info() + #disinfect = get_chemical_disinfect_mode_info() drain = get_drain_states_info() load_cell = get_load_cells_info() valves = get_dg_valves_states() Index: tests/test_nelson_labs_disinfect.py =================================================================== diff -u --- tests/test_nelson_labs_disinfect.py (revision 0) +++ tests/test_nelson_labs_disinfect.py (revision 51ccf9db3b88bc2ca473b511bf9b98f40d343bf1) @@ -0,0 +1,49 @@ + +from dialin.dg.dialysate_generator import DG +from dialin.hd.hemodialysis_device import HD +from dialin.ui.hd_simulator import HDSimulator +from dialin.common.dg_defs import DGHeatDisinfectStates, DGHeatDisinfectUIStates +from dialin.dg.heat_disinfect import HeatCancellationModes, NelsonSupportModes +from dialin.common.dg_defs import DGChemicalDisinfectStates, DGChemDisinfectUIStates +from dialin.common.dg_defs import DGChemDisinfectFlushStates, DGChemDisinfectFlushUIStates +from dialin.dg.chemical_disinfect import ChemCancellationModes +from dialin.dg.drain_pump import DrainPumpStates +from dialin.dg.thermistors import ThermistorsNames +from dialin.dg.temperatures import DGTemperaturesNames +from dialin.dg.dialysate_generator import DGOperationModes +from dialin.hd.temperatures import HDTemperaturesNames +from dialin.dg.concentrate_pumps import DGConcentratePumpsStates +from dialin.dg.uv_reactors import ReactorsNames +from dialin.common.hd_defs import HDOpModes, HDStandbyStates, PreTreatmentWetSelfTestStates, PostTreatmentStates, \ + PreTreatmentDrySelfTestsStates +from dialin.hd.post_treatment import HDPostTreatmentDrainStates +from dialin.common.dg_defs import DGEventList +from dialin.common.hd_defs import HDEventList +from dialin.hd.reservoirs import HDReservoirStates +from dialin.dg.reservoirs import DGReservoirsNames +from dialin.common.dg_defs import DGGenIdleModeBadFillSubStates +from dialin.common.alarm_defs import AlarmList +from dialin.dg.fans import DGFansNames +from dialin.dg.pressures import DGPressures +from dialin.dg.conductivity_sensors import ConductivitySensorsEnum +from dialin.dg.voltages import DGMonitoredVoltages +from dialin.dg.valves import DGValveNames +from dialin.hd.valves import HDValves +from dialin.hd.voltages import HDMonitoredVoltages +from dialin.hd.pretreatment import PreTreatmentRsrvrState +from dialin.common.dg_defs import DGFlushStates, DGHeatDisinfectActiveCoolStates +from time import sleep +from datetime import datetime +import sys + +sys.path.append("..") + + + +if __name__ == "__main__": + dg = DG(log_level='DEBUG') + dg.cmd_log_in_to_dg() + sleep(1) + hd = HD(log_level='DEBUG') + hd.cmd_log_in_to_hd() + sleep(1) \ No newline at end of file