Index: leahi_dialin/common/td_defs.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r3f6c0e94db8379f00cb7fbc91daa189d6b06f379 --- leahi_dialin/common/td_defs.py (.../td_defs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/common/td_defs.py (.../td_defs.py) (revision 3f6c0e94db8379f00cb7fbc91daa189d6b06f379) @@ -581,13 +581,21 @@ STATE = 0 # TD Air Pump State to command attribute DUTY_CYCLE = 1 # TD Air Pump Duty Cycle attribute RPM = 2 # TD Air Pump RPM attribute - NUM_OF_AIR_PUMP_ATTRIBUTES = 3 # Number of Air Pump attributes + # TODO remove after feature validation + FPGA_RPM = 3 # TD Air Pump FPGA_RPM attribute + #TODO remove after feature validation + SCALAR_POWER = 4 # TD Air Pump scalar power + NUM_OF_AIR_PUMP_ATTRIBUTES = 5 # Number of Air Pump attributes TDAirPumpAttributes._str_list = { # Official Name : Accepted strings 'STATE': [], 'DUTY_CYCLE': [], 'RPM': [], + # TODO remove after feature validation + 'FPGA_RPM': [], + # TODO remove after feature validation + 'SCALAR_POWER': [], 'NUM_OF_AIR_PUMP_ATTRIBUTES': [], } Index: leahi_dialin/common/test_config_defs.py =================================================================== diff -u -re2bdf2b26c4d68d43a5fd36990b4a1e83cca3256 -r3f6c0e94db8379f00cb7fbc91daa189d6b06f379 --- leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision e2bdf2b26c4d68d43a5fd36990b4a1e83cca3256) +++ leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision 3f6c0e94db8379f00cb7fbc91daa189d6b06f379) @@ -33,7 +33,8 @@ TEST_CONFIG_DD_DISABLE_UF_PUMP_SPEED_COMP = 10 # (DD) Test configuration to disable Ultrafiltration speed compensation TEST_CONFIG_DD_DRY_BICART_TEST = 11 # (DD) Test configuration DD to test initial fill , drain and initial chamber fill in pre-gen TEST_CONFIG_DD_RUN_SOLO = 12 # (DD) Test configuration to run DD alone without the other subsystems - NUM_OF_TEST_CONFIGS = 13 # Number of Test Configs + TEST_CONFIG_FP_DISABLE_RO_CURRENT_ALARMS = 13 # (FP) Test configuration to disable RO current alarms + NUM_OF_TEST_CONFIGS = 14 # Number of Test Configs DDFPTestConfigOptions._str_list = {} @unique Index: leahi_dialin/td/modules/air_pump.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r3f6c0e94db8379f00cb7fbc91daa189d6b06f379 --- leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 3f6c0e94db8379f00cb7fbc91daa189d6b06f379) @@ -23,7 +23,7 @@ from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish -from leahi_dialin.utils.conversions import integer_to_bytearray +from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray MAX_AIR_PUMP_POWER_LEVEL = 255 #Maximum air pump power allowed @@ -55,7 +55,11 @@ td_enum_repository.TDAirPumpNames.H12_AIR_PUMP.name: { td_enum_repository.TDAirPumpAttributes.STATE.name: 0, td_enum_repository.TDAirPumpAttributes.DUTY_CYCLE.name: 0, - td_enum_repository.TDAirPumpAttributes.RPM.name: 0 + td_enum_repository.TDAirPumpAttributes.RPM.name: 0, + # TODO remove after FPGA air pump speed validation + td_enum_repository.TDAirPumpAttributes.FPGA_RPM.name: 0, + # TODO remove after FPGA air pump speed validation + td_enum_repository.TDAirPumpAttributes.SCALAR_POWER.name: 0 } } @@ -70,8 +74,12 @@ """ sensor_list =[] sensor_list.append((td_enum_repository.TDAirPumpAttributes.STATE.name, 'i')) - sensor_list.append((td_enum_repository.TDAirPumpAttributes.DUTY_CYCLE.name, 'i')) + sensor_list.append((td_enum_repository.TDAirPumpAttributes.DUTY_CYCLE.name, 'f')) sensor_list.append((td_enum_repository.TDAirPumpAttributes.RPM.name, 'i')) + # TODO remove after FPGA air pump speed validation + sensor_list.append((td_enum_repository.TDAirPumpAttributes.FPGA_RPM.name, 'i')) + # TODO remove after FPGA air pump speed validation + sensor_list.append((td_enum_repository.TDAirPumpAttributes.SCALAR_POWER.name, 'i')) i = 1 for sensor in sensor_list: @@ -118,13 +126,12 @@ if dutyCycle < 0 or dutyCycle > 100: return 0 - power = int((dutyCycle/100) * MAX_AIR_PUMP_POWER_LEVEL) sts = integer_to_bytearray(state) - pwr = integer_to_bytearray(power) + pwr = float_to_bytearray(dutyCycle) payload = sts + pwr state_name = 'start with power' if state == 2 else 'stopped' - power_value = f'{str(power)}' if state == 2 else '' + power_value = f'{str(dutyCycle)}' if state == 2 else '' return cmd_generic_override( payload = payload, reset = NO_RESET, Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -re8bdeec38984b4b800f6d0eca8b9097800efbf40 -r3f6c0e94db8379f00cb7fbc91daa189d6b06f379 --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision e8bdeec38984b4b800f6d0eca8b9097800efbf40) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 3f6c0e94db8379f00cb7fbc91daa189d6b06f379) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import td_enum_repository +from leahi_dialin.common import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -51,6 +51,9 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_air_trap_data, self._handler_air_trap_sync) + self.td_air_trap_timestamp = 0.0 #: The timestamp of the last message + + #: The Air Trap Level Sensors data in dictionary format self.air_trap_level_sensors = { td_enum_repository.TDAirTrapLevelSensorNames.H17_LEVEL.name: { td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, @@ -61,17 +64,18 @@ td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL } } + + #: The Air Trap Valves data in dictionary format self.air_trap_valve_states = { td_enum_repository.TDAirTrapValveNames.H13_VALV.name: 0, td_enum_repository.TDAirTrapValveNames.H20_VALV.name: 0 } - self.air_control = 0 - self.airTrapState = 0 + self.air_control = 0 #: Is the Air Trap FW logic is active or not + self.airTrapState = 0 #: The Air Trap's State value # TODO remove after testing self.AirPumpLowerPowerLevel = 0 # TODO remove after testing self.AirPumpRaisePowerLevel = 0 - self.td_air_trap_timestamp = 0.0 @publish(["msg_id_td_air_trap_data", Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r3f6c0e94db8379f00cb7fbc91daa189d6b06f379 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 3f6c0e94db8379f00cb7fbc91daa189d6b06f379) @@ -14,8 +14,11 @@ # ############################################################################ +# Module imports import struct +from time import sleep +# Project imports from .modules.air_pump import TDAirPump from .modules.air_trap import TDAirTrap from .modules.alarms import TDAlarms @@ -362,7 +365,7 @@ @return: None """ - return cmd_generic_override( + resp = cmd_generic_override( payload = None, reset = NO_RESET, channel_id = DenaliChannels.dialin_to_td_ch_id, @@ -371,6 +374,10 @@ override_text = '', logger = self.logger, can_interface = self.can_interface) + + sleep(1) # Wait for reboot to happen + resp_login = self.cmd_log_in_to_td() + return resp and resp_login def cmd_td_safety_shutdown_override(self, active: int, reset: int = NO_RESET) -> int: