Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -re60ad12bcc58d5905d7268bbeaae139d8233e023 -r55d97b27c73f8e08994328881d3f56cbc7f00e29 --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision e60ad12bcc58d5905d7268bbeaae139d8233e023) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 55d97b27c73f8e08994328881d3f56cbc7f00e29) @@ -8,13 +8,12 @@ # @file fp_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 04-Dec-2025 +# @date (last) 12-Jan-2026 # @author (original) Peter Lucia # @date (original) 22-Jun-2021 # ############################################################################ -from enum import unique from aenum import extend_enum from typing import TYPE_CHECKING @@ -25,12 +24,12 @@ class FP_Defs: - # This is for the editor to recognize the enums for autocomplete + # IDE autocomplete suppor if TYPE_CHECKING: FPOpModes: DialinEnum + FPFaultStates: DialinEnum FPServiceStates: DialinEnum FPPostStates: DialinEnum - FPFaultStates: DialinEnum FPStandbyStates: DialinEnum FPPreGenPermeateStates: DialinEnum FPPreGenPDefStates: DialinEnum @@ -39,6 +38,7 @@ FPNotLegalStates: DialinEnum FPEventList: DialinEnum FPEventDataTypes: DialinEnum + FPBoostPumpNames: DialinEnum FPConductivitySensorNames: DialinEnum FPRORejectionRatioNames: DialinEnum @@ -49,29 +49,30 @@ FPTemperatureSensorNames: DialinEnum FPValveNames: DialinEnum FPAllPumpNames: DialinEnum + FPFloaterLevels: DialinEnum FPPumpAttributes: DialinEnum FPValveStates: DialinEnum - - # A Dictionary storing which Property(Enum) should be created by which function _properties = { - # Operation related enums + # Operation / State enums 'FPOpModes': '_create_fp_operation_modes', + 'FPFaultStates': '_create_fp_fault_states', 'FPServiceStates': '_create_fp_service_states', 'FPPostStates': '_create_fp_post_states', - 'FPFaultStates': '_create_fp_fault_states', 'FPStandbyStates': '_create_fp_standby_states', 'FPPreGenPermeateStates': '_create_fp_pregen_states', 'FPPreGenPDefStates': '_create_fp_pregen_defeatured_states', 'FPGenPermeateStates': '_create_fp_gen_permeate_states', 'FPGenPermeateDefStates': '_create_fp_gen_permeate_defeatured_states', 'FPNotLegalStates': '_create_fp_not_legal_states', - 'FPEventList': '_create_fp_events_states', - 'FPEventDataTypes': '_create_fp_event_data_types_states', + + # Event enums + 'FPEventList': '_create_fp_eventlist', + 'FPEventDataTypes': '_create_fp_event_data_types', - # Module Names related enums + # Module Names enums 'FPBoostPumpNames': '_create_fp_boost_pump_names', 'FPConductivitySensorNames': '_create_fp_conductivity_sensor_names', 'FPRORejectionRatioNames': '_create_fp_ro_rejection_ratio_names', @@ -83,7 +84,7 @@ 'FPAllPumpNames': '_create_fp_all_pump_names', 'FPTemperatureSensorNames': '_create_fp_temperature_sensor_names', - # Module Support enums + # Support enums 'FPFloaterLevels': '_create_fp_floater_levels', 'FPPumpAttributes': '_create_fp_pump_attributes', 'FPValveStates': '_create_fp_valve_states', @@ -127,25 +128,27 @@ 'MODE_NLEG': 8, # Not legal - an illegal mode transition occurred 'NUM_OF_FP_MODES': 9, # Number of FP operation modes } + return DialinEnum('FPOpModes', members) - # Create the enum - FPOpModes = DialinEnum('FPOpModes', members) - - return FPOpModes - + def _create_fp_fault_states(self): + members = { + 'FP_FAULT_STATE_START': 0, # FP Fault Start State + 'FP_FAULT_DEENERGIZED_STATE': 1, # FP Fault De-energized State + 'FP_FAULT_ENERGIZED_STATE': 2, # FP Fault Energized State + 'NUM_OF_FP_FAULT_STATES': 3, # Number of Fault Mode State + } + return DialinEnum('FPFaultStates', members) + + def _create_fp_service_states(self): members = { 'NUM_OF_FP_SERV_STATES': 0, # Number of FP service states } + return DialinEnum('FPServiceStates', members) - # Create the enum - FPServiceStates = DialinEnum('FPServiceStates', members) - - return FPServiceStates - - def _create_fp_post_states(self): + def _create_fp_init_post_states(self): members = { 'FP_POST_STATE_START': 0, # Start initialize & POST mode state 'FP_POST_STATE_FW_INTEGRITY': 1, # Run firmware integrity test state @@ -159,39 +162,17 @@ 'FP_POST_STATE_FAILED': 9, # POST self-tests failed state 'NUM_OF_FP_POST_STATES': 10 # Number of initialize & POST mode states } + return DialinEnum('FPPostStates', members) - # Create the enum - FPPostStates = DialinEnum('FPPostStates', members) - - return FPPostStates - - def _create_fp_fault_states(self): - members = { - 'FP_FAULT_STATE_START': 0, # FP Fault Start State - 'FP_FAULT_DEENERGIZED_STATE': 1, # FP Fault De-energized State - 'FP_FAULT_ENERGIZED_STATE': 2, # FP Fault Energized State - 'NUM_OF_FP_FAULT_STATES': 3, # Number of Fault Mode State - } - - # Create the enum - FPFaultStates = DialinEnum('FPFaultStates', members) - - return FPFaultStates - - def _create_fp_standby_states(self): members = { 'FP_STANDBY_MODE_STATE_IDLE': 0, # Idle standby mode state 'NUM_OF_FP_STANDBY_MODE_STATES': 1, # Number of standby mode states } + return DialinEnum('FPStandbyStates', members) - # Create the enum - FPStandbyStates = DialinEnum('FPStandbyStates', members) - - return FPStandbyStates - def _create_fp_pregen_states(self): members = { 'FP_PRE_GENP_INLET_PRES_CHECK': 0, # FP Pre Gen Permeate Inlet Pressure Check State @@ -202,65 +183,45 @@ 'FP_PRE_GENP_PAUSED': 5, # FP Pre Gen Permeate Paused State 'NUM_OF_FP_PRE_GENP_MODE_STATES': 6, # Number of Pre-Gen Permeate mode states } + return DialinEnum('FPPreGenPermeateStates', members) - # Create the enum - FPPreGenPermeateStates = DialinEnum('FPPreGenPermeateStates', members) - - return FPPreGenPermeateStates - def _create_fp_pregen_defeatured_states(self): members = { 'FP_PRE_GENP_DEF_FLUSH': 0, # Pre Gen Permeate Defeatured Flush state 'FP_PRE_GENP_DEF_INLET_WATER_CHECK': 1, # Pre Gen Permeate Defeatured Inlet Water Check state 'FP_PRE_GENP_DEF_PAUSED': 2, # Defeatured Pre Gen Permeate Paused state 'NUM_OF_FP_PRE_GENP_DEF_MODE_STATES': 3, # Number of Defeatured Pre Gen Permeate states } + return DialinEnum('FPPreGenPDefStates', members) - # Create the enum - FPPreGenPDefStates = DialinEnum('FPPreGenPDefStates', members) - - return FPPreGenPDefStates - def _create_fp_gen_permeate_states(self): members = { 'FP_GENP_TANK_FILL_STATE': 0, # Gen Permeate Tank Fill low state 'FP_GENP_TANK_FULL_STATE': 1, # Gen Permeate Tank Full state 'NUM_OF_FP_GENP_MODE_STATES': 2, # Number of Gen permeate states } + return DialinEnum('FPGenPermeateStates', members) - # Create the enum - FPGenPermeateStates = DialinEnum('FPGenPermeateStates', members) - - return FPGenPermeateStates - def _create_fp_gen_permeate_defeatured_states(self): members = { 'FP_GENP_DEF_SUPPLY_WATER': 0, # Gen Permeate Defeatured Supply Water statee 'FP_GENP_DEF_PAUSED': 1, # Gen Permeate Defeatured Paused state 'NUM_OF_FP_GENP_DEF_MODE_STATES': 2, # Number of Defeatured Gen permeate states } + return DialinEnum('FPGenPermeateDefStates', members) - # Create the enum - FPGenPermeateDefStates = DialinEnum('FPGenPermeateDefStates', members) - - return FPGenPermeateDefStates - def _create_fp_not_legal_states(self): members = { 'NUM_OF_NOT_LEGAL_STATES': 0, # Number of Not Legal states } + return DialinEnum('FPNotLegalStates', members) - # Create the enum - FPNotLegalStates = DialinEnum('FPNotLegalStates', members) - - return FPNotLegalStates - - def _create_fp_events_states(self): + def _create_fp_eventlist(self): members = { 'FP_EVENT_STARTUP': 0, # FP startup event 'FP_EVENT_OP_MODE_CHANGE': 1, # FP Op mode change event @@ -274,14 +235,10 @@ 'FP_EVENT_FAULT_ALARM_TRIGGER': 9, # FP event for alarms that would trigger 'NUM_OF_FP_EVENT_IDS': 10, # Number of FP events } + return DialinEnum('FPEventList', members) - # Create the enum - FPEventList = DialinEnum('FPEventList', members) - - return FPEventList - - def _create_fp_event_data_types_states(self): + def _create_fp_event_data_types(self): members = { 'EVENT_DATA_TYPE_NONE': 0, # No Event Data Type 'EVENT_DATA_TYPE_U32': 1, # Unsigned 32bit Event Data Type @@ -290,38 +247,27 @@ 'EVENT_DATA_TYPE_BOOL': 4, # Boolean Event Data Type 'NUM_OF_EVENT_DATA_TYPES': 5, # Number of Event Data Types } + return DialinEnum('FPEventDataTypes', members) - # Create the enum - FPEventDataTypes = DialinEnum('FPEventDataTypes', members) - - return FPEventDataTypes - # ================================================== Enum Creators: Names ================================================== def _create_fp_boost_pump_names(self): members = { 'P40_PUMP': 0, # FP Boost Pump 'NUM_OF_BOOST_PUMPS': 1, # Number of FP Boost Pumps } + return DialinEnum('FPBoostPumpNames', members) - # Create the enum - FPBoostPumpNames = DialinEnum('FPBoostPumpNames', members) - - return FPBoostPumpNames - def _create_fp_conductivity_sensor_names(self): members = { 'P9_COND': 0, # CPi (P9) conductivity sensor value 'P18_COND': 1, # CPo (P18) conductivity sensor value 'NUM_OF_FP_CONDUCTIVITY_SENSRORS': 2, # Number of Conductivity sensors } - # Create the enum - FPConductivitySensorNames = DialinEnum('FPConductivitySensorNames', members) - - return FPConductivitySensorNames + return DialinEnum('FPConductivitySensorNames', members) def _create_fp_ro_rejection_ratio_names(self): @@ -333,38 +279,26 @@ 'GEN_PERMEATE_STATE': 4, # Generate Permeate State value 'NUM_OF_FP_RO_REJECTION_RATIO': 5, # Number of RO Rejection Ratio items } + return DialinEnum('FPRORejectionRatioNames', members) - # Create the enum - FPRORejectionRatioNames = DialinEnum('FPRORejectionRatioNames', members) - - return FPRORejectionRatioNames - def _create_fp_flow_sensor_names(self): members = { 'P7_FLOW': 0, # Water inlet flow sensor (FMS P7) 'P16_FLOW': 1, # RO outlet flow sensor (FMP P16) 'NUM_OF_FP_FLOW_SENSORS': 2, # Number of FP Flow Sensors } + return DialinEnum('FPFlowSensorNames', members) - # Create the enum - FPFlowSensorNames = DialinEnum('FPFlowSensorNames', members) - - return FPFlowSensorNames - def _create_fp_floater_sensor_names(self): members = { 'P25_LEVEL': 0, # P25 Level sensor 'NUM_OF_FP_LEVEL_SENSORS': 1, # Number of Level Sensors } + return DialinEnum('FPFloaterLevelSensorNames', members) - # Create the enum - FPFloaterLevelSensorNames = DialinEnum('FPFloaterLevelSensorNames', members) - - return FPFloaterLevelSensorNames - def _create_fp_pressure_sensor_names(self): if GlobalVariables().NEXT_GEN_HW == True: members = { @@ -383,26 +317,17 @@ 'P17_PRES' : 3, # Pressure before the RO filter 'NUM_OF_FP_PRES_SENSORS' : 4, # Number of Pressure Sensors } + return DialinEnum('FPPressureSensorNames', members) - # Create the enum - FPPressureSensorNames = DialinEnum('FPPressureSensorNames', members) - - return FPPressureSensorNames - def _create_fp_ro_pump_names(self): members = { 'P12_PUMP': 0, # P12 RO Pump 'NUM_OF_RO_PUMPS': 1, # Number of RO Pumps - } + return DialinEnum('FPROPumpNames', members) - # Create the enum - FPROPumpNames = DialinEnum('FPROPumpNames', members) - - return FPROPumpNames - def _create_fp_temperature_sensor_names(self): if GlobalVariables().NEXT_GEN_HW == True: members = { @@ -431,25 +356,25 @@ } # Create the enum - FPTemperatureSensorNames = DialinEnum('FPTemperatureSensorNames', members) + created_enum = DialinEnum('FPTemperatureSensorNames', members) # Add aliases - extend_enum(FPTemperatureSensorNames, 'FIRST_PRESSURE_SENSOR', FPTemperatureSensorNames.M3_TEMP.value) - extend_enum(FPTemperatureSensorNames, 'LAST_PRESSURE_SENSOR', FPTemperatureSensorNames.P46_TEMP.value if GlobalVariables.NEXT_GEN_HW == True else FPTemperatureSensorNames.P17_TEMP.value) - extend_enum(FPTemperatureSensorNames, 'FIRST_CONDUCTIVITY_SENSOR', FPTemperatureSensorNames.P10_TEMP.value) - extend_enum(FPTemperatureSensorNames, 'LAST_CONDUCTIVITY_SENSOR', FPTemperatureSensorNames.P19_TEMP.value) - extend_enum(FPTemperatureSensorNames, 'FIRST_FLOW_SENSOR', FPTemperatureSensorNames.P7_TEMP.value) - extend_enum(FPTemperatureSensorNames, 'LAST_FLOW_SENSOR', FPTemperatureSensorNames.P16_TEMP.value) + extend_enum(created_enum, 'FIRST_PRESSURE_SENSOR', created_enum.M3_TEMP.value) + extend_enum(created_enum, 'LAST_PRESSURE_SENSOR', created_enum.P46_TEMP.value if GlobalVariables.NEXT_GEN_HW == True else created_enum.P17_TEMP.value) + extend_enum(created_enum, 'FIRST_CONDUCTIVITY_SENSOR', created_enum.P10_TEMP.value) + extend_enum(created_enum, 'LAST_CONDUCTIVITY_SENSOR', created_enum.P19_TEMP.value) + extend_enum(created_enum, 'FIRST_FLOW_SENSOR', created_enum.P7_TEMP.value) + extend_enum(created_enum, 'LAST_FLOW_SENSOR', created_enum.P16_TEMP.value) # Add aliases to be searchable (listed when pressed TAB) - FPTemperatureSensorNames._member_names_.append('FIRST_PRESSURE_SENSOR') - FPTemperatureSensorNames._member_names_.append('LAST_PRESSURE_SENSOR') - FPTemperatureSensorNames._member_names_.append('FIRST_CONDUCTIVITY_SENSOR') - FPTemperatureSensorNames._member_names_.append('LAST_CONDUCTIVITY_SENSOR') - FPTemperatureSensorNames._member_names_.append('FIRST_FLOW_SENSOR') - FPTemperatureSensorNames._member_names_.append('LAST_FLOW_SENSOR') + created_enum._member_names_.append('FIRST_PRESSURE_SENSOR') + created_enum._member_names_.append('LAST_PRESSURE_SENSOR') + created_enum._member_names_.append('FIRST_CONDUCTIVITY_SENSOR') + created_enum._member_names_.append('LAST_CONDUCTIVITY_SENSOR') + created_enum._member_names_.append('FIRST_FLOW_SENSOR') + created_enum._member_names_.append('LAST_FLOW_SENSOR') - return FPTemperatureSensorNames + return created_enum def _create_fp_valve_names(self): @@ -464,26 +389,19 @@ 'P6_VALV': 7, # Valve (P6 VFF) 'NUM_OF_FP_VALVES': 8, # Number of valves } + return DialinEnum('FPValveNames', members) - # Create the enum - FPValveNames = DialinEnum('FPValveNames', members) - - return FPValveNames def _create_fp_all_pump_names(self): members = { 'P12_PUMP_RO': 0, # P14 RO Pump 'P40_PUMP_BOOSTER': 1, # P40 Boost Pump } + return DialinEnum('FPAllPumpNames', members) - # Create the enum - FPAllPumpNames = DialinEnum('FPAllPumpNames', members) - - return FPAllPumpNames - # ================================================== Enum Creators: Support ================================================== def _create_fp_floater_levels(self): members = { @@ -494,13 +412,9 @@ 'LEVEL_STATE_ILLEGAL': 4, # Illegal level for FP Floater Level Sensor (indicates investigation) 'NUM_OF_LEVEL_STATES': 5, # Number of Level States } + return DialinEnum('FPFloaterLevels', members) - # Create the enum - FPFloaterLevels = DialinEnum('FPFloaterLevels', members) - - return FPFloaterLevels - def _create_fp_pump_attributes(self): members = { 'STATE': 0, # State to command attribute for Pumps @@ -514,26 +428,18 @@ 'FB_DUTY_CYCLE_PCT': 8, # Feedback Duty Cycle Percentage attribute for pumps 'NUM_OF_RO_PUMP_ATTRIBUTES': 9, # Number of pump attributes } + return DialinEnum('FPPumpAttributes', members) - # Create the enum - FPPumpAttributes = DialinEnum('FPPumpAttributes', members) - - return FPPumpAttributes - def _create_fp_valve_states(self): members = { 'VALVE_STATE_CLOSED': 0, # Valve Closed State 'VALVE_STATE_OPEN': 1, # Valve Open State } + return DialinEnum('FPValveStates', members) - # Create the enum - FPValveStates = DialinEnum('FPValveStates', members) - - return FPValveStates - # ================================================== Creates a singleton ================================================== fp_enum_repository = FP_Defs()