Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -r2138d06d100fdcf23f2e9069f35ee2fdee62008f -rb4e77cdb95bebe6ba3fc49c2389d7e6127a81e9c --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 2138d06d100fdcf23f2e9069f35ee2fdee62008f) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision b4e77cdb95bebe6ba3fc49c2389d7e6127a81e9c) @@ -17,7 +17,7 @@ from logging import Logger from enum import unique -from leahi_dialin.td.constants import RESET, NO_RESET +from .constants import RESET, NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum @@ -26,7 +26,8 @@ class AirTrapValves(DialinEnum): - VBT = 0 + H13_VALV = 0 # Air trap intake valve + H20_VALV = 1 # Air trap outlet valve @unique class AirTrapState(DialinEnum): @@ -41,8 +42,8 @@ """ # Air trap level sensor IDs - LOWER_LEVEL_SENSOR = 0 - UPPER_LEVEL_SENSOR = 1 + H17_LOWER_LEVEL_SENSOR = 0 + H16_UPPER_LEVEL_SENSOR = 1 # Air trap level sensor levels AIR_DETECTED_AT_LEVEL = 0 @@ -63,13 +64,19 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_air_trap_sync) - self.lower_level = self.AIR_DETECTED_AT_LEVEL - self.upper_level = self.AIR_DETECTED_AT_LEVEL - self.lower_level_raw = self.AIR_DETECTED_AT_LEVEL - self.upper_level_raw = self.AIR_DETECTED_AT_LEVEL + self.h17_lower_level = self.AIR_DETECTED_AT_LEVEL + self.h16_upper_level = self.AIR_DETECTED_AT_LEVEL + self.h17_lower_level_raw = self.AIR_DETECTED_AT_LEVEL + self.h16_upper_level_raw = self.AIR_DETECTED_AT_LEVEL + self.h13_valve_state = 0 + self.h20_valve_state = 0 + self.air_control = 0 self.td_air_trap_timestamp = 0.0 - @publish(["td_air_trap_timestamp", "lower_level", "upper_level", "lower_level_raw", "upper_level_raw"]) + @publish(["td_air_trap_timestamp", "h17_lower_level", "h16_upper_level", + "h17_lower_level_raw", "h16_upper_level_raw", + "h13_valve_state","h20_valve_state", + "air_control"]) def _handler_air_trap_sync(self, message, timestamp=0.0): """ Handles published air trap data messages. Air trap data are captured @@ -87,28 +94,33 @@ message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) raw_upper = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) + h13_vlv_st = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) + h20_vlv_st = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])) + controlling = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])) - self.lower_level = lower[0] - self.upper_level = upper[0] - self.lower_level_raw = raw_lower[0] - self.upper_level_raw = raw_upper[0] + self.h17_lower_level = lower[0] + self.h16_upper_level = upper[0] + self.h17_lower_level_raw = raw_lower[0] + self.h16_upper_level_raw = raw_upper[0] + self.h13_valve_state = h13_vlv_st[0] + self.h20_valve_state = h20_vlv_st[0] + self.air_control = controlling[0] self.td_air_trap_timestamp = timestamp def cmd_air_trap_level_sensor_override(self, sensor: int, detected: int, reset: int = NO_RESET) -> int: """ Constructs and sends the air trap level sensor override command Constraints: Must be logged into TD. - Given sensor must be one of the sensors listed below. @param sensor: unsigned int - sensor ID - @param detected: unsigned int - detected (0=air, 1=fluid) to override sensor with + @param detected: unsigned int - detected to override sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise - Air trap sensor IDs: \n - 0 = Lower level \n - 1 = Upper level \n """ rst = integer_to_bytearray(reset) @@ -138,16 +150,12 @@ Constructs and sends the raw air trap level sensor override command Constraints: Must be logged into TD. - Given sensor must be one of the sensors listed below. @param sensor: unsigned int - sensor ID @param detected: unsigned int - detected (0=air, 1=fluid) to override sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise - Air trap sensor IDs: \n - 0 = Lower level \n - 1 = Upper level \n """ rst = integer_to_bytearray(reset) @@ -214,12 +222,12 @@ self.logger.debug("Timeout!!!!") return False - def cmd_set_hd_air_trap_valve(self, valve: int = AirTrapValves.VBT.value, + def cmd_set_td_air_trap_valve(self, valve: int = AirTrapValves.H13_VALV.value, valve_state: int = AirTrapState.STATE_CLOSED.value) -> int: """ - Constructs and sends an open/close command to the TD air trap valve + Constructs and sends an open/close command to the TD air trap valves. - @param valve: air trap valve ID ( VBT = 0 ) + @param valve: air trap valve ID @param valve_state: air trap valve state (open or close) @returns 1 if successful, zero otherwise """ @@ -236,9 +244,8 @@ # If there is content... if received_message is not None: - self.logger.debug("Opening air trap valve") # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: - self.logger.debug("Opening air trap valve timeout!!") + self.logger.debug("timeout!!") return False