From 0b624384cd52be20e61284551d832b499d7b7707 Mon Sep 17 00:00:00 2001 From: Jonathan McCrohan Date: Sat, 14 Apr 2012 12:56:48 +0100 Subject: Imported Upstream version 2.1.8.20120216 --- Java/com/phidgets/RFIDPhidget.java | 197 +++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 Java/com/phidgets/RFIDPhidget.java (limited to 'Java/com/phidgets/RFIDPhidget.java') diff --git a/Java/com/phidgets/RFIDPhidget.java b/Java/com/phidgets/RFIDPhidget.java new file mode 100644 index 0000000..b102b67 --- /dev/null +++ b/Java/com/phidgets/RFIDPhidget.java @@ -0,0 +1,197 @@ + +/* + * Copyright 2006 Phidgets Inc. All rights reserved. + */ + +package com.phidgets; +import java.util.Iterator; +import java.util.LinkedList; +import com.phidgets.event.*; +/** + * This class represents a Phidget RFID Reader. All methods + * to read tags and set outputs on the RFID reader are implemented in this class. + *

+ * The Phidget RFID reader can read one tag at a time. Both tag and tagloss event handlers are provided, + * as well as control over the antenna so that multiple readers can exists in close proximity without interference. + * + * @author Phidgets Inc. + */ +public final class RFIDPhidget extends Phidget +{ + public RFIDPhidget () throws PhidgetException + { + super (create ()); + } + private static native long create () throws PhidgetException; + /** + * Returns the number of outputs. These are the outputs provided by the terminal block. + * Older RFID readers do not have these outputs, and this method will return 0. + * @return number of outputs + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native int getOutputCount () throws PhidgetException; + /** + * Returns the state of an output. True indicated activated, False deactivated, which is the default. + * @param index index of the output + * @return state of the output + * @throws PhidgetException If this Phidget is not opened and attached, or the index is out of range. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native boolean getOutputState (int index) throws PhidgetException; + /** + * Sets the state of a digital output. True indicated activated, False deactivated, which is the default. + * @param index index of the output + * @param state desired state + * @throws PhidgetException If this Phidget is not opened and attached, or the index is out of range. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native void setOutputState (int index, boolean state) throws PhidgetException; + /** + * Returns the state of the antenna. True indicated that the antenna is active, False indicated inactive. + * @return state of the antenna + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native boolean getAntennaOn () throws PhidgetException; + /** + * Sets the state of the antenna. True turns the antenna on, False turns it off. The antenna if by default + * turned off, and needs to be explicitely activated before tags can be read. Control over the antenna + * allows multiple readers to be used in close proximity, as multiple readers will interfere with each other if + * their antenna's are activated simultaneously. + * @param state new state for the antenna + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native void setAntennaOn (boolean state) throws PhidgetException; + /** + * Returns the state of the onboard LED. This LED is by default turned off. + * @return state of the LED + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native boolean getLEDOn () throws PhidgetException; + /** + * Sets the state of the onboard LED. True turns the LED on, False turns it off. The LED is by default turned off. + * @param state new state for the LED + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native void setLEDOn (boolean state) throws PhidgetException; + /** + * Returns the last tag read. This method will only return a valid tag after a tag has been seen. + * This method can be used even after a tag has been removed from the reader + * @return tag + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native String getLastTag () throws PhidgetException; + /** + * Returns the state of whether or not a tag is being read by the reader. + * True indicated that a tag is on (or near) the reader, false indicates that one is not. + * @return tag read state + * @throws PhidgetException If this Phidget is not opened and attached. + * See {@link com.phidgets.Phidget#open(int) open} for information on determining if a device is attached. + */ + public native boolean getTagStatus () throws PhidgetException; + + private final void enableDeviceSpecificEvents (boolean b) + { + enableTagGainEvents (b && tagGainListeners.size () > 0); + enableTagLossEvents (b && tagLossListeners.size () > 0); + enableOutputChangeEvents (b && outputChangeListeners.size () > 0); + } + /** + * Adds a tag gained listener. The tag gaiend handler is a method that will be called when a new tag is + seen by the reader. The event is only fired one time for a new tag, so the tag has to be removed and then replaced before + another tag gained event will fire. + *

+ * There is no limit on the number of tag gained change handlers that can be registered for a particular Phidget. + * + * @param l An implemetation of the {@link com.phidgets.event.TagGainListener TagGainListener} interface + */ + public final void addTagGainListener (TagGainListener l) + { + synchronized (tagGainListeners) + { + tagGainListeners.add (l); + enableTagGainEvents (true); + }} private LinkedList tagGainListeners = new LinkedList (); + private long nativeTagGainHandler = 0; + public final void removeTagGainListener (TagGainListener l) + { + synchronized (tagGainListeners) + { + tagGainListeners.remove (l); + enableTagGainEvents (tagGainListeners.size () > 0); + }} private void fireTagGain (TagGainEvent e) + { + synchronized (tagGainListeners) + { + for (Iterator it = tagGainListeners.iterator (); it.hasNext ();) + ((TagGainListener) it.next ()).tagGained (e); + } + } + private native void enableTagGainEvents (boolean b); + /** + * Adds a tag lost listener. The tag lost handler is a method that will be called when a tag is + removed from the reader. + *

+ * There is no limit on the number of tag lost change handlers that can be registered for a particular Phidget. + * + * @param l An implemetation of the {@link com.phidgets.event.TagLossListener TagLossListener} interface + */ + public final void addTagLossListener (TagLossListener l) + { + synchronized (tagLossListeners) + { + tagLossListeners.add (l); + enableTagLossEvents (true); + }} private LinkedList tagLossListeners = new LinkedList (); + private long nativeTagLossHandler = 0; + public final void removeTagLossListener (TagLossListener l) + { + synchronized (tagLossListeners) + { + tagLossListeners.remove (l); + enableTagLossEvents (tagLossListeners.size () > 0); + }} private void fireTagLoss (TagLossEvent e) + { + synchronized (tagLossListeners) + { + for (Iterator it = tagLossListeners.iterator (); it.hasNext ();) + ((TagLossListener) it.next ()).tagLost (e); + } + } + private native void enableTagLossEvents (boolean b); + /** + * Adds an output change listener. The output change handler is a method that will be called when an output has changed. + *

+ * There is no limit on the number of output change handlers that can be registered for a particular Phidget. + * + * @param l An implemetation of the {@link com.phidgets.event.OutputChangeListener OutputChangeListener} interface + */ + public final void addOutputChangeListener (OutputChangeListener l) + { + synchronized (outputChangeListeners) + { + outputChangeListeners.add (l); + enableOutputChangeEvents (true); + }} private LinkedList outputChangeListeners = new LinkedList (); + private long nativeOutputChangeHandler = 0; + public final void removeOutputChangeListener (OutputChangeListener l) + { + synchronized (outputChangeListeners) + { + outputChangeListeners.remove (l); + enableOutputChangeEvents (outputChangeListeners.size () > 0); + }} private void fireOutputChange (OutputChangeEvent e) + { + synchronized (outputChangeListeners) + { + for (Iterator it = outputChangeListeners.iterator (); it.hasNext ();) + ((OutputChangeListener) it.next ()).outputChanged (e); + } + } + private native void enableOutputChangeEvents (boolean b); +} -- cgit v1.2.3