Index: leahi_dialin/dd/modules/valves.py =================================================================== diff -u -r98579cec744881b6fc6d368c0fb1b43932393447 -rfa63b92d3d3a3f2870833583bff12729e180e2d1 --- leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 98579cec744881b6fc6d368c0fb1b43932393447) +++ leahi_dialin/dd/modules/valves.py (.../valves.py) (revision fa63b92d3d3a3f2870833583bff12729e180e2d1) @@ -43,6 +43,8 @@ END_POS_VALVES_STATES = START_POS_VALVES_STATES + 2 # Valves States come in as a U16 value (2 bytes) START_POS_BCV_VALVES_STATES = END_POS_VALVES_STATES END_POS_BCV_VALVES_STATES = START_POS_BCV_VALVES_STATES + 1 + START_POS_SPARE_VALVES_STATES = END_POS_BCV_VALVES_STATES + END_POS_SPARE_VALVES_STATES = START_POS_SPARE_VALVES_STATES + 1 END_POS_ALL_VALVES = START_POS_VALVES_STATES + 4 def __init__(self, can_interface, logger: Logger): @@ -89,6 +91,15 @@ self.d26_valv = {"id": DDValveNames.D21_VALV.value, "state": DEENERGIZED} self.d22_valv = {"id": DDValveNames.D22_VALV.value, "state": DEENERGIZED} + self.d79_pmp_valv = {"id": DDValveNames.D79_PMP_VALV.value, "state": DEENERGIZED} + self.spare1_valv = {"id": DDValveNames.SPARE1_VALV.value, "state": DEENERGIZED} + self.spare2_valv = {"id": DDValveNames.SPARE2_VALV.value, "state": DEENERGIZED} + self.spare3_valv = {"id": DDValveNames.SPARE3_VALV.value, "state": DEENERGIZED} + self.spare4_valv = {"id": DDValveNames.SPARE4_VALV.value, "state": DEENERGIZED} + self.spare5_valv = {"id": DDValveNames.SPARE5_VALV.value, "state": DEENERGIZED} + self.spare6_valv = {"id": DDValveNames.SPARE6_VALV.value, "state": DEENERGIZED} + self.spare7_valv = {"id": DDValveNames.SPARE7_VALV.value, "state": DEENERGIZED} + # NOTE: The len function counts the enums with the same number only once. This is not the case in the DD valves # class because each valve must have a unique ID. self.valve_states_enum = [0 for _ in range(len(DDValveNames))] @@ -127,7 +138,16 @@ self.d24_valv.get("state", None), self.d20_valv.get("state", None), self.d26_valv.get("state", None), - self.d22_valv.get("state", None) + self.d22_valv.get("state", None), + + self.d79_pmp_valv.get("state", None), + self.spare1_valv.get("state", None), + self.spare2_valv.get("state", None), + self.spare3_valv.get("state", None), + self.spare4_valv.get("state", None), + self.spare5_valv.get("state", None), + self.spare6_valv.get("state", None), + self.spare7_valv.get("state", None) ] @staticmethod @@ -186,7 +206,16 @@ "d20_valv", "d26_valv", "d22_valv", + "d79_pmp_valv", + "spare1_valv", + "spare2_valv", + "spare3_valv", + "spare4_valv", + "spare5_valv", + "spare6_valv", + "spare7_valv", "valve_states_enum", + "valves_sensed_states", "dd_valves_states_timestamp" ]) def _handler_valves_sync(self, message, timestamp=0.0): @@ -229,7 +258,17 @@ self.d26_valv["state"] = self._binary_to_valve_state(bcv[0] & 64) self.d22_valv["state"] = self._binary_to_valve_state(bcv[0] & 128) - start = self.END_POS_BCV_VALVES_STATES + spv = struct.unpack('B', bytearray(message['message'][self.START_POS_SPARE_VALVES_STATES:self.END_POS_SPARE_VALVES_STATES])) + self.d79_pmp_valv["state"] = self._binary_to_valve_state(bcv[0] & 1) + self.spare1_valv["state"] = self._binary_to_valve_state(bcv[0] & 2) + self.spare2_valv["state"] = self._binary_to_valve_state(bcv[0] & 4) + self.spare3_valv["state"] = self._binary_to_valve_state(bcv[0] & 8) + self.spare4_valv["state"] = self._binary_to_valve_state(bcv[0] & 16) + self.spare5_valv["state"] = self._binary_to_valve_state(bcv[0] & 32) + self.spare6_valv["state"] = self._binary_to_valve_state(bcv[0] & 64) + self.spare7_valv["state"] = self._binary_to_valve_state(bcv[0] & 128) + + start = self.END_POS_SPARE_VALVES_STATES end = start + 1 for valve_id in self.valves_sensed_states: valve_state_number = struct.unpack('B', bytearray(message['message'][start:end]))[0]