Index: leahi_dialin/ro/modules/valves.py =================================================================== diff -u -r557a20a04e6dde63be189809971f9ecfb341fb67 -reed229fa7758ca84e06a68f068ff242bd7bc835a --- leahi_dialin/ro/modules/valves.py (.../valves.py) (revision 557a20a04e6dde63be189809971f9ecfb341fb67) +++ leahi_dialin/ro/modules/valves.py (.../valves.py) (revision eed229fa7758ca84e06a68f068ff242bd7bc835a) @@ -39,14 +39,15 @@ @unique class ROValveNames(DialinEnum): - VWI = 0 # Valve (M4) - VFB = 1 # Valve (M7) - VFF = 2 # Valve (P6) - VPI = 3 # Valve (P11) - VCR = 4 # Valve (P33) - VCB = 5 # Valve (P34) - VCD = 6 # Valve (P37) - VROD = 7 # Valve (P39) + VWI = 0 # Valve (M4 VWi) + VROD = 1 # Valve (P39 VROd) + VFF = 2 # Valve (P6 VFF) + VPI = 3 # Valve (P11 VPi) + VCR = 4 # Valve (P33 VCr) + VCB = 5 # Valve (P34 VCb) + VCD = 6 # Valve (P37 VCd) + VFB = 7 # Valve (M7 VFB) + SPP = 8 # Valve (P20 SPP) class ROValves(AbstractSubSystem): """ @@ -75,7 +76,7 @@ msg_id = MsgIds.MSG_ID_RO_VALVES_STATES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_valves_sync) - self.valve_states_all = 0x00000000 + self.valve_states_all = 0x0000 self.valve_state_VWI = {"id": ROValveNames.VWI.value, "state": DEENERGIZED} self.valve_state_VFB = {"id": ROValveNames.VFB.value, "state": DEENERGIZED} self.valve_state_VFF = {"id": ROValveNames.VFF.value, "state": DEENERGIZED} @@ -84,8 +85,8 @@ self.valve_state_VCB = {"id": ROValveNames.VCB.value, "state": DEENERGIZED} self.valve_state_VCD = {"id": ROValveNames.VCD.value, "state": DEENERGIZED} self.valve_state_VROD = {"id": ROValveNames.VROD.value, "state": DEENERGIZED} + self.valve_state_SPP = {"id": ROValveNames.SPP.value, "state": DEENERGIZED} - # NOTE: The len function counts the enums with the same number only once. This is not the case in the DG valves # class because each valve must have a unique ID. self.valve_states_enum = [0 for _ in range(len(ROValveNames))] @@ -100,15 +101,15 @@ @return: All valve states """ return [ - self.valve_state_VWI.get("state", None), - self.valve_state_VFB.get("state", None), - self.valve_state_VFF.get("state", None), - self.valve_state_VPI.get("state", None), - self.valve_state_VCR.get("state", None), - self.valve_state_VCB.get("state", None), - self.valve_state_VCD.get("state", None), - self.valve_state_VROD.get("state", None), - + self.valve_state_VWI.get("state"), + self.valve_state_VFB.get("state"), + self.valve_state_VFF.get("state"), + self.valve_state_VPI.get("state"), + self.valve_state_VCR.get("state"), + self.valve_state_VCB.get("state"), + self.valve_state_VCD.get("state"), + self.valve_state_VROD.get("state"), + self.valve_state_SPP.get("state") ] @staticmethod @@ -152,6 +153,7 @@ "valve_state_VCB", "valve_state_VCD", "valve_state_VROD", + "valve_state_SPP" "valve_states_enum" ]) def _handler_valves_sync(self, message, timestamp=0.0): @@ -163,21 +165,23 @@ """ vst = struct.unpack('H', bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_VALVES_STATES])) + self.valve_states_all = vst[0] # Extract each valve state from U16 valves states using bit-masking self.valve_state_VWI["state"] = self._binary_to_valve_state(vst[0] & 1) self.valve_state_VFB["state"] = self._binary_to_valve_state(vst[0] & 2) - self.valve_state_VFF["state"] = self._binary_to_valve_state(vst[0] & 8) - self.valve_state_VPI["state"] = self._binary_to_valve_state(vst[0] & 16) - self.valve_state_VCR["state"] = self._binary_to_valve_state(vst[0] & 32) - self.valve_state_VCB["state"] = self._binary_to_valve_state(vst[0] & 64) - self.valve_state_VCD["state"] = self._binary_to_valve_state(vst[0] & 128) - self.valve_state_VROD["state"] = self._binary_to_valve_state(vst[0] & 256) + self.valve_state_VFF["state"] = self._binary_to_valve_state(vst[0] & 4) + self.valve_state_VPI["state"] = self._binary_to_valve_state(vst[0] & 8) + self.valve_state_VCR["state"] = self._binary_to_valve_state(vst[0] & 16) + self.valve_state_VCB["state"] = self._binary_to_valve_state(vst[0] & 32) + self.valve_state_VCD["state"] = self._binary_to_valve_state(vst[0] & 64) + self.valve_state_VROD["state"] = self._binary_to_valve_state(vst[0] & 128) + self.valve_state_SPP["state"] = self._binary_to_valve_state(vst[0] & 256) start = self.END_POS_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] - self.valves_sensed_states[valve_id] = ROValveNames(valve_state_number).name + self.valves_sensed_states[valve_id] = ROValveStates(valve_state_number).name start = end end += 1