Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -rdf2b51a17a2ccdaf3587f631de7623fa7fcae624 -re7d16bd6881619e5fc2a0bc1a7fd578a9978498e --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision df2b51a17a2ccdaf3587f631de7623fa7fcae624) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision e7d16bd6881619e5fc2a0bc1a7fd578a9978498e) @@ -19,32 +19,20 @@ from .constants import RESET, NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions +from leahi_dialin.common.td_defs import AirTrapValves, AirTrapLevelSensors, AirTrapLevelSensorsAttributes, AirTrapState from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum from leahi_dialin.utils.checks import check_broadcast_interval_override_ms from leahi_dialin.utils.conversions import integer_to_bytearray -class AirTrapValves(DialinEnum): - H13_VALV = 0 # Air trap intake valve - H20_VALV = 1 # Air trap outlet valve - -@unique -class AirTrapState(DialinEnum): - STATE_CLOSED = 0 - STATE_OPEN = 1 - class TDAirTrap(AbstractSubSystem): """ TDAirTrap Treatment Delivery (TD) Dialin API sub-class for air trap related commands. """ - # Air trap level sensor IDs - H17_LOWER_LEVEL_SENSOR = 0 - H16_UPPER_LEVEL_SENSOR = 1 - # Air trap level sensor levels AIR_DETECTED_AT_LEVEL = 0 FLUID_DETECTED_AT_LEVEL = 1 @@ -64,18 +52,26 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_air_trap_sync) - 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_trap_level_sensors = { + AirTrapLevelSensors.H17_LEVEL.name: { + AirTrapLevelSensorsAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, + AirTrapLevelSensorsAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL + }, + AirTrapLevelSensors.H16_LEVEL.name: { + AirTrapLevelSensorsAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, + AirTrapLevelSensorsAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL + } + } + self.air_trap_valve_states = { + AirTrapValves.H13_VALV.name: 0, + AirTrapValves.H20_VALV.name: 0 + } self.air_control = 0 self.td_air_trap_timestamp = 0.0 - @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", + @publish(["td_air_trap_timestamp", + "air_trap_level_sensors", + "air_trap_valve_states", "air_control"]) def _handler_air_trap_sync(self, message, timestamp=0.0): """ @@ -101,12 +97,12 @@ controlling = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])) - 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_trap_level_sensors[AirTrapLevelSensors.H17_LEVEL.name][AirTrapLevelSensorsAttributes.LEVEL.name] = lower[0] + self.air_trap_level_sensors[AirTrapLevelSensors.H16_LEVEL.name][AirTrapLevelSensorsAttributes.LEVEL.name] = upper[0] + self.air_trap_level_sensors[AirTrapLevelSensors.H17_LEVEL.name][AirTrapLevelSensorsAttributes.RAW.name] = raw_lower[0] + self.air_trap_level_sensors[AirTrapLevelSensors.H16_LEVEL.name][AirTrapLevelSensorsAttributes.RAW.name] = raw_upper[0] + self.air_trap_valve_states[AirTrapValves.H13_VALV.name] = h13_vlv_st[0] + self.air_trap_valve_states[AirTrapValves.H20_VALV.name] = h20_vlv_st[0] self.air_control = controlling[0] self.td_air_trap_timestamp = timestamp