00001 00002 /* 00003 * Copyright 2012 Phidgets Inc. All rights reserved. 00004 */ 00005 00006 package com.phidgets; 00007 import java.util.Iterator; 00008 import java.util.LinkedList; 00009 import com.phidgets.event.*; 00020 public final class FrequencyCounterPhidget extends Phidget 00021 { 00022 public FrequencyCounterPhidget () throws PhidgetException 00023 { 00024 super (create ()); 00025 } 00026 private static native long create () throws PhidgetException; 00030 public static final int PHIDGET_FREQUENCYCOUNTER_FILTERTYPE_ZERO_CROSSING = 1; 00034 public static final int PHIDGET_FREQUENCYCOUNTER_FILTERTYPE_LOGIC_LEVEL = 2; 00038 public static final int PHIDGET_FREQUENCYCOUNTER_FILTERTYPE_UNKNOWN = 3; 00043 public native int getFrequencyInputCount () throws PhidgetException; 00052 public native double getFrequency (int index) throws PhidgetException; 00060 public native long getTotalCount (int index) throws PhidgetException; 00068 public native long getTotalTime (int index) throws PhidgetException; 00077 public native int getTimeout (int index) throws PhidgetException; 00086 public native void setTimeout (int index, int timeout) throws PhidgetException; 00095 public native boolean getEnabled (int index) throws PhidgetException; 00104 public native void setEnabled (int index, boolean state) throws PhidgetException; 00116 public native int getFilter (int index) throws PhidgetException; 00128 public native void setFilter (int index, int type) throws PhidgetException; 00135 public native void reset (int index) throws PhidgetException; 00136 00137 private final void enableDeviceSpecificEvents (boolean b) 00138 { 00139 enableFrequencyCounterCountEvents (b && frequencyCounterCountListeners.size () > 0); 00140 } 00151 public final void addFrequencyCounterCountListener (FrequencyCounterCountListener l) 00152 { 00153 synchronized (frequencyCounterCountListeners) 00154 { 00155 frequencyCounterCountListeners.add (l); 00156 enableFrequencyCounterCountEvents (true); 00157 }} private LinkedList frequencyCounterCountListeners = new LinkedList (); 00158 private long nativeFrequencyCounterCountHandler = 0; 00159 public final void removeFrequencyCounterCountListener (FrequencyCounterCountListener l) 00160 { 00161 synchronized (frequencyCounterCountListeners) 00162 { 00163 frequencyCounterCountListeners.remove (l); 00164 enableFrequencyCounterCountEvents (frequencyCounterCountListeners.size () > 0); 00165 }} private void fireFrequencyCounterCount (FrequencyCounterCountEvent e) 00166 { 00167 synchronized (frequencyCounterCountListeners) 00168 { 00169 for (Iterator it = frequencyCounterCountListeners.iterator (); it.hasNext ();) 00170 ((FrequencyCounterCountListener) it.next ()).frequencyCounterCounted (e); 00171 } 00172 } 00173 private native void enableFrequencyCounterCountEvents (boolean b); 00174 }