Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -r95a7bdcce8c5ffed0de3fbfb09f7f6999ad0f1bd -r9c1ee405a484654486ee23393f0b8e6b33a17154 --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 95a7bdcce8c5ffed0de3fbfb09f7f6999ad0f1bd) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 9c1ee405a484654486ee23393f0b8e6b33a17154) @@ -8,25 +8,25 @@ # @file fp_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 29-Jan-2026 +# @date (last) 25-Feb-2026 # @author (original) Peter Lucia # @date (original) 22-Jun-2021 # ############################################################################ from enum import unique -from .dd_defs import dd_enum_repository -from ..utils.base import DialinEnum +from .dd_defs import DDConductivitySensorNames, DDPressureSensorNames, DDValveNames, DDLevelSensorNames +from ..utils.enums import DialinEnum - # ================================================== Constants ================================================== -BETA_IOFP_COND_SENSOR_OFFSET = dd_enum_repository.DDConductivitySensorNames.NUM_OF_CONDUCTIVITY_SENSORS.value # Offset to translate Dialin FPTemperaturesNames to DD firmware DD Conductivity Sensors enum -BETA_IOFP_PRES_SENSOR_OFFSET = dd_enum_repository.DDPressureSensorNames.NUM_OF_PRESSURE_SENSORS.value # Offset to translate Dialin FPTemperaturesNames to DD firmware DD Pressure Sensors enum -BETA_IOFP_VALVE_OFFSET = dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value # Offset to translate Dialin FPValveNames to DD firmware DD_Valves +BETA_IOFP_COND_SENSOR_OFFSET = DDConductivitySensorNames.NUM_OF_CONDUCTIVITY_SENSORS.value # Offset to translate Dialin FPTemperaturesNames to DD firmware DD Conductivity Sensors enum +BETA_IOFP_PRES_SENSOR_OFFSET = DDPressureSensorNames.NUM_OF_PRESSURE_SENSORS.value # Offset to translate Dialin FPTemperaturesNames to DD firmware DD Pressure Sensors enum +BETA_IOFP_VALVE_OFFSET = DDValveNames.NUM_OF_DD_VALVES.value # Offset to translate Dialin FPValveNames to DD firmware DD_Valves +BETA_IOFP_LEVEL_OFFSET = DDLevelSensorNames.NUM_OF_LEVELS.value # offset to translate Dialin FPLevelSensorNames to DD firmware DDLevelSensorNames -# ================================================== Enum Creators: Operations ================================================== +# ================================================== Enum Creators: Operations Lvl 1 ================================================== @unique class FPOpModes(DialinEnum): MODE_FAUL = 0 # Fault mode @@ -55,6 +55,8 @@ } +# ================================================== Enum Creators: Operations Lvl 2 ================================================== +# FPOpModes.MODE_FAUL sub states @unique class FPFaultStates(DialinEnum): FP_FAULT_STATE_START = 0 # FP Fault Start State @@ -71,6 +73,7 @@ } +# FPOpModes.MODE_SERV sub states @unique class FPServiceStates(DialinEnum): NUM_OF_FP_SERV_STATES = 0 # Number of FP service states @@ -81,6 +84,7 @@ } +# FPOpModes.MODE_INIT sub states @unique class FPPostStates(DialinEnum): FP_POST_STATE_START = 0 # Start initialize & POST mode state @@ -111,6 +115,7 @@ } +# FPOpModes.MODE_STAN sub states @unique class FPStandbyStates(DialinEnum): FP_STANDBY_MODE_STATE_IDLE = 0 # Idle standby mode state @@ -123,6 +128,7 @@ } +# FPOpModes.MODE_PRE_GENP sub states @unique class FPPreGenPermeateStates(DialinEnum): FP_PRE_GENP_INLET_PRES_CHECK = 0 # FP Pre Gen Permeate Inlet Pressure Check State @@ -131,7 +137,7 @@ FP_PRE_GENP_CONCENTRATE_FLUSH = 3 # FP Pre Gen Permeate Concentrate Flush State FP_PRE_GENP_VERIFY_WATER = 4 # FP Pre Gen Permeate Verify Water State FP_PRE_GENP_PAUSED = 5 # FP Pre Gen Permeate Paused State - NUM_OF_FP_PRE_GENP_MODE_STATES = 7 # Number of Pre-Gen Permeate mode states + NUM_OF_FP_PRE_GENP_MODE_STATES = 6 # Number of Pre-Gen Permeate mode states FPPreGenPermeateStates._str_list = { # Official Name : Accepted strings @@ -145,6 +151,7 @@ } +# FPOpModes.MODE_DPGP sub states @unique class FPPreGenPDefStates(DialinEnum): FP_PRE_GENP_DEF_FLUSH = 0 # Pre Gen Permeate Defeatured Flush state @@ -161,6 +168,7 @@ } +# FPOpModes.MODE_GENP sub states @unique class FPGenPermeateStates(DialinEnum): FP_GENP_TANK_FILL_STATE = 0 # Gen Permeate Tank Fill low state @@ -175,6 +183,7 @@ } +# FPOpModes.MODE_DEGP sub states @unique class FPGenPermeateDefStates(DialinEnum): FP_GENP_DEF_SUPPLY_WATER = 0 # Gen Permeate Defeatured Supply Water statee @@ -189,6 +198,7 @@ } +# FPOpModes.MODE_NLEG sub states @unique class FPNotLegalStates(DialinEnum): NUM_OF_NOT_LEGAL_STATES = 0 # Number of Not Legal states @@ -199,7 +209,102 @@ } +# ================================================== Enum Creators: Operations Lvl 3 ================================================== +# FPFaultStates. sub states +@unique +class FPFaultNVDataStates(DialinEnum): + FP_NVDATA_STATE_START = 0 # FP Non-Volatile Data Management start state + FP_NVDATA_STATE_RUN_NV_POSTS = 1 # FP Non-Volatile Data Management run RTC and NV data management posts + FP_NVDATA_STATE_COMPLETE = 2 # FP Non-Volatile Data Management Complete + NUM_OF_FP_NVDATA_STATES = 3 # Number of fault mode NV Data management states +FPFaultNVDataStates._str_list = { + # Official Name : Accepted strings + 'FP_NVDATA_STATE_START': ['start'], + 'FP_NVDATA_STATE_RUN_NV_POSTS': ['running', 'run nv posts'], + 'FP_NVDATA_STATE_COMPLETE': ['complete', 'done'], + 'NUM_OF_FP_INIT_NVDATA_STATES': [], +} + + +# FPPreGenPermeateStates.FP_PRE_GENP_INLET_PRES_CHECK sub states +@unique +class FPInletPresCheckStates(DialinEnum): + INLET_PRES_CHECK_IN_PROGRESS = 0 # Inlet Pressure Check in progress state + INLET_PRES_CHECK_PAUSED = 1 # Inlet Pressure Check paused state + NUM_OF_INLET_PRES_CHECK_STATES = 2 # Number of Inlet Pressure Check states + +FPInletPresCheckStates._str_list = { + # Official Name : Accepted strings + 'INLET_PRES_CHECK_IN_PROGRESS': ['start', 'in progress', 'running'], + 'INLET_PRES_CHECK_PAUSED': ['paused'], + 'NUM_OF_INLET_PRES_CHECK_STATES': [], +} + + +# FPPreGenPermeateStates.FP_PRE_GENP_FILTER_FLUSH sub states +@unique +class FPFilterFlushStates(DialinEnum): + FILTER_FLUSH_IN_PROGRESS = 0 # Filter Flush in progress state + FILTER_FLUSH_PAUSED = 1 # Filter Flush paused state + NUM_OF_FILTER_FLUSH_STATES = 2 # Number of filter flush states + +FPFilterFlushStates._str_list = { + # Official Name : Accepted strings + 'FILTER_FLUSH_IN_PROGRESS': ['start', 'in progress', 'running'], + 'FILTER_FLUSH_PAUSED': ['paused'], + 'NUM_OF_FILTER_FLUSH_STATES': [], +} + + +# FPPreGenPermeateStates.FP_PRE_GENP_PERMEATE_FLUSH sub states +@unique +class FPPermeateFlushStates(DialinEnum): + PERM_FLUSH_IN_PROGRESS = 0 # Permeate Flush in progress state + PERM_FLUSH_PAUSED = 1 # Permeate Flush paused state + NUM_OF_PERM_FLUSH_STATES = 2 # Number of permeate flush states + +FPPermeateFlushStates._str_list = { + # Official Name : Accepted strings + 'PERM_FLUSH_IN_PROGRESS': ['start', 'in progress', 'running'], + 'PERM_FLUSH_PAUSED': ['paused'], + 'NUM_OF_PERM_FLUSH_STATES': [], +} + + +# FPPreGenPermeateStates.FP_PRE_GENP_CONCENTRATE_FLUSH sub states +@unique +class FPConcentrateFlushStates(DialinEnum): + CONC_FLUSH_IN_PROGRESS = 0 # Concentrate Flush in progress state + CONC_FLUSH_PAUSED = 1 # Concentrate Flush paused state + NUM_OF_CONC_FLUSH_STATES = 2 # Number of Concentrate flush states + +FPConcentrateFlushStates._str_list = { + # Official Name : Accepted strings + 'CONC_FLUSH_IN_PROGRESS': ['start', 'in progress', 'running'], + 'CONC_FLUSH_PAUSED': ['paused'], + 'NUM_OF_CONC_FLUSH_STATES': [], +} + + +# FPPreGenPDefStates.FP_PRE_GENP_DEF_FLUSH sub states +@unique +class FPDefFlushStates(DialinEnum): + FILTER_FLUSH_DEF_DYNAMIC_PRESSURE_CHECK = 0 # Filter Flush in dynamic pressure state + FILTER_FLUSH_DEF_STATIC_PRESSURE_CHECK = 1 # Filter flush in sttaic pressure check + FILTER_FLUSH_DEF_PAUSED = 2 # Filter Flush paused state + NUM_OF_FILTER_FLUSH_DEF_STATES = 3 # Number of filter flush states + +FPDefFlushStates._str_list = { + # Official Name : Accepted strings + 'FILTER_FLUSH_DEF_DYNAMIC_PRESSURE_CHECK': ['dynamic', 'dynamic pressure check'], + 'FILTER_FLUSH_DEF_STATIC_PRESSURE_CHECK': ['static', 'static pressure check'], + 'FILTER_FLUSH_DEF_PAUSED': ['paused'], + 'NUM_OF_PERM_FLUSH_STATES': [], +} + + + # ================================================== Enum Creators: Events ================================================== @unique class FPEventList(DialinEnum): @@ -213,7 +318,9 @@ FP_EVENT_PRE_GEN_DEF_CHANGE = 7 # FP defeatured pre gen state change FP_EVENT_GENP_DEF_CHANGE = 8 # FP defeatured gen permeate state change FP_EVENT_FAULT_ALARM_TRIGGER = 9 # FP event for alarms that would trigger - NUM_OF_FP_EVENT_IDS = 10 # Number of FP events + FP_EVENT_P25_LEVL_CHANGE = 10 # FP floater level change event + FP_EVENT_OPERATION_STATUS = 11 # FP operation status event + NUM_OF_FP_EVENT_IDS = 12 # Number of FP events FPEventList._str_list = { # Official Name : Accepted strings @@ -227,31 +334,12 @@ 'FP_EVENT_PRE_GEN_DEF_CHANGE': ['defeatured pre-generate permeate change', 'def pre-genp change'], 'FP_EVENT_GENP_DEF_CHANGE': ['defeatured generate permeate change', 'def genp change'], 'FP_EVENT_FAULT_ALARM_TRIGGER': ['alarm', 'alarm trigger', 'fault alarm trigger'], + 'FP_EVENT_OPERATION_STATUS': ['operation status', 'status', 'op status', 'operation status change', 'status change', 'op status change'], 'NUM_OF_FP_EVENT_IDS': [], } -@unique -class FPEventDataTypes(DialinEnum): - EVENT_DATA_TYPE_NONE = 0 # No Event Data Type - EVENT_DATA_TYPE_U32 = 1 # Unsigned 32bit Event Data Type - EVENT_DATA_TYPE_S32 = 2 # Signed 32bit Event Data Type - EVENT_DATA_TYPE_F32 = 3 # Float 32bit Event Data Type - EVENT_DATA_TYPE_BOOL = 4 # Boolean Event Data Type - NUM_OF_EVENT_DATA_TYPES = 5 # Number of Event Data Types -FPEventDataTypes._str_list = { - # Official Name : Accepted strings - 'EVENT_DATA_TYPE_NONE': ['none'], - 'EVENT_DATA_TYPE_U32': ['u32'], - 'EVENT_DATA_TYPE_S32': ['s32'], - 'EVENT_DATA_TYPE_F32': ['f32'], - 'EVENT_DATA_TYPE_BOOL': ['bool', 'boolean'], - 'NUM_OF_EVENT_DATA_TYPES': [], -} - - - # ================================================== Enum Creators: Names ================================================== @unique class FPBoostPumpNames(DialinEnum): @@ -396,7 +484,6 @@ } -@unique class FPValveNames(DialinEnum): M4_VALV = 0 # Valve (M4 VWi) M12_VALV = 1 # Valve (M12) @@ -408,6 +495,12 @@ P6_VALV = 7 # Valve (P6 VFF) NUM_OF_FP_VALVES = 8 # Number of valves + # Aliases + FIRST_IO_VALVE = M4_VALV + LAST_IO_VALVE = M12_VALV + FIRST_FP_VALVE = P11_VALV + LAST_FP_VALVE = P6_VALV + FPValveNames._str_list = { # Official Name : Accepted strings 'M4_VALV': ['m4'], @@ -439,6 +532,24 @@ # ================================================== Enum Creators: Support ================================================== @unique +class FPBoostPumpStates(DialinEnum): + PUMP_OFF_STATE = 0 # Pump Offline State + PUMP_CONTROL_TO_TARGET_FLOW_STATE = 1 # Boost pump control to target flow state + PUMP_CONTROL_TO_TARGET_PRESSURE_STATE = 2 # Boost pump control to max pressure state. + PUMP_OPEN_LOOP_STATE = 3 # Boost pump open loop state. + NUM_OF_BOOST_PUMP_STATES = 4 # Number of Boost pump states + +FPBoostPumpStates._str_list = { + # Official Name : Accepted strings + 'PUMP_OFF_STATE': ['closed', 'off', 'inactive', 'offline'], + 'PUMP_CONTROL_TO_TARGET_FLOW_STATE': ['flow', 'target to flow', 'to flow'], + 'PUMP_CONTROL_TO_TARGET_PRESSURE_STATE': ['pressure', 'target to pressure', 'to pressure', 'pres'], + 'PUMP_OPEN_LOOP_STATE': ['open', 'open loop', 'on'], + 'NUM_OF_BOOST_PUMP_STATES': [], +} + + +@unique class FPFloaterLevels(DialinEnum): LEVEL_STATE_EMPTY = 0 # Empty level for the FP Floater Level Sensors LEVEL_STATE_LOW = 1 # Low level for the FP Floater Level Sensors @@ -466,7 +577,7 @@ SPEED = 3 # Current Speed attribute for pumps TARGET_PRES = 4 # Target Pressure attribute for pumps TARGET_FLOW = 5 # Target Flow attribute for pumps - TARGET_DUTY_CYCLE = 6 # Target Duty Cycle attribute for pumps + TARGET_DUTY_CYCLE_PCT = 6 # Target Duty Cycle Percentage attribute for pumps DUTY_CYCLE_PCT = 7 # Duty Cycle Percentage attribute for pumps FB_DUTY_CYCLE_PCT = 8 # Feedback Duty Cycle Percentage attribute for pumps NUM_OF_RO_PUMP_ATTRIBUTES = 9 # Number of pump attributes @@ -479,58 +590,58 @@ 'SPEED': [], 'TARGET_PRES': ['target pressure'], 'TARGET_FLOW': [], - 'TARGET_DUTY_CYCLE': [], + 'TARGET_DUTY_CYCLE_PCT': ['target duty cycle', 'target duty cycle percentage'], 'DUTY_CYCLE_PCT': ['duty cycle percentage'], 'FB_DUTY_CYCLE_PCT': ['feedback duty cycle percentage'], 'NUM_OF_RO_PUMP_ATTRIBUTES': [], } @unique -class FPValveStates(DialinEnum): - VALVE_STATE_CLOSED = 0 # Valve Closed State - VALVE_STATE_OPEN = 1 # Valve Open State - NUM_OF_VALVE_STATES = 2 # Valve Open State +class FPRecoveryOptions(DialinEnum): + NO_RECOVERY = 0 # NO recoverye + LOW_RECOVERY = 1 # LOW recovery + MEDIUM_RECOVERY = 2 # MEDIUM recovery + HIGH_RECOVERY = 3 # HIGH recovery + NUM_OF_RECOVER_OPTIONS = 4 # Number of recovery options -FPValveStates._str_list = { +FPRecoveryOptions._str_list = { # Official Name : Accepted strings - 'VALVE_STATE_CLOSED': ['closed'], - 'VALVE_STATE_OPEN': ['open'], - 'NUM_OF_VALVE_STATES': [], + 'NO_RECOVERY': ['no', 'no ro'], + 'LOW_RECOVERY': ['low', 'low ro'], + 'MEDIUM_RECOVERY': ['med', 'med ro', 'medium', 'medium ro'], + 'HIGH_RECOVERY': ['high', 'high ro'], + 'NUM_OF_RECOVER_OPTIONS': [], } +@unique +class FPROPumpStates(DialinEnum): + PUMP_OFF_STATE = 0 # Pump Offline State + PUMP_CONTROL_TO_TARGET_FLOW_STATE = 1 # RO pump control to target flow state + PUMP_CONTROL_TO_TARGET_PRESSURE_STATE = 2 # RO pump control to max pressure state. + PUMP_OPEN_LOOP_STATE = 3 # RO pump open loop state. + NUM_OF_RO_PUMP_STATES = 4 # Number of RO pump states -# ================================================== Creates a singleton ================================================== -class FP_Defs(): +FPROPumpStates._str_list = { + # Official Name : Accepted strings + 'PUMP_OFF_STATE': ['closed', 'off', 'inactive', 'offline'], + 'PUMP_CONTROL_TO_TARGET_FLOW_STATE': ['flow', 'target to flow', 'to flow'], + 'PUMP_CONTROL_TO_TARGET_PRESSURE_STATE': ['pressure', 'target to pressure', 'to pressure', 'pres'], + 'PUMP_OPEN_LOOP_STATE': ['open', 'open loop', 'on'], + 'NUM_OF_RO_PUMP_STATES': [], +} - FPOpModes = FPOpModes - FPFaultStates = FPFaultStates - FPServiceStates = FPServiceStates - FPPostStates = FPPostStates - FPStandbyStates = FPStandbyStates - FPPreGenPermeateStates = FPPreGenPermeateStates - FPPreGenPDefStates = FPPreGenPDefStates - FPGenPermeateStates = FPGenPermeateStates - FPGenPermeateDefStates = FPGenPermeateDefStates - FPNotLegalStates = FPNotLegalStates - FPEventList= FPEventList - FPEventDataTypes= FPEventDataTypes +@unique +class FPValveStates(DialinEnum): + VALVE_STATE_CLOSED = 0 # Valve Closed State + VALVE_STATE_OPEN = 1 # Valve Open State + NUM_OF_VALVE_STATES = 2 # Number of valve states - FPBoostPumpNames = FPBoostPumpNames - FPConductivitySensorNames = FPConductivitySensorNames - FPRORejectionRatioNames = FPRORejectionRatioNames - FPFlowSensorNames = FPFlowSensorNames - FPFloaterLevelSensorNames = FPFloaterLevelSensorNames - FPPressureSensorNames = FPPressureSensorNames - FPROPumpNames = FPROPumpNames - FPTemperatureSensorNames = FPTemperatureSensorNames - FPValveNames = FPValveNames - FPAllPumpNames = FPAllPumpNames - - FPFloaterLevels = FPFloaterLevels - FPPumpAttributes = FPPumpAttributes - FPValveStates = FPValveStates - -fp_enum_repository = FP_Defs() +FPValveStates._str_list = { + # Official Name : Accepted strings + 'VALVE_STATE_CLOSED': ['closed', 'off'], + 'VALVE_STATE_OPEN': ['open', 'on'], + 'NUM_OF_VALVE_STATES': [], +}