Index: wireless_8h.html
===================================================================
--- wireless_8h.html	(revision 1822)
+++ wireless_8h.html	(revision 1823)
@@ -1,15 +1,19 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>Colony: wireless.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css">
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.8 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libwireless: wireless.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.3 -->
 <div class="navigation" id="top">
   <div class="tabs">
     <ul>
       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
       <li class="current"><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
@@ -21,98 +25,114 @@
   </div>
 </div>
 <div class="contents">
-<h1>wireless.h File Reference</h1>Contains definitions for using the wireless library.  
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;stdint.h&gt;</code><br>
+<h1>wireless.h File Reference</h1>
+<p>Contains definitions for using the wireless library.  
+<a href="#_details">More...</a></p>
+<code>#include &lt;stdint.h&gt;</code><br/>
+
+<p><a href="wireless_8h_source.html">Go to the source code of this file.</a></p>
 <table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3de33738fd3c7e77bffbcfaefc3e7645"></a><!-- doxytag: member="wireless.h::GLOBAL" ref="g3de33738fd3c7e77bffbcfaefc3e7645" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#g3de33738fd3c7e77bffbcfaefc3e7645">GLOBAL</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">global scope <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g11ed0d4e68673af6d575ed529ddf2130"></a><!-- doxytag: member="wireless.h::PAN" ref="g11ed0d4e68673af6d575ed529ddf2130" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#g11ed0d4e68673af6d575ed529ddf2130">PAN</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">local pan scope <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc286e1243ab6be2c950c277e5e1377f9"></a><!-- doxytag: member="wireless.h::BROADCAST" ref="gc286e1243ab6be2c950c277e5e1377f9" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gc286e1243ab6be2c950c277e5e1377f9">BROADCAST</a>&nbsp;&nbsp;&nbsp;UINT16_C(0xFFFF)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">broadcast address <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5bda06b0f5767eeca91b1383c0898c19"></a><!-- doxytag: member="wireless.h::RELIABLE" ref="g5bda06b0f5767eeca91b1383c0898c19" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#g5bda06b0f5767eeca91b1383c0898c19">RELIABLE</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reliable (TCP) mode <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8091c2bcff55cbe0a4a145fd5fb7c22d"></a><!-- doxytag: member="wireless.h::FAST" ref="g8091c2bcff55cbe0a4a145fd5fb7c22d" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#g8091c2bcff55cbe0a4a145fd5fb7c22d">FAST</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">fast (UDP) mode <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfd4a10e7cb5b56dd8e5ba8e2cff7ffc3"></a><!-- doxytag: member="wireless.h::NORMAL_PRIORITY" ref="gfd4a10e7cb5b56dd8e5ba8e2cff7ffc3" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gfd4a10e7cb5b56dd8e5ba8e2cff7ffc3">NORMAL_PRIORITY</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">standard priority <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ged801c122c559efe4677d351d07747b4"></a><!-- doxytag: member="wireless.h::HIGH_PRIORITY" ref="ged801c122c559efe4677d351d07747b4" args="" -->
