snmpalarmprocessor.java
来自「关于 RFID 读写器的相关内容」· Java 代码 · 共 589 行 · 第 1/2 页
JAVA
589 行
/*
* Copyright (C) 2007 ETH Zurich
*
* This file is part of Fosstrak (www.fosstrak.org).
*
* Fosstrak is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* Fosstrak is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Fosstrak; if not, write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package org.fosstrak.reader.rprm.core.mgmt.agent.snmp;
import org.fosstrak.reader.rprm.core.mgmt.agent.snmp.mib.EpcglobalReaderMib;
import org.fosstrak.reader.rprm.core.mgmt.agent.snmp.table.SnmpTable;
import org.fosstrak.reader.rprm.core.mgmt.agent.snmp.table.SnmpTable.TableTypeEnum;
import org.fosstrak.reader.rprm.core.mgmt.alarm.Alarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.AlarmProcessor;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FailedEraseAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FailedKillAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FailedLockAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FailedMemReadAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FailedWriteAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.FreeMemoryAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.IOPortOperStatusAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.NotificationChannelOperStatusAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.ReadPointOperStatusAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.ReaderDeviceOperStatusAlarm;
import org.fosstrak.reader.rprm.core.mgmt.alarm.SourceOperStatusAlarm;
import org.fosstrak.reader.rprm.core.mgmt.util.SnmpUtil;
import org.snmp4j.agent.NotificationOriginator;
import org.snmp4j.agent.mo.MOScalar;
import org.snmp4j.smi.Gauge32;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
/**
* This class can be used to process <code>Alarm</code> objects using SNMP.
*/
public class SnmpAlarmProcessor implements AlarmProcessor {
/**
* The SNMP agent.
*/
private SnmpAgent snmpAgent;
/**
* The <code>EpcglobalReaderMib</code>.
*/
private EpcglobalReaderMib epcglobalReaderMib;
/**
* Constructor.
*
* @param snmpAgent
* The SNMP agent
*/
public SnmpAlarmProcessor(SnmpAgent snmpAgent) {
this.snmpAgent = snmpAgent;
epcglobalReaderMib = EpcglobalReaderMib.getInstance();
}
/**
* Processes an <code>Alarm</code> object.
*
* @param alarm
* The <code>Alarm</code> object
*/
public void process(Alarm alarm) {
NotificationOriginator notifOrig = snmpAgent.getNotificationOriginator();
if (notifOrig != null) {
if (alarm instanceof ReaderDeviceOperStatusAlarm) {
ReaderDeviceOperStatusAlarm readerDeviceOperStatusAlarm = (ReaderDeviceOperStatusAlarm) alarm;
MOScalar operStatePrior = SnmpUtil
.findMOScalar(EpcglobalReaderMib.oidTrapVarEpcgRdrDevOperStatusPrior);
operStatePrior.setValue(new Integer32(
readerDeviceOperStatusAlarm.getFromState().toInt()));
epcglobalReaderMib
.epcgReaderDeviceOperationState(
notifOrig,
new OctetString(),
new VariableBinding[] {
new VariableBinding(
EpcglobalReaderMib.oidTrapVarSysName,
new OctetString(
readerDeviceOperStatusAlarm
.getReaderDeviceName())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevTimeUtc,
SnmpUtil
.dateToOctetString(readerDeviceOperStatusAlarm
.getTimeUTC())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevOperNotifStateLevel,
new Integer32(
readerDeviceOperStatusAlarm
.getAlarmLevel()
.toInt())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevOperStatusPrior,
operStatePrior.getValue()),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevOperStatus,
new Integer32(
readerDeviceOperStatusAlarm
.getToState()
.toInt())) });
} else if (alarm instanceof FreeMemoryAlarm) {
FreeMemoryAlarm freeMemoryAlarm = (FreeMemoryAlarm) alarm;
epcglobalReaderMib
.epcgRdrDevMemoryState(
notifOrig,
new OctetString(),
new VariableBinding[] {
new VariableBinding(
EpcglobalReaderMib.oidTrapVarSysName,
new OctetString(freeMemoryAlarm
.getReaderDeviceName())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevTimeUtc,
SnmpUtil
.dateToOctetString(freeMemoryAlarm
.getTimeUTC())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevFreeMemoryNotifLevel,
new Integer32(freeMemoryAlarm
.getAlarmLevel()
.toInt())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevFreeMemory,
new Gauge32(freeMemoryAlarm
.getFreeMemory())) });
} else if (alarm instanceof ReadPointOperStatusAlarm) {
ReadPointOperStatusAlarm readPointOperStatusAlarm = (ReadPointOperStatusAlarm) alarm;
OID index = ((SnmpTable) SnmpUtil
.getSnmpTable(TableTypeEnum.EPCG_READ_POINT_TABLE))
.getTableRowIndexByValue(new OctetString(
readPointOperStatusAlarm.getReadPointName()),
EpcglobalReaderMib.idxEpcgReadPointName);
Integer32 operStatePrior = new Integer32(readPointOperStatusAlarm.getFromState().toInt());
epcglobalReaderMib
.epcgReadPointOperationState(
notifOrig,
new OctetString(),
new VariableBinding[] {
new VariableBinding(
EpcglobalReaderMib.oidTrapVarSysName,
new OctetString(
readPointOperStatusAlarm
.getReaderDeviceName())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevTimeUtc,
SnmpUtil
.dateToOctetString(readPointOperStatusAlarm
.getTimeUTC())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgReadPointOperNotifyStateLevel
+ "." + index),
new Integer32(
readPointOperStatusAlarm
.getAlarmLevel()
.toInt())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgReadPointName
+ "." + index),
new OctetString(
readPointOperStatusAlarm
.getReadPointName())),
new VariableBinding(
new OID(EpcglobalReaderMib.oidTrapVarEpcgReadPointPriorOperStatus + "." + index),
operStatePrior),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgReadPointOperStatus
+ "." + index),
new Integer32(
readPointOperStatusAlarm
.getToState()
.toInt())) });
} else if (alarm instanceof FailedMemReadAlarm) {
FailedMemReadAlarm failedMemReadAlarm = (FailedMemReadAlarm) alarm;
OID index = ((SnmpTable) SnmpUtil
.getSnmpTable(TableTypeEnum.EPCG_READ_POINT_TABLE))
.getTableRowIndexByValue(new OctetString(
failedMemReadAlarm.getReadPointName()),
EpcglobalReaderMib.idxEpcgReadPointName);
epcglobalReaderMib
.epcgReaderAntennaReadFailure(
notifOrig,
new OctetString(),
new VariableBinding[] {
new VariableBinding(
EpcglobalReaderMib.oidTrapVarSysName,
new OctetString(
failedMemReadAlarm
.getReaderDeviceName())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevTimeUtc,
SnmpUtil
.dateToOctetString(failedMemReadAlarm
.getTimeUTC())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntReadFailureNotifLevel
+ "." + index),
new Integer32(
failedMemReadAlarm
.getAlarmLevel()
.toInt())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgReadPointName
+ "." + index),
new OctetString(
failedMemReadAlarm
.getReadPointName())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntMemoryReadFailures
+ "." + index),
new Gauge32(
failedMemReadAlarm
.getFailedMemReadCount())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntNoiseLevel
+ "." + index),
new Integer32(
failedMemReadAlarm
.getNoiseLevel())) });
} else if (alarm instanceof FailedWriteAlarm) {
FailedWriteAlarm failedWriteAlarm = (FailedWriteAlarm) alarm;
OID index = ((SnmpTable) SnmpUtil
.getSnmpTable(TableTypeEnum.EPCG_READ_POINT_TABLE))
.getTableRowIndexByValue(new OctetString(
failedWriteAlarm.getReadPointName()),
EpcglobalReaderMib.idxEpcgReadPointName);
epcglobalReaderMib
.epcgReaderAntennaWriteFailure(
notifOrig,
new OctetString(),
new VariableBinding[] {
new VariableBinding(
EpcglobalReaderMib.oidTrapVarSysName,
new OctetString(
failedWriteAlarm
.getReaderDeviceName())),
new VariableBinding(
EpcglobalReaderMib.oidTrapVarEpcgRdrDevTimeUtc,
SnmpUtil
.dateToOctetString(failedWriteAlarm
.getTimeUTC())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntWriteFailuresNotifLevel
+ "." + index),
new Integer32(failedWriteAlarm
.getAlarmLevel()
.toInt())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgReadPointName
+ "." + index),
new OctetString(
failedWriteAlarm
.getReadPointName())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntWriteFailures
+ "." + index),
new Gauge32(failedWriteAlarm
.getFailedWriteCount())),
new VariableBinding(
new OID(
EpcglobalReaderMib.oidTrapVarEpcgAntRdPntNoiseLevel
+ "." + index),
new Integer32(failedWriteAlarm
.getNoiseLevel())) });
} else if (alarm instanceof FailedKillAlarm) {
FailedKillAlarm failedKillAlarm = (FailedKillAlarm) alarm;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?