Index: HemodialysisDevice.py =================================================================== diff -u -r7e8f523c6ecb0a8fe78714e66507af7bc1e286cb -r08bdd97f4bf72851052fd1e44178335bea9401e4 --- HemodialysisDevice.py (.../HemodialysisDevice.py) (revision 7e8f523c6ecb0a8fe78714e66507af7bc1e286cb) +++ HemodialysisDevice.py (.../HemodialysisDevice.py) (revision 08bdd97f4bf72851052fd1e44178335bea9401e4) @@ -351,6 +351,8 @@ # Alarms message IDs MSG_ID_HD_ALARMS_PUBLISHED_STATUS = 0x0002 + MSG_ID_HD_ALARM_ACTIVATE = 0x0003 + MSG_ID_HD_ALARM_CLEAR = 0x0004 MSG_ID_HD_ALARM_LAMP_OVERRIDE = 0x8004 MSG_ID_HD_ALARM_STATE_OVERRIDE = 0x8006 MSG_ID_HD_ALARM_TIME_OVERRIDE = 0x8007 @@ -374,9 +376,11 @@ START_POS_ALARM_ESCALATES_IN = END_POS_ALARM_SILENCE_EXPIRES_IN END_POS_ALARM_ESCALATES_IN = START_POS_ALARM_ESCALATES_IN + 4 START_POS_ALARMS_FLAGS = END_POS_ALARM_ESCALATES_IN - END_POS_ALARMS_FLAGS = START_POS_ALARMS_FLAGS + 2 + START_POS_ALARM_ID = DenaliMessage.PAYLOAD_START_INDEX + END_POS_ALARM_ID = START_POS_ALARM_ID + 2 + def __init__(self, outer_instance, can_interface=None): """ HD_Alarms constructor @@ -393,12 +397,27 @@ can_interface.registerReceivingPublicationFunction(channel_id, msg_id, self.handlerAlarmsStatusSyncFunction) + channel_id = DenaliChannels.hd_alarm_broadcast_ch_id + msg_id = self.MSG_ID_HD_ALARM_ACTIVATE + can_interface.registerReceivingPublicationFunction(channel_id, msg_id, + self.handlerAlarmActivateFunction) + channel_id = DenaliChannels.hd_alarm_broadcast_ch_id + msg_id = self.MSG_ID_HD_ALARM_CLEAR + can_interface.registerReceivingPublicationFunction(channel_id, msg_id, + self.handlerAlarmClearFunction) + + # composite alarm status based on latest HD alarm status broadcast message self.alarmsState = 0 self.alarmTop = 0 self.alarmsSilenceExpiresIn = 0 self.alarmsEscalatesIn = 0 self.alarmsFlags = 0 + # alarm states based on received HD alarm activation and alarm clear messages + self.alarmStates = [False] * 50 +# for x in range(0,511): +# self.alarmStates.append(False) + def handlerAlarmsStatusSyncFunction(self, message): """ Handles published alarms status messages. Alarms status data are captured @@ -424,6 +443,28 @@ message['message'][self.START_POS_ALARMS_FLAGS:self.END_POS_ALARMS_FLAGS]), byteorder=DenaliMessage.BYTE_ORDER) + def handlerAlarmActivateFunction(self, message): + """ + Handles published HD alarm activation messages. + + \param message: published HD alarm activation message + \returns none + """ + + alarmID = struct.unpack('