Go to the documentation of this file.00001
00002
00003
00004
00005
00006 package com.phidgets;
00007 import java.util.Iterator;
00008 import java.util.LinkedList;
00009 import com.phidgets.event.*;
00019 public final class IRPhidget extends Phidget
00020 {
00021 public IRPhidget () throws PhidgetException
00022 {
00023 super (create ());
00024 }
00025 private static native long create () throws PhidgetException;
00026
00031 public static final int RAWDATA_LONGSPACE = 0x7fffffff;
00032
00040 public native void transmit (IRCode code, IRCodeInfo codeInfo) throws PhidgetException;
00046 public native void transmitRepeat () throws PhidgetException;
00058 public native void transmitRaw (int[]data, int offset, int count, int gap, int carrierFrequency, int dutyCycle) throws PhidgetException;
00065 public final void transmitRaw (int[]data) throws PhidgetException
00066 {
00067 transmitRaw (data, 0, data.length, 0, 0, 0);
00068 }
00076 public final void transmitRaw (int[]data, int gap) throws PhidgetException
00077 {
00078 transmitRaw (data, 0, data.length, gap, 0, 0);
00079 }
00088 public final void transmitRaw (int[]data, int offset, int count) throws PhidgetException
00089 {
00090 transmitRaw (data, offset, count, 0, 0, 0);
00091 }
00101 public final void transmitRaw (int[]data, int offset, int count, int gap) throws PhidgetException
00102 {
00103 transmitRaw (data, offset, count, gap, 0, 0);
00104 }
00114 public native int readRaw (int[]buffer, int offset, int count) throws PhidgetException;
00122 public final int readRaw (int[]buffer) throws PhidgetException
00123 {
00124 return readRaw (buffer, 0, buffer.length);
00125 }
00132 public native IRCode getLastCode () throws PhidgetException;
00139 public native IRLearnedCode getLastLearnedCode () throws PhidgetException;
00140
00141 private final void enableDeviceSpecificEvents (boolean b)
00142 {
00143 enableCodeEvents (b && codeListeners.size () > 0);
00144 enableLearnEvents (b && learnListeners.size () > 0);
00145 enableRawDataEvents (b && rawDataListeners.size () > 0);
00146 }
00155 public final void addCodeListener (CodeListener l)
00156 {
00157 synchronized (codeListeners)
00158 {
00159 codeListeners.add (l);
00160 enableCodeEvents (true);
00161 }} private LinkedList codeListeners = new LinkedList ();
00162 private long nativeCodeHandler = 0;
00163 public final void removeCodeListener (CodeListener l)
00164 {
00165 synchronized (codeListeners)
00166 {
00167 codeListeners.remove (l);
00168 enableCodeEvents (codeListeners.size () > 0);
00169 }} private void fireCode (CodeEvent e)
00170 {
00171 synchronized (codeListeners)
00172 {
00173 for (Iterator it = codeListeners.iterator (); it.hasNext ();)
00174 ((CodeListener) it.next ()).code (e);
00175 }
00176 }
00177 private native void enableCodeEvents (boolean b);
00186 public final void addLearnListener (LearnListener l)
00187 {
00188 synchronized (learnListeners)
00189 {
00190 learnListeners.add (l);
00191 enableLearnEvents (true);
00192 }} private LinkedList learnListeners = new LinkedList ();
00193 private long nativeLearnHandler = 0;
00194 public final void removeLearnListener (LearnListener l)
00195 {
00196 synchronized (learnListeners)
00197 {
00198 learnListeners.remove (l);
00199 enableLearnEvents (learnListeners.size () > 0);
00200 }} private void fireLearn (LearnEvent e)
00201 {
00202 synchronized (learnListeners)
00203 {
00204 for (Iterator it = learnListeners.iterator (); it.hasNext ();)
00205 ((LearnListener) it.next ()).learn (e);
00206 }
00207 }
00208 private native void enableLearnEvents (boolean b);
00216 public final void addRawDataListener (RawDataListener l)
00217 {
00218 synchronized (rawDataListeners)
00219 {
00220 rawDataListeners.add (l);
00221 enableRawDataEvents (true);
00222 }} private LinkedList rawDataListeners = new LinkedList ();
00223 private long nativeRawDataHandler = 0;
00224 public final void removeRawDataListener (RawDataListener l)
00225 {
00226 synchronized (rawDataListeners)
00227 {
00228 rawDataListeners.remove (l);
00229 enableRawDataEvents (rawDataListeners.size () > 0);
00230 }} private void fireRawData (RawDataEvent e)
00231 {
00232 synchronized (rawDataListeners)
00233 {
00234 for (Iterator it = rawDataListeners.iterator (); it.hasNext ();)
00235 ((RawDataListener) it.next ()).rawData (e);
00236 }
00237 }
00238 private native void enableRawDataEvents (boolean b);
00239 }