Index: leahi_dialin/dd/modules/pressure_sensors.py =================================================================== diff -u -r7b8f39b44fe6c414864c9b88f4d5f5502af51ea6 -rbeb046149da1b7cf85dbdadb500467490f350fb8 --- leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 7b8f39b44fe6c414864c9b88f4d5f5502af51ea6) +++ leahi_dialin/dd/modules/pressure_sensors.py (.../pressure_sensors.py) (revision beb046149da1b7cf85dbdadb500467490f350fb8) @@ -19,25 +19,13 @@ from .constants import NO_RESET, RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions +from leahi_dialin.common.dd_defs import PressureNames, PressureAttributesEnum 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, float_to_bytearray -@unique -class PressureNames(DialinEnum): - # Pressure Sensor IDs - M1_PRES = 0 # Water Inlet pressure before regulator (PRi) - M3_PRES = 1 # Water Inlet pressure after regulator (PRo) - D9_PRES = 2 # Hydraulics outlet pressure (PHo/Pn) - D66_PRES = 3 # Dry Bicarb pressure (PDB/PCb) - D51_PRES = 4 # Spent Dialysate pressure (PDs) - D18_PRES = 5 # Fresh Dialysate pressure (PDf) - D41_PRES = 6 # Transmembrane pressure (Ptm) - BARO_PRES = 7 # Barometric pressure sensor - NUM_OF_PRESSURE_SENSORS = 8 - class DDPressureSensors(AbstractSubSystem): """ DD interface containing pressure related commands. @@ -60,40 +48,39 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_pressures_sync) - self.m1_pres = 0.0 - self.m3_pres = 0.0 - self.d9_pres = 0.0 - self.d66_pres = 0.0 - self.d51_pres = 0.0 - self.d18_pres = 0.0 - self.d41_pres = 0.0 - self.m1_pres_temp = 0.0 - self.m3_pres_temp = 0.0 - self.d9_pres_temp = 0.0 - self.d66_pres_temp = 0.0 - self.d51_pres_temp = 0.0 - self.d18_pres_temp = 0.0 - self.d41_pres_temp = 0.0 - self.dd_pressures_timestamp = 0 + self.dd_pressures = { + PressureNames.M1_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.M3_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.D9_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.D66_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.D51_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.D18_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + }, + PressureNames.D41_PRES.name: { + PressureAttributesEnum.PRES.name: 0.0, + PressureAttributesEnum.TEMP.name: 0.0 + } + } - @publish([ - "dd_pressures_timestamp", - "m1_pres", - "m3_pres", - "d9_pres", - "d66_pres", - "d51_pres", - "d18_pres", - "d41_pres", - "m1_pres_temp", - "m3_pres_temp", - "d9_pres_temp", - "d66_pres_temp", - "d51_pres_temp", - "d18_pres_temp", - "d41_pres_temp", - ]) + @publish(["dd_pressures_timestamp", "dd_pressures"]) def _handler_pressures_sync(self, message,timestamp=0.0): """ Handles published DD pressure data messages. DD Pressure data are captured @@ -102,33 +89,33 @@ @param message: published DD pressure data message @return: none """ - self.m1_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.M1_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.m3_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.M3_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.d9_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D9_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.d66_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D66_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.d51_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D51_PRES.name][PressureAttributesEnum.PRES.name]= struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.d18_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D18_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.d41_pres = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D41_PRES.name][PressureAttributesEnum.PRES.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.m1_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.M1_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.m3_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.M3_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - self.d9_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D9_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - self.d66_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D66_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - self.d51_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D51_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - self.d18_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D18_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.d41_pres_temp = struct.unpack('f', bytearray( + self.dd_pressures[PressureNames.D41_PRES.name][PressureAttributesEnum.TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] self.dd_pressures_timestamp = timestamp