Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -r70ede35f42770305f04b251b3372ef42a9cecbf5 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 70ede35f42770305f04b251b3372ef42a9cecbf5) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -396,7 +396,6 @@ } -@unique class FPValveNames(DialinEnum): M4_VALV = 0 # Valve (M4 VWi) M12_VALV = 1 # Valve (M12) @@ -408,6 +407,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'], @@ -487,14 +492,28 @@ @unique +class FPPumpStates(DialinEnum): + PUMP_OFF_STATE = 0 # Pump Offline State + PUMP_ON_STATE = 1 # Pump Online State + NUM_OF_PUMP_STATES = 2 # Number of pump states + +FPPumpStates._str_list = { + # Official Name : Accepted strings + 'PUMP_OFF_STATE': ['closed', 'off', 'inactive', 'offline'], + 'PUMP_ON_STATEOFF': ['open', 'on', 'active', 'online'], + 'NUM_OF_PUMP_STATES': [], +} + + +@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 + NUM_OF_VALVE_STATES = 2 # Number of valve states FPValveStates._str_list = { # Official Name : Accepted strings - 'VALVE_STATE_CLOSED': ['closed'], - 'VALVE_STATE_OPEN': ['open'], + 'VALVE_STATE_CLOSED': ['closed', 'off'], + 'VALVE_STATE_OPEN': ['open', 'on'], 'NUM_OF_VALVE_STATES': [], } Index: leahi_dialin/common/fp_defs_proxy.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/common/fp_defs_proxy.py (.../fp_defs_proxy.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/common/fp_defs_proxy.py (.../fp_defs_proxy.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -46,6 +46,7 @@ FPFloaterLevels = FPFloaterLevels FPPumpAttributes = FPPumpAttributes + FPPumpStates = FPPumpStates FPValveStates = FPValveStates fp_enum_repository = FP_Defs() Index: leahi_dialin/dd/modules/valves.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -99,12 +99,13 @@ self.spare7_valv = {"id": dd_enum_repository.DDValveNames.SPARE7_VALV.value, "state": DEENERGIZED} #: The Spare7 valve's value #: States of all the vales in list format - self.valve_states_enum = [0 for _ in range(dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value - 1)] + self.valve_states_enum = {} + for i in range(0, dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value): + valve_name = dd_enum_repository.DDValveNames(i).name.split('_')[0] + self.valve_states_enum[valve_name] = 0 + self.valves_sensed_states[valve_name] = '' - for valve in dd_enum_repository.DDValveNames.__members__: - self.valves_sensed_states[valve] = '' - def get_valve_states(self): """ Gets the valve states @@ -267,8 +268,9 @@ self.spare7_valv["state"] = self._binary_to_valve_state(spv[0] & 128) # Updating Valve_states_enum - for i in range(0, dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value - 1): - self.valve_states_enum[i] = eval(f'self.{dd_enum_repository.DDValveNames(i).name.lower()}["state"]') + for i in range(0, dd_enum_repository.DDValveNames.NUM_OF_DD_VALVES.value): + valve_name = dd_enum_repository.DDValveNames(i).name.split('_')[0] + self.valve_states_enum[valve_name] = eval(f'self.{dd_enum_repository.DDValveNames(i).name.lower()}["state"]') start = self.END_POS_SPARE_VALVES_STATES end = start + 1 Index: leahi_dialin/fp/modules/boost_pump.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -50,7 +50,7 @@ # The Boost Pump data in dictionary format self.boost_pump = { fp_enum_repository.FPBoostPumpNames.P40_PUMP.name: { - fp_enum_repository.FPPumpAttributes.STATE.name: 0, + fp_enum_repository.FPPumpAttributes.STATE.name: fp_enum_repository.FPPumpStates.PUMP_OFF_STATE.value, fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name: 0, fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name: 0, fp_enum_repository.FPPumpAttributes.SPEED.name: 0.0, Index: leahi_dialin/fp/modules/fp_test_configs.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/fp/modules/fp_test_configs.py (.../fp_test_configs.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/fp/modules/fp_test_configs.py (.../fp_test_configs.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -42,8 +42,7 @@ if self.can_interface is not None: channel_id = DenaliChannels.fp_to_dialin_ch_id - self.msg_id_fp_send_test_config = MsgIds.MSG_ID_FP_SEND_TEST_CONFIGURATION.value - self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_send_test_config, + self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_FP_SEND_TEST_CONFIGURATION.value, self._handler_fp_test_config_sync) self.fp_test_configs_response_timestamp = 0.0 #: The timestamp of the last message @@ -71,10 +70,12 @@ payload = message['message'] index = MsgFieldPositions.START_POS_FIELD_1 + print(f'run') for config in DDFPTestConfigOptions.__members__: - if 'NUM_OF_TEST_CONFIGS' not in config: + print(f'config: {config.name}') + if 'NUM_OF_TEST_CONFIGS' not in config.name: config_value, index = bytearray_to_integer(payload, index, False) - self.fp_test_configs[config] = config_value + self.fp_test_configs[config.name] = config_value self.fp_test_configs_response_timestamp = timestamp Index: leahi_dialin/fp/modules/ro_pump.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/fp/modules/ro_pump.py (.../ro_pump.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/fp/modules/ro_pump.py (.../ro_pump.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -50,7 +50,7 @@ # The RO Pump data in dictionary format self.ro_pump = { fp_enum_repository.FPROPumpNames.P12_PUMP.name: { - fp_enum_repository.FPPumpAttributes.STATE.name: 0, + fp_enum_repository.FPPumpAttributes.STATE.name: fp_enum_repository.FPPumpStates.PUMP_OFF_STATE.value, fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name: 0, fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name: 0, fp_enum_repository.FPPumpAttributes.SPEED.name: 0.0, Index: leahi_dialin/fp/modules/temperatures.py =================================================================== diff -u -r70ede35f42770305f04b251b3372ef42a9cecbf5 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 70ede35f42770305f04b251b3372ef42a9cecbf5) +++ leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -197,4 +197,4 @@ entity_name=f'FP {sensor_name} Temperature Sensor filtered temperature', override_text=str(sensor_value), logger=self.logger, - can_interface=self.can_interface) \ No newline at end of file + can_interface=self.can_interface) Index: leahi_dialin/fp/modules/valves.py =================================================================== diff -u -r70ede35f42770305f04b251b3372ef42a9cecbf5 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/fp/modules/valves.py (.../valves.py) (revision 70ede35f42770305f04b251b3372ef42a9cecbf5) +++ leahi_dialin/fp/modules/valves.py (.../valves.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -70,10 +70,11 @@ self.p6_valv = {"id": fp_enum_repository.FPValveNames.P6_VALV.value, "state": DEENERGIZED} #: The P6 valve's value #: States of all the vales in list format - self.valve_states_enum = [0 for _ in range(fp_enum_repository.FPValveNames.NUM_OF_FP_VALVES.value - 1)] - - for valve in fp_enum_repository.FPValveNames.__members__: - self.valves_sensed_states[valve] = '' + self.valve_states_enum = {} + for i in range(0, fp_enum_repository.FPValveNames.NUM_OF_FP_VALVES.value): + valve_name = fp_enum_repository.FPValveNames(i).name.split('_')[0] + self.valve_states_enum[valve_name] = 0 + self.valves_sensed_states[valve_name] = '' @staticmethod @@ -144,15 +145,14 @@ self.valve_states_all += fp_valves[0] << 8 # Updating Valve_states_enum - for i in range(0, fp_enum_repository.FPValveNames.NUM_OF_FP_VALVES.value - 1): - self.valve_states_enum[i] = eval(f'self.{fp_enum_repository.FPValveNames(i).name.lower()}["state"]') + for i in range(0, fp_enum_repository.FPValveNames.NUM_OF_FP_VALVES.value): + valve_name = fp_enum_repository.FPValveNames(i).name.split('_')[0] + self.valve_states_enum[valve_name] = eval(f'self.{fp_enum_repository.FPValveNames(i).name.lower()}["state"]') # Extract each valve sensed state from U08 valves states using bit-masking start = self.END_FP_VALVES_STATES end = start + 1 for valve_id in self.valves_sensed_states: - if valve_id.lower().startswith('num'): - continue self.valves_sensed_states[valve_id] = struct.unpack('B', bytearray(message['message'][start:end]))[0] start = end end += 1 Index: leahi_dialin/td/modules/pressure_sensors.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r9f947930678d5b13aa8f788f4e3d58cd1370a541 --- leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 9f947930678d5b13aa8f788f4e3d58cd1370a541) @@ -95,11 +95,12 @@ sensor_list =[] sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H2_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES.name]', 'f']) sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H14_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES.name]', 'f']) - sensor_list.append(['self.pressure_limits_state', 'f']) - sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H2_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES_LIMIT_MIN.name]', 'f']) - sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H2_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES_LIMIT_MAX.name]', 'f']) - sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H14_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES_LIMIT_MIN.name]', 'f']) - sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H14_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES_LIMIT_MAX.name]', 'f']) + sensor_list.append(['self.pressure_limits_state', 'i']) + # Every singed integer should be little endian + sensor_list.append(['self.td_pressure_sensors[td_enum_repository.TDPressureSensorNames.H2_PRES.name][td_enum_repository.TDPressureSensorAttributes.PRES_LIMIT_MIN.name]', ' int: + """ + Constructs and sends the barometric sensor override command + . + Constraints: + Must be logged into TD. + + @param pressure: float - measured pressure (in PSI) to override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + rst = integer_to_bytearray(reset) + prs = float_to_bytearray(pressure) + payload = rst + prs + + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_td_ch_id, + msg_id = MsgIds.MSG_ID_TD_BARO_PRESSURE_OVERRIDE, + entity_name = 'TD Barometric Pressure Sensor pressure', + override_text = str(prs) + " PSI. ", + logger = self.logger, + can_interface = self.can_interface)