Index: dialin/hd/alarms.py =================================================================== diff -u -rf482a4e4eff29303b5dfcabdc60dbd79feb08ed8 -r6baf36b2300c50bbdc2bfdd184ac37904abb1da3 --- dialin/hd/alarms.py (.../alarms.py) (revision f482a4e4eff29303b5dfcabdc60dbd79feb08ed8) +++ dialin/hd/alarms.py (.../alarms.py) (revision 6baf36b2300c50bbdc2bfdd184ac37904abb1da3) @@ -38,7 +38,7 @@ HD_ALARM_LAMP_PATTERN_LOW = 5 HD_ALARM_LAMP_PATTERN_MANUAL = 6 - # Alarm states + # Alarm priority states HD_ALARM_STATE_NONE = 0 HD_ALARM_STATE_LOW = 1 HD_ALARM_STATE_MEDIUM = 2 @@ -89,7 +89,7 @@ self._handler_alarm_information_sync) # composite alarm status based on latest HD alarm status broadcast message - self.alarms_state = 0 + self.alarms_priority_state = 0 self.alarm_top = 0 self.alarms_silence_expires_in = 0 self.alarms_escalates_in = 0 @@ -99,6 +99,12 @@ self.alarm_states = [False] * 500 # alarm condition states based on received HD alarm activation and clear condition messages self.alarm_conditions = [False] * 500 + # alarm priorities based on received HD alarm activation messages + self.alarm_priorities = [0] * 500 + # alarm ranks based on received HD alarm activation messages + self.alarm_ranks = [0] * 500 + # alarm clear top only properties based on received HD alarm activation messages + self.alarm_clr_top_only = [False] * 500 # alarm information self.alarm_volume = 0 @@ -109,19 +115,19 @@ def get_current_alarm_priority(self): """ - Gets the current alarms state. + Gets the current alarms priority state. None, Low, Medium, or High @return: (str) the current alarms state in text form. """ result = "" - if self.alarms_state == self.HD_ALARM_STATE_NONE: + if self.alarms_priority_state == self.HD_ALARM_STATE_NONE: result = "None" - elif self.alarms_state == self.HD_ALARM_STATE_LOW: + elif self.alarms_priority_state == self.HD_ALARM_STATE_LOW: result = "Low" - elif self.alarms_state == self.HD_ALARM_STATE_MEDIUM: + elif self.alarms_priority_state == self.HD_ALARM_STATE_MEDIUM: result = "Medium" - elif self.alarms_state == self.HD_ALARM_STATE_HIGH: + elif self.alarms_priority_state == self.HD_ALARM_STATE_HIGH: result = "High" return result @@ -150,6 +156,30 @@ """ return self.alarm_states[alarm_id] + def get_alarm_priority(self, alarm_id): + """ + Gets alarm priority for given alarm + + @return: Alarm priority + """ + return self.alarm_priorities[alarm_id] + + def get_alarm_rank(self, alarm_id): + """ + Gets alarm rank for given alarm + + @return: Alarm rank + """ + return self.alarm_ranks[alarm_id] + + def get_alarm_clear_top_only(self, alarm_id): + """ + Gets clear top only property for given alarm + + @return: Clear top only property (T/F) + """ + return self.alarm_clr_top_only[alarm_id] + def get_alarms_top(self): """ Gets the top alarm @@ -193,7 +223,7 @@ Alarm Lamp On = result & 1024 TBD = result & 2048 TBD = result & 4096 - TBD = result & 8192 + No Dialysate Recirc= result & 8192 No Minimize = result & 16384 Condition Detected = result & 32768 @@ -309,15 +339,15 @@ """ Gets the alarm flag to escalate. - @return: (bool) Alarm flag Ok button only (T/F) + @return: (bool) Alarm flag indicating an active alarm is due to escalate (T/F) """ return (self.alarms_flags & 256) > 0 def get_alarm_flag_is_alarm_silenced(self) -> bool: """ Gets the alarm flag alarm silence - @return: (bool) Alarm flag Ok button only (T/F) + @return: (bool) Alarm flag indicating alarms are currently silenced (T/F) """ return (self.alarms_flags & 512) > 0 @@ -329,6 +359,14 @@ """ return (self.alarms_flags & 1024) > 0 + def get_alarm_flag_no_dialysate_recirculation(self) -> bool: + """ + Gets the alarm flag no dialysate recirculation. + + @return: (bool) Alarm flag indicating dialysate recirculation is disabled (T/F) + """ + return (self.alarms_flags & 8192) > 0 + def get_alarm_flag_no_minimize(self) -> bool: """ Gets the alarm flag no minimize. @@ -391,9 +429,15 @@ """ self.logger.debug("Alarm activated!") - alarm_id = struct.unpack('