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,424 @@
<!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>
SpiMaster
</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="SpiMaster";
}
}
</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/SpiMaster.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/PwmOutput.html" title="interface in ioio.lib.api"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../ioio/lib/api/SpiMaster.Config.html" title="class 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/SpiMaster.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SpiMaster.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 SpiMaster</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>SpiMaster</B><DT>extends <A HREF="../../../ioio/lib/api/Closeable.html" title="interface in ioio.lib.api">Closeable</A></DL>
</PRE>
<P>
An interface for controlling an SPI module, in SPI bus-master mode, enabling
communication with multiple SPI-enabled slave modules.
<p>
SPI is a common hardware communication protocol, enabling full-duplex,
synchronous point-to-multi-point data transfer. It requires MOSI, MISO and
CLK lines shared by all nodes, as well as a SS line per slave, connected
between this slave and a respective pin on the master. The MISO line should
operate in pull-up mode, using either the internal pull-up or an external
resistor. SpiMaster instances are obtained by calling
<CODE>IOIO#openSpiMaster(Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec[], Config)</CODE>.
<p>
The SPI protocol is comprised of simultaneous sending and receiving of data
between the bus master and a single slave. By the very nature of this
protocol, the amount of bytes sent is equal to the amount of bytes received.
However, by padding the sent data with garbage data, and by ignoring the
leading bytes of the received data arbitrarily-sized packets can be sent and
received.
<p>
A very common practice for SPI-based slave devices (although not always the
case), is to have a fixed request and response length and a fixed lag between
them, based on the request type. For example, an SPI-based sensor may define
the the protocol for obtaining its measured value is by sending a 2-byte
message, whereas the returned 3-byte value has its first byte overlapping the
second value of the response, as illustrated below:
<pre>
Master: M1 M2 GG GG
Slave: GG S1 S2 S3
</pre>
M1, M2: the master's request<br>
S1, S2, S3: the slave's response<br>
GG: garbage bytes used for padding.
<p>
The IOIO SPI interface supports such fixed length message protocols using a
single method, <A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A>, which
gets the request data, and the lengths of the request, the response and the
total transaction bytes.
<p>
The instance is alive since its creation. If the connection with the IOIO
drops at any point, the instance transitions to a disconnected state, in
which every attempt to use it (except <A HREF="../../../ioio/lib/api/Closeable.html#close()"><CODE>Closeable.close()</CODE></A>) will throw a
<A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception"><CODE>ConnectionLostException</CODE></A>. Whenever <A HREF="../../../ioio/lib/api/Closeable.html#close()"><CODE>Closeable.close()</CODE></A> is invoked the
instance may no longer be used. Any resources associated with it are freed
and can be reused.
<p>
Typical usage (single slave, as per the example above):
<pre>
<code>// MISO, MOSI, CLK, SS on pins 3, 4, 5, 6, respectively.
SpiMaster spi = ioio.openSpiMaster(3, 4, 5, 6, SpiMaster.Rate.RATE_125K);
final byte[] request = new byte[]{ 0x23, 0x45 };
final byte[] response = new byte[3];
spi.writeRead(request, 2, 4, response, 3);
...
spi.close(); // free SPI module and pins
</code></pre>
<P>
<P>
<DL>
<DT><B>See Also:</B><DD><CODE>IOIO#openSpiMaster(Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec[], Config)</CODE></DL>
<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/SpiMaster.Config.html" title="class in ioio.lib.api">SpiMaster.Config</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI configuration structure.</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/SpiMaster.Rate.html" title="enum in ioio.lib.api">SpiMaster.Rate</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Possible data rates for SPI, in Hz.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;interface</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/SpiMaster.Result.html" title="interface in ioio.lib.api">SpiMaster.Result</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An object that can be waited on for asynchronous calls.</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;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(byte[], int, int, byte[], int)">writeRead</A></B>(byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shorthand for <A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A> for
the single-slave case.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)">writeRead</A></B>(int&nbsp;slave,
byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Perform a single SPI transaction which includes optional transmission and
optional reception of data to a single slave.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../ioio/lib/api/SpiMaster.Result.html" title="interface in ioio.lib.api">SpiMaster.Result</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../ioio/lib/api/SpiMaster.html#writeReadAsync(int, byte[], int, int, byte[], int)">writeReadAsync</A></B>(int&nbsp;slave,
byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The same as <A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A>, but
returns immediately and returns a <A HREF="../../../ioio/lib/api/SpiMaster.Result.html" title="interface in ioio.lib.api"><CODE>SpiMaster.Result</CODE></A> object that can be
waited on.</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="writeRead(int, byte[], int, int, byte[], int)"><!-- --></A><H3>
writeRead</H3>
<PRE>
void <B>writeRead</B>(int&nbsp;slave,
byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)
throws <A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A>,
java.lang.InterruptedException</PRE>
<DL>
<DD>Perform a single SPI transaction which includes optional transmission and
optional reception of data to a single slave. This is a blocking
operation that can take a few milliseconds to a few tens of milliseconds.
To abort this operation, client can interrupt the blocked thread. If
readSize is 0, the call returns immediately.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>slave</CODE> - The slave index. It is determined by the index of its
slave-select pin, as per the array passed to
<CODE>IOIO#openSpiMaster(Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec, ioio.lib.api.DigitalOutput.Spec[], Config)</CODE>
.<DD><CODE>writeData</CODE> - A byte array of data to write. May be null if writeSize is 0.<DD><CODE>writeSize</CODE> - Number of bytes to write. Valid values are 0 to totalSize.<DD><CODE>totalSize</CODE> - Total transaction length, in bytes. Valid values are 1 to 64.<DD><CODE>readData</CODE> - An array where the response is to be stored. May be null if
readSize is 0.<DD><CODE>readSize</CODE> - The number of expected response bytes. Valid values are 0 to
totalSize.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE> - Connection to the IOIO has been lost.
<DD><CODE>java.lang.InterruptedException</CODE> - Calling thread has been interrupted.</DL>
</DD>
</DL>
<HR>
<A NAME="writeRead(byte[], int, int, byte[], int)"><!-- --></A><H3>
writeRead</H3>
<PRE>
void <B>writeRead</B>(byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)
throws <A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A>,
java.lang.InterruptedException</PRE>
<DL>
<DD>Shorthand for <A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A> for
the single-slave case.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE>
<DD><CODE>java.lang.InterruptedException</CODE><DT><B>See Also:</B><DD><A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A></DL>
</DD>
</DL>
<HR>
<A NAME="writeReadAsync(int, byte[], int, int, byte[], int)"><!-- --></A><H3>
writeReadAsync</H3>
<PRE>
<A HREF="../../../ioio/lib/api/SpiMaster.Result.html" title="interface in ioio.lib.api">SpiMaster.Result</A> <B>writeReadAsync</B>(int&nbsp;slave,
byte[]&nbsp;writeData,
int&nbsp;writeSize,
int&nbsp;totalSize,
byte[]&nbsp;readData,
int&nbsp;readSize)
throws <A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></PRE>
<DL>
<DD>The same as <A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A>, but
returns immediately and returns a <A HREF="../../../ioio/lib/api/SpiMaster.Result.html" title="interface in ioio.lib.api"><CODE>SpiMaster.Result</CODE></A> object that can be
waited on. If readSize is 0, the result object is ready immediately.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../ioio/lib/api/exception/ConnectionLostException.html" title="class in ioio.lib.api.exception">ConnectionLostException</A></CODE><DT><B>See Also:</B><DD><A HREF="../../../ioio/lib/api/SpiMaster.html#writeRead(int, byte[], int, int, byte[], int)"><CODE>writeRead(int, byte[], int, int, byte[], int)</CODE></A></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/SpiMaster.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/PwmOutput.html" title="interface in ioio.lib.api"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../ioio/lib/api/SpiMaster.Config.html" title="class 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/SpiMaster.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="SpiMaster.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>