示例#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
  /** The main loop of the polling thread. */
  @Override
  public void run() {
    while (true) {

      // free memory alarm
      EdgeTriggeredAlarmControl freeMemAlarmControl = readerDevice.getFreeMemoryAlarmControl();
      if (isEdgeTriggeredAlarmReadyForFire(readerDevice.getFreeMemory(), freeMemAlarmControl)) {
        if (freeMemoryAlarm == null)
          freeMemoryAlarm =
              new FreeMemoryAlarm("FreeMemoryAlarm", freeMemAlarmControl.getLevel(), readerDevice);
        if (!alarmIsSuppressed(freeMemAlarmControl)) {
          fireAlarm_(freeMemoryAlarm, freeMemAlarmControl);
          freeMemoryAlarm = null;
        } else {
          freeMemoryAlarm.suppress();
          log.debug(freeMemoryAlarm.getName() + " suppressed");
        }
      }

      // other alarms...

      // operational status alarms
      readerDevice.getOperStatus();
      ReadPoint[] readPoints = readerDevice.getAllReadPoints();
      for (int i = 0; i < readPoints.length; i++) {
        readPoints[i].getOperStatus();
      }
      IOPort[] ioPorts = readerDevice.getAllIOPorts();
      for (int i = 0; i < ioPorts.length; i++) {
        ioPorts[i].getOperStatus();
      }
      NotificationChannel[] notifChans = readerDevice.getAllNotificationChannels();
      for (int i = 0; i < notifChans.length; i++) {
        notifChans[i].getOperStatus();
      }
      Source[] sources = readerDevice.getAllSources();
      for (int i = 0; i < sources.length; i++) {
        sources[i].getOperStatus();
      }

      try {
        Thread.sleep(AlarmManager.POLL_INTERVAL);
      } catch (InterruptedException ignore) {
      }
    }
  }
示例#3
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");
 }
示例#4
0
 /**
  * Fires an alarm iff all relevant conditions are fulfilled.
  *
  * @param alarm The alarm
  * @param alarmControl The alarm control
  */
 public void fireAlarm(Alarm alarm, AlarmControl alarmControl) {
   if (alarmControl.getEnabled()) {
     try {
       if (alarm instanceof TTOperStatusAlarm) {
         TTOperStatusAlarm operStatusAlarm = (TTOperStatusAlarm) alarm;
         TTOperationalStatusAlarmControl operStatusAlarmControl =
             (TTOperationalStatusAlarmControl) alarmControl;
         if ((operStatusAlarmControl.getTriggerFromState() == OperationalStatus.ANY)
             || (operStatusAlarmControl.getTriggerToState() == OperationalStatus.ANY)
             || (operStatusAlarm.getFromState() == operStatusAlarmControl.getTriggerFromState())
             || (operStatusAlarm.getToState() == operStatusAlarmControl.getTriggerToState())) {
           if (!alarmIsSuppressed(operStatusAlarmControl)) {
             fireAlarm_(operStatusAlarm, operStatusAlarmControl);
           } else {
             operStatusAlarm.suppress();
             log.debug(operStatusAlarm.getName() + " suppressed");
           }
         }
       } else if (alarmControl instanceof EdgeTriggeredAlarmControl) {
         EdgeTriggeredAlarmControl edgeTriggeredAlarmControl =
             (EdgeTriggeredAlarmControl) alarmControl;
         if (edgeTriggeredAlarmControl.getStatus() == EdgeTriggeredAlarmStatus.ARMED) {
           if (!alarmIsSuppressed(edgeTriggeredAlarmControl)) {
             fireAlarm_(alarm, edgeTriggeredAlarmControl);
           } else {
             alarm.suppress();
             log.debug(alarm.getName() + " suppressed");
           }
         }
       } else {
         if (!alarmIsSuppressed(alarmControl)) {
           fireAlarm_(alarm, alarmControl);
         } else {
           alarm.suppress();
           log.debug(alarm.getName() + " suppressed");
         }
       }
     } catch (ClassCastException cce) {
       log.error("Alarm and AlarmControl don't match.");
     }
   }
 }