Initial commit

This commit is contained in:
2012-01-24 13:04:09 -05:00
commit d0434145ab
248 changed files with 32773 additions and 0 deletions

View File

@@ -0,0 +1,527 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_29) on Mon Nov 28 00:50:35 PST 2011 -->
<TITLE>
PulseInput
</TITLE>
<META NAME="date" CONTENT="2011-11-28">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="PulseInput";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PulseInput.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../ioio/lib/api/IOIOFactory.html" title="class in ioio.lib.api"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../ioio/lib/api/PulseInput.ClockRate.html" title="enum in ioio.lib.api"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?ioio/lib/api/PulseInput.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PulseInput.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
ioio.lib.api</FONT>
<BR>
Interface PulseInput</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../ioio/lib/api/Closeable.html" title="interface in ioio.lib.api">Closeable</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>PulseInput</B><DT>extends <A HREF="../../../ioio/lib/api/Closeable.html" title="interface in ioio.lib.api">Closeable</A></DL>
</PRE>
<P>
An interface for pulse width and frequency measurements of digital signals.
<p>
PulseInput (commonly known as "input capture") is a versatile module which
enables extraction of various timing information from a digital signal. There
are two main use cases: pulse duration measurement and frequency measurement.
In pulse width measurement we measure the duration of a positive ("high") or
negative ("low") pulse, i.e. the elapsed time between a rise and a fall or
vice versa. This mode is useful, for example, for decoding a PWM signal or
measuring the delay of a sonar return signal. In frequency measurement we
measure the duration between a rising edge to the following rising edge. This
gives us a momentary reading of a signal's frequency or period. This is
commonly used, for example, in conjunction with an optical or magnetic sensor
for measuring a turning shaft's speed.
<p>
<A HREF="../../../ioio/lib/api/PulseInput.html" title="interface in ioio.lib.api"><CODE>PulseInput</CODE></A> instances are obtained by calling
<CODE>IOIO#openPulseInput(ioio.lib.api.DigitalInput.Spec, ClockRate, PulseMode, boolean)</CODE>
. When created, some important configuration decisions have to be made: the
precision (single or double), the clock rate and the mode of operation. Modes
are straightforward: <A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html#POSITIVE"><CODE>PulseInput.PulseMode.POSITIVE</CODE></A> is used for measuring a
positive pulse, <A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html#NEGATIVE"><CODE>PulseInput.PulseMode.NEGATIVE</CODE></A> a negative pulse, and
<A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html#FREQ"><CODE>PulseInput.PulseMode.FREQ</CODE></A> / <A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html#FREQ_SCALE_4"><CODE>PulseInput.PulseMode.FREQ_SCALE_4</CODE></A> /
<A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html#FREQ_SCALE_16"><CODE>PulseInput.PulseMode.FREQ_SCALE_16</CODE></A> are used for measuring frequency. The
difference between the three scaling modes is that without scaling, the
frequency is determined by measurement of a single
(rising-edge-to-rising-edge) period. In x4 scaling, 4 consecutive periods are
measured and the time is divided by 4, providing some smoothing as well as
better resolution. Similarly for x16 scaling. Note that scaling affects the
range of signals to be measured, as discussed below.
<p>
The choice of single vs. double-precision is important to understand: IOIO
internally uses either 16-bit counters or 32-bit counters for the timing. 16-
counters force us to either limit the maximum duration (and the minimum
frequency) or compromise accuracy as compared to 32-bit counters. However, if
you need many concurrent pulse measurements in your application, you may have
no choice but to use single-precision.
<p>
The clock rate selection is important (and even critical when working in
single-precision) and requires the user to make some assumptions about the
nature of the measured signal. The higher the clock rate, the more precise
the measurement, but the longest pulse that can be measured decreases (or
lowest frequency that can be measured increases). Using the scaling option
when operating in frequency mode also affects these sizes. combinations. It
is always recommended to choose the most precise mode, which exceeds the
maximum expected pulse width (or inverse frequency). If a pulse is received
whom duration exceeds the longest allowed pulse, it will be "folded" into the
valid range and product garbage readings.
<p>
The following table (sorted by longest pulse) summarizes all possible clock /
mode combinations. The table applies for <b>single-precision</b> operation.
For double-precision, simply multiply the longest pulse by 65536 and divide
the lowest frequency by the same amount. Interestingly, the number written in
[ms] units in the longest pulse column, roughly corresponds to the same
number in minutes when working with double precsion, since 1[min] =
60000[ms].
<table border="1">
<tr>
<th>Clock</th>
<th>Scaling</th>
<th>Resolution</th>
<th>Longest pulse</th>
<th>Lowest frequency</th>
</tr>
<tr>
<td>62.5KHz</td>
<td>1</td>
<td>16us</td>
<td>1.048s</td>
<td>0.95Hz</td>
</tr>
<tr>
<td>250KHz</td>
<td>1</td>
<td>4us</td>
<td>262.1ms</td>
<td>3.81Hz</td>
</tr>
<tr>
<td>62.5KHz</td>
<td>4</td>
<td>4us</td>
<td>262.1ms</td>
<td>3.81Hz</td>
</tr>
<tr>
<td>250KHz</td>
<td>4</td>
<td>1us</td>
<td>65.54ms</td>
<td>15.26Hz</td>
</tr>
<tr>
<td>62.5KHz</td>
<td>16</td>
<td>1us</td>
<td>65.54ms</td>
<td>15.26Hz</td>
</tr>
<tr>
<td>2MHz</td>
<td>1</td>
<td>500ns</td>
<td>32.77ms</td>
<td>30.52Hz</td>
</tr>
<tr>
<td>250KHz</td>
<td>16</td>
<td>250us</td>
<td>16.38ms</td>
<td>61.0Hz</td>
</tr>
<tr>
<td>2MHz</td>
<td>4</td>
<td>125ns</td>
<td>8.192ms</td>
<td>122.1Hz</td>
</tr>
<tr>
<td>16MHz</td>
<td>1</td>
<td>62.5ns</td>
<td>4.096ms</td>
<td>244.1Hz</td>
</tr>
<tr>
<td>2MHz</td>
<td>16</td>
<td>31.25ns</td>
<td>2.048ms</td>
<td>488.3Hz</td>
</tr>
<tr>
<td>16MHz</td>
<td>4</td>
<td>15.6ns</td>
<td>1.024ms</td>
<td>976.6Hz</td>
</tr>
<tr>
<td>16MHz</td>
<td>16</td>
<td>3.9ns</td>
<td>256us</td>
<td>3.906KHz</td>
</tr>
</table>
<p>
In some applications it is desirable to measure every incoming pulse rather
than repetitively query the result of the last measurement. For that purpose
the <A HREF="../../../ioio/lib/api/PulseInput.html#waitPulseGetDuration()"><CODE>waitPulseGetDuration()</CODE></A> method exists: every incoming pulse width
is pushed into a small internal queue from which it can be read. The client
waits for data to be available, then reads it and data that comes in in the
meanwhile is stored. The queue has limited size, so it is important to read
quickly if no pulses are to be lost. Note that once a pulse is detected, the
next one must have its leading edge at least 5ms after the leading edge of
the current one, or else it will be skipped. This throttling has been
introduced on purpose, in order to prevent saturation the communication
channel when the input signal is very high frequency. Effectively, this means
that the maximum sample rate is 200Hz. This rate has been chosen as it
enables measure R/C servo signals without missing pulses.
<p>
Typical usage (servo signal pulse width measurement):
<pre>
<code>// Open pulse input at 16MHz, double-precision
PulseInput in = ioio.openPulseInput(3, PulseMode.POSITIVE);
...
float widthSec = in.getDuration();
OR:
float widthSec = in.waitPulseGetDuration();
...
in.close(); // pin 3 can now be used for something else.
</code>
</pre>
<p>
Typical usage (frequency measurement):
<pre>
<code>// Signal is known to be slightly over 150Hz. Single precision can be used.
PulseInput in = ioio.openPulseInput(3,
ClockRate.RATE_2MHz,
PulseMode.FREQ_SCALE_4,
false);
...
float freqHz = in.getFrequency();
...
in.close(); // pin 3 can now be used for something else.
</code>
</pre>
<P>
<P>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/PulseInput.ClockRate.html" title="enum in ioio.lib.api">PulseInput.ClockRate</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Suported clock rate enum.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/PulseInput.PulseMode.html" title="enum in ioio.lib.api">PulseInput.PulseMode</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An enumeration for describing the module's operating mode.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;float</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/PulseInput.html#getDuration()">getDuration</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the pulse duration in case of pulse measurement mode, or the period
in case of frequency mode.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;float</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/PulseInput.html#getFrequency()">getFrequency</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the momentary frequency of the measured signal.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;float</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/PulseInput.html#waitPulseGetDuration()">waitPulseGetDuration</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reads a single measurement from the queue.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_ioio.lib.api.Closeable"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from interface ioio.lib.api.<A HREF="../../../ioio/lib/api/Closeable.html" title="interface in ioio.lib.api">Closeable</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../ioio/lib/api/Closeable.html#close()">close</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="getDuration()"><!-- --></A><H3>
getDuration</H3>
<PRE>
float <B>getDuration</B>()
throws java.lang.InterruptedException,
<A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></PRE>
<DL>
<DD>Gets the pulse duration in case of pulse measurement mode, or the period
in case of frequency mode. When scaling is used, this is compensated for
here, so the duration of a single cycle will be returned.
<p>
The first call to this method may block shortly until the first data
update arrives. The client may interrupt the calling thread.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The duration, in seconds.
<DT><B>Throws:</B>
<DD><CODE>java.lang.InterruptedException</CODE> - The calling thread has been interrupted.
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE> - The connection with the IOIO has been lost.</DL>
</DD>
</DL>
<HR>
<A NAME="waitPulseGetDuration()"><!-- --></A><H3>
waitPulseGetDuration</H3>
<PRE>
float <B>waitPulseGetDuration</B>()
throws java.lang.InterruptedException,
<A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></PRE>
<DL>
<DD>Reads a single measurement from the queue. If the queue is empty, will
block until more data arrives. The calling thread may be interrupted in
order to abort the call. See interface documentation for further
explanation regarding the read queue.
<p>
This method may not be used if the interface has was opened in frequency
mode.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The duration, in seconds.
<DT><B>Throws:</B>
<DD><CODE>java.lang.InterruptedException</CODE> - The calling thread has been interrupted.
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE> - The connection with the IOIO has been lost.</DL>
</DD>
</DL>
<HR>
<A NAME="getFrequency()"><!-- --></A><H3>
getFrequency</H3>
<PRE>
float <B>getFrequency</B>()
throws java.lang.InterruptedException,
<A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></PRE>
<DL>
<DD>Gets the momentary frequency of the measured signal. When scaling is
used, this is compensated for here, so the true frequency of the signal
will be returned.
<p>
The first call to this method may block shortly until the first data
update arrives. The client may interrupt the calling thread.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>The frequency, in Hz.
<DT><B>Throws:</B>
<DD><CODE>java.lang.InterruptedException</CODE> - The calling thread has been interrupted.
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE> - The connection with the IOIO has been lost.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PulseInput.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../ioio/lib/api/IOIOFactory.html" title="class in ioio.lib.api"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../ioio/lib/api/PulseInput.ClockRate.html" title="enum in ioio.lib.api"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../index.html?ioio/lib/api/PulseInput.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PulseInput.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>