示例#1
0
 /**
  * Checks whether an edge-triggered alarm can be fired (does not care about the suppress interval
  * - use the <code>isSuppressed</code> method).
  *
  * @param value The current value of the corresponding managed object field
  * @param alarmControl The alarm control
  * @return <code>true</code> if it can be fired, <code>false</code> otherwise
  */
 private boolean isEdgeTriggeredAlarmReadyForFire(
     long value, EdgeTriggeredAlarmControl alarmControl) {
   if (alarmControl.getEnabled()) {
     boolean fallingEdge = alarmControl.getDirection() == EdgeTriggeredAlarmDirection.FALLING;
     if (alarmControl.getStatus() == EdgeTriggeredAlarmStatus.FIRED) {
       if (fallingEdge) {
         if (value > alarmControl.getRearmThreshold())
           alarmControl.setStatus(EdgeTriggeredAlarmStatus.ARMED);
       } else {
         if (value < alarmControl.getRearmThreshold())
           alarmControl.setStatus(EdgeTriggeredAlarmStatus.ARMED);
       }
     }
     if (alarmControl.getStatus() == EdgeTriggeredAlarmStatus.ARMED) {
       if (fallingEdge) {
         if (value < alarmControl.getAlarmThreshold()) {
           return true;
         }
       } else {
         if (value > alarmControl.getAlarmThreshold()) {
           return true;
         }
       }
     }
   }
   return false;
 }
示例#2
0
 /**
  * Fires an alarm.
  *
  * @param alarm The alarm
  * @param alarmControl The alarm control
  */
 private void fireAlarm_(Alarm alarm, AlarmControl alarmControl) {
   alarmProcessor.process(alarm);
   lastFiredTimes.remove(alarmControl);
   lastFiredTimes.put(alarmControl, System.currentTimeMillis());
   if (alarmControl instanceof EdgeTriggeredAlarmControl) {
     ((EdgeTriggeredAlarmControl) alarmControl).setStatus(EdgeTriggeredAlarmStatus.FIRED);
   }
   log.debug(alarm.getName() + " fired");
 }