-#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ged801c122c559efe4677d351d07747b4">HIGH_PRIORITY</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">high priority, handle immediately <br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g6a8d6179b1fe27f762937f0b47af2009">wl_init</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize wireless.  <a href="group__wl__functions.html#g6a8d6179b1fe27f762937f0b47af2009"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g223f437c2bc8ab8a3ac2e0e06841120f">wl_terminate</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate wireless.  <a href="group__wl__functions.html#g223f437c2bc8ab8a3ac2e0e06841120f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gaa4e0d7014a74d0d59c08f9fbbf40bd7"></a><!-- doxytag: member="wireless.h::wl_send" ref="gaa4e0d7014a74d0d59c08f9fbbf40bd7" args="(char *data, uint8_t length, uint8_t group, uint8_t scope, uint8_t dest, uint8_t mode)" -->
-int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gaa4e0d7014a74d0d59c08f9fbbf40bd7">wl_send</a> (char *data, uint8_t length, uint8_t group, uint8_t scope, uint8_t dest, uint8_t mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The core send function. This will take all possible arguments and send all types of packets. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gd92093466d82f3f0c732ffe8323228d2">wl_send_global</a> (char *data, uint8_t length, uint8_t group)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a global packet across the current channel.  <a href="group__wl__functions.html#gd92093466d82f3f0c732ffe8323228d2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g7886c2a37b7350211699dcabe48ff076">wl_send_pan</a> (char *data, uint8_t length, uint8_t group)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a packet across the current channel on the current pan.  <a href="group__wl__functions.html#g7886c2a37b7350211699dcabe48ff076"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gbb08f7957bd0256c51f424fa770d3e60"></a><!-- doxytag: member="wireless.h::wl_send_robot" ref="gbb08f7957bd0256c51f424fa770d3e60" args="(char *data, uint8_t length, uint8_t group, uint8_t dest, uint8_t mode)" -->
-int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gbb08f7957bd0256c51f424fa770d3e60">wl_send_robot</a> (char *data, uint8_t length, uint8_t group, uint8_t dest, uint8_t mode)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a packet across the current channel to a specific robot. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga8fb657e4d3bf7cb396f36e99fdd01a0">wl_send_basic</a> (char *data, uint8_t length)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default (i.e. basic) send wrapper.  <a href="group__wl__functions.html#ga8fb657e4d3bf7cb396f36e99fdd01a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g11aeeac54834f0357794ae60a7513acf">wl_ack_error</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of acknowledgment errors.  <a href="group__wl__functions.html#g11aeeac54834f0357794ae60a7513acf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga364aa4d9cc8c789f05401e8adf44785">wl_ack_check</a> (uint8_t packet)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks a specific packet for the acknowledgement status.  <a href="group__wl__functions.html#ga364aa4d9cc8c789f05401e8adf44785"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g62e126abfcd382ec02524dd2f45a8a7b">wl_ack_reset</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resets acknowledgement statistics back to zero.  <a href="group__wl__functions.html#g62e126abfcd382ec02524dd2f45a8a7b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga5a965e3443e4b2b60243225c50ecca7">wl_get</a> (char *data, uint8_t length)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The main receive function. Dispatches packets for registered handlers and returns next basic packet if available.  <a href="group__wl__functions.html#ga5a965e3443e4b2b60243225c50ecca7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ge2509e2b6bc61faa26d87b1d87881817">wl_get_basic</a> (char *data, uint8_t length)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the next basic packet if available.  <a href="group__wl__functions.html#ge2509e2b6bc61faa26d87b1d87881817"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge91c1e1940dfbbd063fdcfb86049c64a"></a><!-- doxytag: member="wireless.h::wl_dispatch" ref="ge91c1e1940dfbbd063fdcfb86049c64a" args="(void)" -->
-int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ge91c1e1940dfbbd063fdcfb86049c64a">wl_dispatch</a> (void)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dispatches packets for registered handlers. <br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#g8af34a6265a5d6af3a1525bb51e61d54">wl_register_handler</a> (uint8_t group, void(*func)(void), uint8_t priority)</td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function to register new packet handlers (for non-default groups only).  <a href="group__wl__functions.html#g8af34a6265a5d6af3a1525bb51e61d54"></a><br></td></tr>
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPacketGroupHandler.html">PacketGroupHandler</a></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga07b76b679f20134d56e04819f746fad6"></a><!-- doxytag: member="wireless.h::BASIC" ref="ga07b76b679f20134d56e04819f746fad6" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga07b76b679f20134d56e04819f746fad6">BASIC</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">basic group code <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3de33738fd3c7e77bffbcfaefc3e7645"></a><!-- doxytag: member="wireless.h::GLOBAL" ref="ga3de33738fd3c7e77bffbcfaefc3e7645" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga3de33738fd3c7e77bffbcfaefc3e7645">GLOBAL</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">global scope <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga11ed0d4e68673af6d575ed529ddf2130"></a><!-- doxytag: member="wireless.h::PAN" ref="ga11ed0d4e68673af6d575ed529ddf2130" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga11ed0d4e68673af6d575ed529ddf2130">PAN</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">local pan scope <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac286e1243ab6be2c950c277e5e1377f9"></a><!-- doxytag: member="wireless.h::BROADCAST" ref="gac286e1243ab6be2c950c277e5e1377f9" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gac286e1243ab6be2c950c277e5e1377f9">BROADCAST</a>&nbsp;&nbsp;&nbsp;UINT16_C(0xFFFF)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">broadcast address <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5bda06b0f5767eeca91b1383c0898c19"></a><!-- doxytag: member="wireless.h::RELIABLE" ref="ga5bda06b0f5767eeca91b1383c0898c19" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga5bda06b0f5767eeca91b1383c0898c19">RELIABLE</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reliable (TCP) mode <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8091c2bcff55cbe0a4a145fd5fb7c22d"></a><!-- doxytag: member="wireless.h::FAST" ref="ga8091c2bcff55cbe0a4a145fd5fb7c22d" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga8091c2bcff55cbe0a4a145fd5fb7c22d">FAST</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">fast (UDP) mode <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafd4a10e7cb5b56dd8e5ba8e2cff7ffc3"></a><!-- doxytag: member="wireless.h::NORMAL_PRIORITY" ref="gafd4a10e7cb5b56dd8e5ba8e2cff7ffc3" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gafd4a10e7cb5b56dd8e5ba8e2cff7ffc3">NORMAL_PRIORITY</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">standard priority <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaed801c122c559efe4677d351d07747b4"></a><!-- doxytag: member="wireless.h::HIGH_PRIORITY" ref="gaed801c122c559efe4677d351d07747b4" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gaed801c122c559efe4677d351d07747b4">HIGH_PRIORITY</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">high priority, handle immediately <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab6aaa08c0bfb6feb3e54a78d9211af56"></a><!-- doxytag: member="wireless.h::SENDING" ref="gab6aaa08c0bfb6feb3e54a78d9211af56" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gab6aaa08c0bfb6feb3e54a78d9211af56">SENDING</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet still in sending phase <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4dc7574681861c30957f3ffc1fe84f41"></a><!-- doxytag: member="wireless.h::ACK_OK" ref="ga4dc7574681861c30957f3ffc1fe84f41" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga4dc7574681861c30957f3ffc1fe84f41">ACK_OK</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet was send successfully <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab10c348780c46ce9fdd85ff4c8a2ff82"></a><!-- doxytag: member="wireless.h::ACK_FAILURE" ref="gab10c348780c46ce9fdd85ff4c8a2ff82" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gab10c348780c46ce9fdd85ff4c8a2ff82">ACK_FAILURE</a>&nbsp;&nbsp;&nbsp;UINT8_C(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet failure - no acknowledgment <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab3a749bdf48c98c7d307775cfe0210e1"></a><!-- doxytag: member="wireless.h::CCA_FAILURE" ref="gab3a749bdf48c98c7d307775cfe0210e1" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#gab3a749bdf48c98c7d307775cfe0210e1">CCA_FAILURE</a>&nbsp;&nbsp;&nbsp;UINT8_C(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet failure - network too busy <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga587e21dda1f72be700a6206023ad681b"></a><!-- doxytag: member="wireless.h::FUNC" ref="ga587e21dda1f72be700a6206023ad681b" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga587e21dda1f72be700a6206023ad681b">FUNC</a>&nbsp;&nbsp;&nbsp;func</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet handler function pointer type <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8b522c0ddd1f87732ac08225fcc89b58"></a><!-- doxytag: member="wireless.h::FNPTR" ref="ga8b522c0ddd1f87732ac08225fcc89b58" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga8b522c0ddd1f87732ac08225fcc89b58">FNPTR</a>&nbsp;&nbsp;&nbsp;void (*FUNC)(uint8_t* data,uint8_t length,uint8_t source)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">packet handler function pointer type <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga78906957fa456cdea5f330c8a7b119da"></a><!-- doxytag: member="wireless.h::MAX_PACKET_GROUPS" ref="ga78906957fa456cdea5f330c8a7b119da" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga78906957fa456cdea5f330c8a7b119da">MAX_PACKET_GROUPS</a>&nbsp;&nbsp;&nbsp;UINT8_C(16)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">maximum number of packet groups, size of handler array <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8b043ee766380d099be83d92dc145878"></a><!-- doxytag: member="wireless.h::INIT_NO" ref="ga8b043ee766380d099be83d92dc145878" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga8b043ee766380d099be83d92dc145878">INIT_NO</a>&nbsp;&nbsp;&nbsp;UINT8_C(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">init_flag when library has not been initialized <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0c8854a00a3ee4fb44960b651ffc62b3"></a><!-- doxytag: member="wireless.h::INIT_YES" ref="ga0c8854a00a3ee4fb44960b651ffc62b3" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga0c8854a00a3ee4fb44960b651ffc62b3">INIT_YES</a>&nbsp;&nbsp;&nbsp;UINT8_C(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">init_flag when library has been initialized <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga17d416bf86e0b1b9adcdb92450abca63"></a><!-- doxytag: member="wireless.h::NUM_RETRIES" ref="ga17d416bf86e0b1b9adcdb92450abca63" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__defines.html#ga17d416bf86e0b1b9adcdb92450abca63">NUM_RETRIES</a>&nbsp;&nbsp;&nbsp;UINT8_C(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">numer of reliable sending retries <br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga6a8d6179b1fe27f762937f0b47af2009">wl_init</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize wireless.  <a href="group__wl__functions.html#ga6a8d6179b1fe27f762937f0b47af2009"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga223f437c2bc8ab8a3ac2e0e06841120f">wl_terminate</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate wireless.  <a href="group__wl__functions.html#ga223f437c2bc8ab8a3ac2e0e06841120f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gaf713b6ecbf2de78139990a40fe864d5e">wl_send</a> (uint8_t *data, uint8_t length, uint8_t group, uint8_t scope, uint16_t dest, uint8_t mode)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The core send function. This will take all possible arguments and send all types of packets.  <a href="group__wl__functions.html#gaf713b6ecbf2de78139990a40fe864d5e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gab0af7308304aed74eb281188b712e132">wl_send_global</a> (uint8_t *data, uint8_t length, uint8_t group)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a global packet across the current channel.  <a href="group__wl__functions.html#gab0af7308304aed74eb281188b712e132"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga85cd4090dd284a4747dc8a56c1b215ad">wl_send_pan</a> (uint8_t *data, uint8_t length, uint8_t group)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a packet across the current channel on the current pan.  <a href="group__wl__functions.html#ga85cd4090dd284a4747dc8a56c1b215ad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga49160840045fda872a5e38432cc26988">wl_send_robot</a> (uint8_t *data, uint8_t length, uint8_t group, uint16_t dest, uint8_t mode)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper for core send function that will send a packet across the current channel to a specific robot.  <a href="group__wl__functions.html#ga49160840045fda872a5e38432cc26988"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga226d89acb4f77a982a2167eb1773eff2">wl_send_basic</a> (uint8_t *data, uint8_t length)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default (i.e. basic) send wrapper.  <a href="group__wl__functions.html#ga226d89acb4f77a982a2167eb1773eff2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">uint8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga15c9a01839696beb05d1e4f161d968b7">wl_ack_error</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of acknowledgment errors.  <a href="group__wl__functions.html#ga15c9a01839696beb05d1e4f161d968b7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gaa364aa4d9cc8c789f05401e8adf44785">wl_ack_check</a> (uint8_t packet)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks a specific packet for the acknowledgement status.  <a href="group__wl__functions.html#gaa364aa4d9cc8c789f05401e8adf44785"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga62e126abfcd382ec02524dd2f45a8a7b">wl_ack_reset</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resets acknowledgement statistics back to zero.  <a href="group__wl__functions.html#ga62e126abfcd382ec02524dd2f45a8a7b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gaa5a965e3443e4b2b60243225c50ecca7">wl_get</a> (char *data, uint8_t length)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The main receive function. Dispatches packets for registered handlers and returns next basic packet if available.  <a href="group__wl__functions.html#gaa5a965e3443e4b2b60243225c50ecca7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gae2509e2b6bc61faa26d87b1d87881817">wl_get_basic</a> (char *data, uint8_t length)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the next basic packet if available.  <a href="group__wl__functions.html#gae2509e2b6bc61faa26d87b1d87881817"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae91c1e1940dfbbd063fdcfb86049c64a"></a><!-- doxytag: member="wireless.h::wl_dispatch" ref="gae91c1e1940dfbbd063fdcfb86049c64a" args="(void)" -->
+int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#gae91c1e1940dfbbd063fdcfb86049c64a">wl_dispatch</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dispatches packets for registered handlers. <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga7aa57c04f65ff3c8fec591248ab82f86">wl_register_handler</a> (uint8_t group, FNPTR, uint8_t priority)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function to register new packet handlers (for non-default groups only).  <a href="group__wl__functions.html#ga7aa57c04f65ff3c8fec591248ab82f86"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__wl__functions.html#ga376508d5682b1b8c88ef8b5f911a3367">wl_unregister_handler</a> (uint8_t group)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function to unregister existing packet handlers (for non-default groups only).  <a href="group__wl__functions.html#ga376508d5682b1b8c88ef8b5f911a3367"></a><br/></td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Copyright (c) 2009 Colony Project<p>
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:<p>
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<p>
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<p>
-Contains definitions for interfacing with the wireless library.<p>
-<dl class="author" compact><dt><b>Author:</b></dt><dd>Colony Project, CMU Robotics Club </dd></dl>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Contains definitions for using the wireless library. </p>
+<p>Copyright (c) 2009 Colony Project</p>
+<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
+<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
+<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
+<p>Contains definitions for interfacing with the wireless library.</p>
+<dl class="author"><dt><b>Author:</b></dt><dd>Colony Project, CMU Robotics Club </dd></dl>
 </div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Nov 24 12:45:55 2009 for Colony by&nbsp;
+<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu May 6 13:17:00 2010 for libwireless by&nbsp;
 <a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
 </body>
 </html>
