Index: leahi_dialin/ro/modules/flow_sensors.py =================================================================== diff -u -re4d1e640a8d9dfc49522a4f49fe7fee9ec9125da -r270356fb1edd1ea15b16cb322d36f5558e84cc47 --- leahi_dialin/ro/modules/flow_sensors.py (.../flow_sensors.py) (revision e4d1e640a8d9dfc49522a4f49fe7fee9ec9125da) +++ leahi_dialin/ro/modules/flow_sensors.py (.../flow_sensors.py) (revision 270356fb1edd1ea15b16cb322d36f5558e84cc47) @@ -118,12 +118,12 @@ def cmd_flow_rate_override(self, flow_sensor: int, rate: int, reset: int = NO_RESET) -> int: """ - Constructs and sends flow rate override command + Constructs and sends an RO flow rate override command Must be logged into RO - @param flow_sensor the sensor to override its value - @param rate the rate value to override + @param flow_sensor the sensor to override its value (0=FMS, 1=FMP) + @param rate the flow rate value to override @param reset: (int) 1 to reset a previous override, 0 to override @returns 1 if successful, zero otherwise """ @@ -148,12 +148,12 @@ def cmd_flow_temp_override(self, flow_sensor: int, temp: int, reset: int = NO_RESET) -> int: """ - Constructs and sends flow temp override command + Constructs and sends an RO flow sensor temperature override command Must be logged into RO - @param flow_sensor the sensor to override its value - @param temp the rate value to override + @param flow_sensor the sensor to override its temperature + @param temp the temperature value (in deg C) to override @param reset: (int) 1 to reset a previous override, 0 to override @returns 1 if successful, zero otherwise """ Index: leahi_dialin/ro/modules/levels.py =================================================================== diff -u -r3c967e5acc6286c6334d2708600e3317988f87f1 -r270356fb1edd1ea15b16cb322d36f5558e84cc47 --- leahi_dialin/ro/modules/levels.py (.../levels.py) (revision 3c967e5acc6286c6334d2708600e3317988f87f1) +++ leahi_dialin/ro/modules/levels.py (.../levels.py) (revision 270356fb1edd1ea15b16cb322d36f5558e84cc47) @@ -23,8 +23,16 @@ from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum from leahi_dialin.utils.checks import check_broadcast_interval_override_ms -from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray +from leahi_dialin.utils.conversions import integer_to_bytearray +@unique +class ROFloaterLevels(DialinEnum): + LEVEL_STATE_LOW = 0 + LEVEL_STATE_HIGH = 1 + LEVEL_STATE_MEDIUM = 2 + LEVEL_STATE_ILLEGAL = 3 + + class ROLevels(AbstractSubSystem): """ @@ -66,7 +74,7 @@ def cmd_levels_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ - Constructs and sends broadcast time interval. + Constructs and sends RO level data broadcast time interval override message. Constraints: Must be logged into RO. Given interval must be non-zero and a multiple of the RO general task interval (50 ms). @@ -86,7 +94,7 @@ message_id=MsgIds.MSG_ID_RO_LEVELS_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, payload=payload) - self.logger.debug("Sending {} ms publish interval to the Levels module".format(ms)) + self.logger.debug("Sending {} ms publish interval override for floater level data".format(ms)) # Send message received_message = self.can_interface.send(message) @@ -98,21 +106,18 @@ self.logger.debug("Timeout!!!!") return False - def cmd_level_status_override(self, level_sensor: int, status: int, reset: int = NO_RESET) -> int: + def cmd_level_state_override(self, level: int, reset: int = NO_RESET) -> int: """ - Constructs and sends level status override command + Constructs and sends level state override command Must be logged into RO - - @param level_sensor the level sensor to override its value - @param status the status value to override + @param level the floater level value to override (0=low, 1=high, 2=medium) @param reset: (int) 1 to reset a previous override, 0 to override @returns 1 if successful, zero otherwise """ reset_value = integer_to_bytearray(reset) - lvl = integer_to_bytearray(level_sensor) - sts = integer_to_bytearray(status) - payload = reset_value + sts + lvl + lvl = integer_to_bytearray(level) + payload = reset_value + lvl message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_ro_ch_id, message_id=MsgIds.MSG_ID_RO_LEVELS_STATUS_OVERRIDE_REQUEST.value, payload=payload) Index: leahi_dialin/ro/reverse_osmosis.py =================================================================== diff -u -rb629719450ccd35fbe22cdd3e92ff868ec1a8393 -r270356fb1edd1ea15b16cb322d36f5558e84cc47 --- leahi_dialin/ro/reverse_osmosis.py (.../reverse_osmosis.py) (revision b629719450ccd35fbe22cdd3e92ff868ec1a8393) +++ leahi_dialin/ro/reverse_osmosis.py (.../reverse_osmosis.py) (revision 270356fb1edd1ea15b16cb322d36f5558e84cc47) @@ -16,6 +16,7 @@ import struct from .modules.boost_pump import ROPumps +from .modules.flow_sensors import ROFlowSensors from .modules.levels import ROLevels from .modules.pressure_sensors import ROPressureSensors from .modules.valves import ROValves @@ -103,6 +104,7 @@ # Create command groups self.pumps = ROPumps(self.can_interface, self.logger) + self.flows = ROFlowSensors(self.can_interface, self.logger) self.levels = ROLevels(self.can_interface, self.logger) self.pressures = ROPressureSensors(self.can_interface, self.logger) self.valves = ROValves(self.can_interface, self.logger) Index: tests/test_ro.py =================================================================== diff -u -r16a7827a894df3bd7f325bf874f69643257edec6 -r270356fb1edd1ea15b16cb322d36f5558e84cc47 --- tests/test_ro.py (.../test_ro.py) (revision 16a7827a894df3bd7f325bf874f69643257edec6) +++ tests/test_ro.py (.../test_ro.py) (revision 270356fb1edd1ea15b16cb322d36f5558e84cc47) @@ -22,6 +22,8 @@ from leahi_dialin.ro.modules.boost_pump import ROPumpNames from leahi_dialin.ro.modules.valves import ROValveNames from leahi_dialin.ro.modules.valves import ROValveStates +from leahi_dialin.ro.modules.levels import ROFloaterLevels +from leahi_dialin.ro.modules.flow_sensors import ROFlowSensorNames if __name__ == "__main__": # create a RO object called ro @@ -31,14 +33,17 @@ if ro.cmd_log_in_to_ro() == 0: exit(1) - ro.valves.cmd_valve_override(ROValveNames.VCR.value,ROValveStates.VALVE_STATE_CLOSED.value) + # ro.valves.cmd_valve_override(ROValveNames.VCR.value,ROValveStates.VALVE_STATE_CLOSED.value) # sleep(15) - #ro.valves.cmd_valve_override(ROValveNames.VCR.value,ROValveStates.VALVE_STATE_CLOSED.value) + # ro.valves.cmd_valve_override(ROValveNames.VCR.value,ROValveStates.VALVE_STATE_CLOSED.value) # ro.pumps.cmd_boost_pump_set_pwm_request(ROPumpNames.PUMP_RO.value,100) # sleep(15) # ro.pumps.cmd_boost_pump_set_pwm_request(ROPumpNames.PUMP_RO.value,0) + # ro.levels.cmd_level_state_override(ROFloaterLevels.LEVEL_STATE_HIGH.value) + # ro.flows.cmd_flow_rate_override(ROFlowSensorNames.FLOW_SENSOR_RO_OUTLET.value, 0.5) + # create log file with open("RO_test.log", "w") as f: @@ -64,6 +69,9 @@ ", VCb, " + '{:4d}'.format(ro.valves.valve_state_VCB.get("state")) + \ ", VCd, " + '{:4d}'.format(ro.valves.valve_state_VCD.get("state")) + \ ", VROD, " + '{:4d}'.format(ro.valves.valve_state_VROD.get("state")) + level = ", LRO, " + '{:4d}'.format(ro.levels.floater) + flows = ", FMS, " + '{:9.2f}'.format(ro.flows.flowFMS) + \ + ", FMP, " + '{9.2f}'.format(ro.flows.flowFMP) # alarms = ", AL.s, " + '{:1d}'.format(td.alarms.get_current_alarms_state()) + \ # ", AL.t, " + '{:4d}'.format(td.alarms.alarm_top) @@ -72,6 +80,8 @@ f.write(pumps) f.write(press) f.write(valves) + f.write(level) + f.write(flows) # f.write(alarms) f.write("\n") @@ -80,5 +90,7 @@ print(" Pumps: "+pumps) print(" Pressures: "+press) print(" Valves: "+valves) + print(" Level: "+level) + print(" Flows: "+flows) # print(" Alarms: "+alarms) Index: tests/test_td.py =================================================================== diff -u -rf57dc553d3b4af35cdd40cfb5051c4955da0cff2 -r270356fb1edd1ea15b16cb322d36f5558e84cc47 --- tests/test_td.py (.../test_td.py) (revision f57dc553d3b4af35cdd40cfb5051c4955da0cff2) +++ tests/test_td.py (.../test_td.py) (revision 270356fb1edd1ea15b16cb322d36f5558e84cc47) @@ -26,7 +26,7 @@ ", TD.s, " + '{:2d}'.format(td.td_operation_sub_mode) pumpSetPts = ", BP.sf, " + '{:4d}'.format(td.blood_flow.set_blood_flow_rate) + \ ", BP.ss, " + '{:9.2f}'.format(td.blood_flow.set_rpm) - pumpMeasSpds = ", BP.m, " + '{:7.1f}'.format(td.blood_flow.measured_blood_pump_speed) + pumpMeasSpds = ", BP.ms, " + '{:7.1f}'.format(td.blood_flow.measured_blood_pump_speed) press = ", PBA, " + '{:9.2f}'.format(td.pressure_sensors.arterial_pressure) + \ ", PBV, " + '{:9.2f}'.format(td.pressure_sensors.venous_pressure) @@ -39,7 +39,6 @@ # print to console # print(" Modes: "+modes) - print("Pump Set Pts: "+pumpSetPts) - print(" Pump Speeds: "+pumpMeasSpds) + print(" Pumps: "+pumpSetPts+pumpMeasSpds) print(" Pressures: "+press)